Gérer des scores

Résolu
Ishizaki Messages postés 51 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 4 décembre 2008 - 14 avril 2006 à 12:28
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 14 avril 2006 à 14:36
Salut !

Voilà, je vais expliquer mon dilemne.

Je fais actuellement un Puissance 4 en Delphi. Donc pour l'instant, les scores ne sont pas gérés, et c'est ce que je voudrais faire.
En fait, j'ai déjà créé une table sous Interbase, une Table JOUEUR(d'ailleurs c'est la seule table de la base) qui contient les champs codejoueur, pseudo,score. Voilà, donc pas grand chose.

Donc, dans un menu, je choisis, dans les combobox, les 2 joueurs qui vont participer à la partie, et c'est là que je me demande comment faire.
En fait , j'ai déjà gérer le puissance 4 en lui-même, tout marche impec en ce qui concerne la victoire des points rouges ou des points jaunes.
En gros, j'affecterais la couleur rouge dans la 1ere combobox qui correspond au joueur n°1, et la jaune pour la 2ème.

Je me demandais si créer une classe Joueur ne serait pas utile mais je ne vois pas comment faire pour gérer le truc en association avec une base de données dans laquelle je mettrais à jour les scores de chaque joueur...

Alors voilà, je voudrais avoir votre avis sur la façon de gérer le truc, merci ^^.

Capture de la saisie des joueurs:

je quote tu quotes...

7 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
14 avril 2006 à 13:57
ignore les couleurs, seul les joueurs comptent.

données sur le joueurs (profil) :

Identifiant Description Type
(ID) Identificateur du profil (integer)
(name) pseudo (varchar)
(psw) mots de passe (varchar)
(totalpnts) points total (integer)
(totalgames) parties jouées (integer)
(totalwins) parties gagnées (integer)

les points doivent respecter ces regles :
- plus on fait de coups moins on gagne de points.
- plus on gagne des parties contre un meme joueurs, moins on gagne de points.
- un match nul ne donne pas de points.
- si on gagne contre un joueur contre lequel on a perdus on gagne plus de points.
- une partie abandonnée ne donne pas de points.

il faut ensuite une structure pour les joueurs et les pionts pendant le jeux :

TPionts = (pnRed,pnYellow);

TPlayer = record
ProfilID : integer; // ID
Pseudo : string; // name
OldScore, // totalpnts
CurrentScore : integer;// init = 0
Victoires : integer; // totalwins
PlayedGame: integer; // totalgames
Pionts : TPionts; // init = pnRed ou pnYellow
end;

a la selection des joueurs, on charge les profils.

pendant le jeux on sait que joueur1 joue avec les pionts rouge et joueur2 avec les jaune.
comme on a stocké l'ID des profils et les valeurs importante, on peu facilement mettre a jours les données.

a chaque gain de points et victoire, on mets a jours les données dans le type TPlayer et a la fin de la partie on enregistre les modifications dans la BDD,
pourquoi ? car en cas de plantage systeme ou de l'application, on perd la partie en cours et on ne mets pas en danger l'integritée de la BDD.

donc seul la fin normale d'une partie ou l'abandon de cette derniere permet d'enregistrer les modif dans la BDD.
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
14 avril 2006 à 14:36
oui oui

c'est le but, l'enregistrement TPlayer vas permettre de definir deux variables de ce type :

var
J1, J2 : TPlayer;

et ensuite il faudrat assigner les données respective a J1 et J2

par exemple

le joueur 1 se connecte et rentre son mots de passe,
on detecte le profil dans la BDD et on assigne les données a J1
l'ID permet de recuperer au plus vite l'entrée du profil dans la base de données.

idem pour joueur 2.

on peu commencer la partie.

en code ça donneras :

function GetProfil(Name,Password : string) : TPlayer;
begin
.. ouverture du profil Name, Password ...
result.ID := ... recuperation de l'id du profil ...
result.... := recuperation des données ...
end;

procedure Form1.Button1Click(Sender : TObject);
begin
case ConnexionJoueur of
1 : J1 := GetProfil(EditName.Text,EditPassw.Text);

2 : J2 := GetProfil(EditName.Text,EditPassw.Text);
end;
end;
3
guigui265 Messages postés 113 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 16 avril 2006
14 avril 2006 à 12:41
Je ne comprend pas trop ton probleme... tu veux rajouter le dernier score du joueur a celui cumulé pour ce meme joueur?
dans ce cas, lorsque tu selectionne ton joueur, tu récupere le cumul et a la fin de la partie, tu update le cumule avec cumul+score actuel
@+
guillaume
0
Ishizaki Messages postés 51 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 4 décembre 2008
14 avril 2006 à 12:50
Oui je l'avais vu comme ça aussi, en faisant un Update dans une requête sql.
Mais, c'est juste entre les 2, affecter la couleur au joueur, ensuite on regarde la couleur qui a gagné et l'on met à jour le score du joueur en fonction de la couleur, par exemple, si c'est la couleur rouge qui gagne, c'est le joueur de la 1ere combobox qui cumule ses points et pareil pour les jaunes avec le joueur n°2.

J'arrive pas bien à me visualiser la chose à faire en pratique...:/.


je quote tu quotes...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
14 avril 2006 à 13:59
un autre truc aussi, l'avantage d'un puissance 4, c'est que l'on joue au tours par tours ... on sait donc pertinament qui est en train de jouer et donc a qui donner les points et la victoire.
0
Ishizaki Messages postés 51 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 4 décembre 2008
14 avril 2006 à 14:01
Et bien merci beaucoup, je pense que cette astuce va m'aider ^^.

Y'a plus qu'à :).

Encore merci.


je quote tu quotes...
0
Ishizaki Messages postés 51 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 4 décembre 2008
14 avril 2006 à 14:18
Heu si, encore un petit quelque chose, on a le droit d'écrire ce genre de chose:

(en ayant assigné auparavant un tpe à joueur 1 et joueur 2 comme tel: j1,j2:Tplayer;)
j1.id:=.... ?

je quote tu quotes...
0
Rejoignez-nous