tirage aléatoires scores foot..

Peppone13

XLDnaute Occasionnel
bonjour à tous !!!:)

je souhaiterais donner un peu de piment à un jeu de société qui s'appelle Foot mania. Le principe actuel est de constituer une équipe et de lui faire disputer un championnat. Les résultats V, N ou D sont déterminés par la "valeur" des équipes à la fin de chaque match (exemple valeur de A = 75 pts, valeur de B = 48 pts, donc A bat B). Le pb est que lorsque les équipes sont trop hétérogènes, le jeu peut perdre rapidement de son intérêt :( . Donc j'envisageais ceci : le jeu se déroule normalement avec les matches (il y a au maximum 4 équipes dans le championnat). Lorsque le jeu est terminé, c'est là qu'Excel interviendrait avec un tirage aléatoire des scores : par exemple, le "score" 75-48, qui ne veut rien dire en foot, est tiré aléatoirement tenant compte de la différence de 27 pts. Avec +27, il y aurait par exemple une probalité de 80% de chance de victoire, 15 % de chance de match nul, 5 % de chance de défaite (le total fait bien 100 % ???!!!) ainsi répartis :
1 % de chance que le score soit de 6-0 ou 7-1 ou 6-1 ou 6-2,
2 % de chance que le score soit de 7-2 ou 6-3 ou 5-1 ou 5-0,
10 % de chance que le score soit de 4-0 ou 5-2 ou 3-3,
ets etc etc...
1 % de chance que le score soit de 1-4 ou 0-3
0,5 % de chance que le score soit de 0-4

qu'en pensez vous ???? Est-ce que c'est à peu-près compréhensible ?? :confused: En tous les cas, merci par avance d'avoir lu ce message jusqu'ici, et bonne continuation à tous,

bien Excellement, Pepppone13.
 

Kotov

XLDnaute Impliqué
Re : tirage aléatoires scores foot..

Bonjour Pepponne31, le forum,

Pour ton jeu, je te propose un fichier ci-joint qui va plus loin que ta demande initiale :
Au départ , j'ai réalisé un tirage aléatoire simple, mais sans réelle surprise.

Pour le fun et rien que pour le fun, le fichier que je te propose prend en compte plusieurs variables :

* La valeur des équipes et notamment l'écart de valeur :
Je pars du principe qu'au cours d'un match de foot, 20 actions de jeu sont réellement dangereuses. Plus l'écart de valeur est grand, plus l'équipe la plus forte bénéficie d'actions de jeu dangereuses.
Reste à les concrétiser :
c'est là qu'interviennent les variables Motivation et Arbitrage

* Motivation :
Principe : plus l'équipe adverse est motivée, plus il est difficile de marquer.
Au départ, l'équipe la plus faible est plus motivée proportionnellement à l'écart de valeur (l'effet "Coupe de France")
L'équipe menée d'un but obtient un surcroi de motivation pour égaliser
Menée de 2 buts, nouveau surcroi de motivation, elle tente le tout pour le tout
A partir de 3 buts d'écarts, la motivation baisse.

* L'arbitrage :
Principe : l'arbitre peut refuser le but
Au départ, l'arbitre est objectif (je sais, certains vont sourire !)
A partir du moment, ou il a refusé un but à une équipe, il aura tendance être moins sévère, son objectivité va varier ("l'effet péno de compensation")

Je n'ai pas intégré la variable "Supporters" ne sachant pas si dans ton jeu, la notion de match à domicile était prise en compte.

Au final, les scores sont assez réalistes selon les écarts de niveau, mais les surprises sont possibles (ceux qui ont déjà joué au Loto Sportif savent de quoi je parle - Que les millionnaires lèvent le doigt !)


J'ai préparé le fichier pour 100 matchs :
- Tu peux ainsi tester 100 fois le même écart de valeur et vérifier sur le tableau de stats la répartion des scores
- Tu peux également préparer 100 matchs différents

Testes le, et si tu souhaites modifier des paramètres, c'est sans problème.
Attention toutefois à ne pas avoir la main trop lourde, puisque ce sont 3 tirages aléatoires appliqués à 3 variables qui déterminent conjointement la validation ou le refus d'un but.

A +
Kotov
 

Pièces jointes

  • FootAlea.zip
    17.7 KB · Affichages: 332
Dernière édition:

Kotov

XLDnaute Impliqué
Re : tirage aléatoires scores foot..

La macro principale qui détermine les scores :

Code:
Sub AleaFoot()
'====== paramétrages modifiables
n = 20 'nombre d'actions de buts dans le match
Dim r& 'rangées
Dim c& 'colonnes
Dim x& ' compteurs de rangées
Dim z1 'nombres de lignes
Dim i As Byte 'compteur
Dim But As Byte 'But marqué par l'une des équipes
Dim E% ' écart au score

Dim VA% 'Valeur équipe A
Dim VB% 'Valeur equipe B
Dim Arbitre% 'Impact de l'arbitre
Dim Motivation% 'Impact de la motivation))

'== Création de 2 variables temporaires
Dim ButsA As Byte 'buts équipe A
Dim ButsB As Byte 'buts équipe B
Dim AleaScore As Byte 'valeur aléatoire

'===== Bloc 1 (récupération de la valeur des équipes)
With ActiveSheet
z = .Cells(65536, 1).End(3).Row
For x = 2 To z
ButsA = 0
ButsB = 0
Arbitre = 50 '(50 = l'arbitre est impartial, < 50 il favorise l'Equipe B, > 50 il favorise l'équipe A)
Motivation = 50 '(50 = motivation égale des 2 équipes, < 50 Equipe B plus motivée, > 50 équipe A plus motivée)
If .Cells(x, 1) = "" Or .Cells(x, 2) = "" Then Exit Sub
VA = CByte(.Cells(x, 1))
VB = CByte(.Cells(x, 2))
'===== Bloc 2 : impact de la motivation (la plus faible équipe est surmotivée)
Select Case CInt(VA) - CInt(VB)
    Case Is < O
        Motivation = Motivation - Abs((VA - VB) / 2) 'L'équipe A augmente sa motivation
     Case Is > O
        Motivation = Motivation + Abs((VA - VB) / 2) 'L'équipe B augmente sa motivation
    End Select
 '====== Bloc 3 : tirage au sort (les aléas du sport !)
 For i = 0 To n
