Gérer des scores [Résolu]

Signaler
Messages postés
51
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
4 décembre 2008
-
f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
-
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

Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
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.
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
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;
Messages postés
115
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
16 avril 2006

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
Messages postés
51
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
4 décembre 2008

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...
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
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.
Messages postés
51
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
4 décembre 2008

Et bien merci beaucoup, je pense que cette astuce va m'aider ^^.

Y'a plus qu'à :).

Encore merci.


je quote tu quotes...
Messages postés
51
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
4 décembre 2008

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...