JeuWeb - Crée ton jeu par navigateur
Systeme de tournoi : besoin d'aide pour débuter - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Systeme de tournoi : besoin d'aide pour débuter (/showthread.php?tid=7041)



Systeme de tournoi : besoin d'aide pour débuter - Konroy - 15-07-2013

Salut à tous.

Je progresse dans mon jeu php et je bloque un peu sur comment faire mon système de tournoi.

Pour faire très simple, chaque joueur possède un héro, avec de l'équipement, ce qui lui attribue un nombre X d'attaque et Y de défense.

Le tournoi sera un face à face, si le joueur gagne son duel il passe au prochain tour.
Prenons l'exemple d'un tournoi de 16 joueurs max. Il se lance quand 16 joueurs se sont inscrits.
J'ai un début d'idée sur la table " tournoi " avec comme champs :

id_tournoi
max_joueur
gains_1er
gains_2nd
gains_3eme

Et la, je bloque. Je sais pas du tout comment relié les duel aux tournois, comment faire pour visualiser que Mr X passe au tour suivant, il faut une autre table ?
J'ai commencer mon script de combat ( assez primaire pour l'instant c'est juste pour tester, du style attaque vs défense ) , mais je sais pas comment l'incorporer.
Voila un peu perdu ici, merci pour votre aide. Smile


RE: Systeme de tournoi : besoin d'aide pour débuter - Sephi-Chan - 15-07-2013

Un tournoi impliquant 16 joueurs implique un premier tour contenant 8 combats, un second tour contenant 4 combats, un troisième tour contenant 2 combats et un quatrième tour contenant 1 combat.

Le nombre de combat étant fini (8 + 4 + 2 +1 = 15), tu peux les créer en amont lors du début de ton tournoi.

Chaque entrée de la table des combats doit disposer d'un id, de l'id du tournoi auquel ce combat appartient, de l'id du premier joueur, et de l'id du second joueur. Il te faut également une colonne pour dire qui du joueur 1 ou 2 a gagné le combat (cette colonne restera vide tant que le combat n'aura pas été joué). Enfin, il te faut une dernière colonne qui contiendra l'id du combat suivant.

Pour générer ces 15 entités via un algorithme, je te conseille de partir de la finale : tu crées ce combat (qui n'a rien en tant qu'id du combat suivant, puisque c'est le dernier qui sera effectué), puis tu en crées 2 autres (qui auront comme id du combat suivant celui de la finale), puis pour chacun de ces 2 combats créés tu en crée 2 nouveaux (avec l'id de combat parent comme id de combat suivant), puis pour chacun des 4 combats créés tu en crée 2 nouveau (avec l'id de combat parent comme id de combat suivant). Et voilà, tu auras tes 15 combats prêts à l'emploi !

Lors de la dernière passe de l'algorithme (qui crée les 8 combats de départ), il faut attribuer 2 joueurs à chaque combat. Pour ça, tu peux mélanger ta liste de 16 joueurs au début de l'algorithme et utiliser la fonction pop sur cette liste quand tu as besoin d'un joueur.


RE: Systeme de tournoi : besoin d'aide pour débuter - Konroy - 15-07-2013

Merci, je me ca à plat sur mon brouillon. Ca devrait pas poser de pb


RE: Systeme de tournoi : besoin d'aide pour débuter - Konroy - 16-07-2013

Hello. J'ai penser a un truc du genre

id_tournoi
joueurs_max
joueurs_inscrit
id_gagnant
gains

Et ainsi faire un truc du style, si joueurs_max = joueurs_inscrit alors on lance le tournoi.
Donc le script se lancera grace au derniers joueur inscrit, ca le fais ?
Merci Smile


RE: Systeme de tournoi : besoin d'aide pour débuter - Sephi-Chan - 16-07-2013

Bof. Tu vas de toute façon devoir créer des entités pour stocker qui s'est inscrit au tournoi (dans une table joueurs_tournois par exemple, contenant une colonne joueur_id et une colonne tournoi_id). Donc dès lors le nombre de joueurs inscrit est donné par une requête SQL de type :


SELECT COUNT(*) FROM joueurs_tournois WHERE tournoi_id = %d;

Mais effectivement, une fois le dernier joueur inscrit, tu supprime ces entrées puis tu crée celles dont on a parlé.