AleaScore = Abs(Rnd() * 99 + 1)
But = 0
If AleaScore >= VA And AleaScore >= VB Then But = 0  'pas de but
If AleaScore <= VA And AleaScore <= VB Then But = 0  'pas de but
If AleaScore = VA And AleaScore = VB Then But = 0 'pas de but
If AleaScore <= VA And AleaScore >= VB Then But = 1   'but Equipe A
If AleaScore >= VA And AleaScore <= VB Then But = 2  'but Equipe B

Select Case But
    Case 1
        If Abs(Rnd() * Motivation + 1) < 40 Then But = 0 'si l'équipe A n'est pas motivée le but est raté
        If Abs(Rnd() * Arbitre + 1) < 30 Then But = 0: Arbitre = Arbitre + 1
        'l'arbitre annule le but de l'équipe A, il aura ensuite tendance à ne pas refuser un nouveau but
        If But > 0 Then ButsA = ButsA + 1
    Case 2
        If Abs(Rnd() * Motivation + 1) > 60 Then But = 0 'si l'équipe B n'est pas motivée le but est raté
        If Abs(Rnd() * Arbitre + 1) > 30 Then But = 0: Arbitre = Arbitre - 1 'l'arbitre annule le but
        'l'arbitre annule le but de l'équipe B, il aura ensuite tendance à ne pas refuser un nouveau but
        If But > 0 Then ButsB = ButsB + 1
    Case Else
       Select Case AleaScore
        Case Is > 95: ButsA = ButsA + 1 'but pour l'équipe A
        Case Is < 5: ButsB = ButsB + 1 'but pour l'équipe B
      End Select
End Select
E = CInt(ButsA) - CInt(ButsB)
Select Case E
    Case Is = 0: Motivation = Motivation
    Case Is = 1: Motivation = Motivation + 2 'l'équipe B se remotive pour égaliser
    Case Is = 2: Motivation = Motivation + 4 'l'équipe B tente le tout pour le tout pour revenir au score
    Case Is = 3: Motivation = Motivation - 2 'l'équipe B perd de sa motivation
    Case Is = 4: Motivation = Motivation - 4 'l'équipe B perd de sa motivation
    Case Is = -1: Motivation = Motivation - 2 'l'équipe A se remotive pour égaliser
    Case Is = -2: Motivation = Motivation - 4 'l'équipe A tente le tout pour le tout pour revenir au score
    Case Is = -3: Motivation = Motivation + 2 'l'équipe A perd de sa motivation
    Case Is = -4: Motivation = Motivation + 4 'l'équipe A perd de sa motivation
    Case Is < 4: Motivation = Motivation + 7 'l'équipe A est démoralisée
    Case Is > 4:  Motivation = Motivation - 7 'l'équipe B est démoralisée
End Select
Next i
.Cells(x, 3) = ButsA
.Cells(x, 4) = ButsB
Next x
End With
End Sub
 

Peppone13

XLDnaute Occasionnel
Re : tirage aléatoires scores foot..

Super Merci pour avoir si rapidement répondu à ma question posée et livrée à votre sagacité la semaine dernière !!!!
j'aurai pas trop le temps avant, mais je pense que je vais imprimer tout ceci et le ragarder de près le week-end prochain....
Je connais rien à la programmation, parce que là on peut parler de programmation, mais je t'avous que ça m'impressionne et que j'ai vraiment envie de regarder par le menu et ligne par ligne ce que tu m'as envoyé....
Génial et bravo !!!!
 

Kotov

XLDnaute Impliqué
Re : tirage aléatoires scores foot..

Bonjour Peppone,

Ravi que cela te convienne.
Pour être complet, il aurait fallu que j'intègre d'autres paramètres bien réels :
- les supporters
- les enjeux financiers
- la non combativité des joueurs pour faire virer leur entraîneur
- la possibilité d'enterrer une malette de billet dans un jardin valenciennois
- la possibilité de gagner le dernier match de la saison 31-0 quand l'autre équipe concurrente pour la montée gagne 28-0 ! (cf. championnat 2007 Ligue 2 du Ghana)
etc ..
Mais bon, je suis resté sur un schéma très simple, très "bisounours" ;)

Si tu as besoin d'explications sur le code, n'hésites pas à demander

Bonne soirée
Kotov
 
Dernière édition:

Peppone13

XLDnaute Occasionnel
Re : tirage aléatoires scores foot..

j'avais 2 minutes de libre au bureau (chutttt..... c'est un secret !!!), et j'ai imprimé le script et téléchargé le zip..... et, impatient, ai voulu le tester (tu t'en doutes !!!)!!!
En exemple, tu as donc sorti le tableau avec 2 équipes de même valeur (50-50), et moi je me ferai au fur et à mesure des besoins les autres tableaux pour les différents cas de figure au niveau des valeurs des équipes... D'où ma 1° petite question : lorsque tu indiques comme valeur "50" pour chaque équipe, est-ce un pourcentage ou non ? càd, peut-il y avoir des équipes dont la somme des valeurs soit supérieur à 100 (je pense que oui), ou faudra t-il tout ramener pour avoir un total équipe A + équipe B = 100 ??? Puis ma seconde (toujours petite) question :
lorsque je clique sur le bouton "score", à quel endroit le résultat s'affiche t-il ???. J'ai voulu le tester, mais n'ai pas dû bien comprendre le fonctionnement (je n'avais aussi que 2 minutes !!!).... De toutes façons, merci déjà pour ton aide efficace !!!! Et demain, je déchiffre les codes !!!!!
 

Peppone13

XLDnaute Occasionnel
Re : tirage aléatoires scores foot..

par contre, pour tous les paramètres que tu proposes de rajouter (idées géniales), j'attendrai de commencer à bien comprendre comment tu as procédé. Ensuite, effectivement, on pourra rajouter du dopage, des dessous de tables pour influencer l'arbitrage, et tout et tout ;-)))
 

Kotov

XLDnaute Impliqué
Re : tirage aléatoires scores foot..

Bonsoir Peppone,

Réponse 1 :
- Le total des valeurs n'est pas limité à 100. Tu peux avoir une équipe à 75 et une autre à 48. C'est l'écart de niveau qui est principalement pris en compte.
En revanche, même si la macro fonctionne avec 2 équipes d'une valeur supérieure à 100, il vaut mieux alors modifier la ligne suivante pour garder l'éventail maximal de paramètres :

AleaScore = Abs(Rnd() * 99 + 1) à remplacer par
AleaScore = Abs(Rnd() *(VA+VB) + 1)


Réponse 2 :
- En cliquant sur le bouton "Score" le résultat des matchs s'affiche dans la colonne "Score A" et "Score B".
Toutefois, pour que la macro fonctionne, tu dois, à l'ouverture du classeur, cliquer sur "Oui" à la question "Voulez-vous activer les macros".
Il est possible que les macros soient désactivées d'office sur ton lieu de travail. (compréhensible dans la mesure ou il paraît que certain s'amusent au boulot avec des jeux de foot ! ;))


Notes bien que le bouton "modifier valeur" n'est là que pour me simplifier la vie lors des test de %. Je n'avais pas envie à chaque tentative de retaper les 100x2 valeurs ni de faire un "glissé" vers le bas. (VBA rend fainéant !)

Si tu as 20 matchs différents à rentrer, effaces toutes les valeurs d'équipe, et fais une saisie manuelle.

A ta disposition pour les questions relatives au code.

Bonne soirée
 

Discussions similaires

Réponses
9
Affichages
487
Réponses
5
Affichages
198
Réponses
5
Affichages
360

Statistiques des forums

Discussions
312 594
Messages
2 090 088
Membres
104 371
dernier inscrit
Momo6767