Bonjour il y a quelque temps (+- 6 mois) j'ai crée un jeu un peu bête, un puissance 4 (Il doit en exister déjà plein, mais je tiens a avoir le mien !)
Seulement il reste quelque bug, des fois le programme considère que la diagonale et bonne sans raison.
Si vous pouviez m'aider a les résoudre ça m'arrangerait, le plus con dans tout ça c'est que j'ai perdu met note que j'avais prise
Merci d'av MulX
Draw prgmEFACVARSVoila le source : prgmEFACVARS AxesOff FnOff  0üXmin 0üYmin 94üXmax 62üYmax Text(20,25,"PUISSANCE 4" Text(30,30,"BY MULX" Text(40,4,"VERSION EN DEVELOPEMENT" Pause  ClrDraw Horizontal 0 Vertical 0 For(X,1,89,8) Vertical X End For(Y,1,57,8 Horizontal Y End For(Y,57,62,1) Horizontal Y End For(X,89,94,1) Vertical X End 80üdim(L Fill(0,L 44üX 1üE 0üU 6üY Text(Y,X,"V" while E getKeyüK If K=24 Then Text(Y,X,"   " X-8üX If X÷4 4üX Text(Y,X,"V" End If K=26 Then Text(Y,X,"   " X+8üX If Xù84 84üX Text(Y,X,"V" End If K=21 Then ClrHome Disp round(rand10,0),round(rand5Ä,1 Pause  End If K=45 Then 0üE 2üU End Text(0,2,"  JOUEUR : ",U+1," A VOUS L'HONEUR" If K=105 Then Text(0,3,"PLEASE WAIT CALCUL ...            " ((4+X)/8)üC 1üG 1üÁ For(B,1,6,1) (C-1)*6+BüP If not(L(P)) Then If (not(U) and Á) Then Text(62-B*8,X,"X") 1üU 0üÁ End If (U and Á) Then Text(62-B*8,X,"0") 0üU 0üÁ End Text(Y,X,"V" If not(Á) and G Then U+1üL(P) 1+L(70)üL(70) 0üG BüL 8üB End If L(70)=66 Then 00000üE Text(6,2,"                   IT'S POSSIBLE  ?             " Pause  End End End (C-1)*6+LüP If L>3 Then (L(P)*L(P-1)*L(P-2)*L(P-3)üO If O=1 or O=16 Then Text(0,3,"JOUEUR : ",U*ú1+2," WIN COLON          ") 0üE End End If C<4 Then P-6*(C-1)üN Else P-6*3üN End If C>8 Then P+6*(11-C)üM Else P+6*3üM End 0üB For(A,N,M,6) If L(A)=(U+1) Then B+1üB Else 0üB End If B>3 Then Text(0,3,"JOUEUR : ",U*ú1+2," WIN LINE           ") 0üE End End C-3üQ If Q<1 1üQ C+3üF If F>11 11üF L-3üM If M<1 1üM L+3üN If N>6 6üN 0üB For(I,0,5,1) ((Q-1)*6+M)+(I*7)üZ If (((F-1)*6+N)<Z) Then 6üI End If L(Z)=(U+1) Then B+1üB Else 0üB End If Bù4 Then Text(0,3,"JOUEUR : ",U*ú1+2," WIN DIAG 1    " Pause  0üE 6üI End End 0üB For(I,0,5,1) ((Q-1)*6+N)+(I*5)üZ If (((F-1)*6+M)<Z) Then 6üI End If L(Z)=(U+1) Then B+1üB Else 0üB End If Bù4 Then Text(0,3,"JOUEUR : ",U*ú1+2," WIN DIAG 2            " Pause  0üE 6üI End End End End ClrHome Output(4,1,"LE JOUEUR : " If (U*ú1)+2 Then Output(4,13,(U*ú1)+2) Output(5,1,"A GAGNE" Else Output(5,1,"A ABANDONE" End Pause  ClrList L Clr (Si ce n'est pas lisible, il est dispo sur mon site : http://aplu.fr, section telechargement)
Le lancement de EFFACVARS et un programme qui remet a peut pres tout a 0 dans la calculette (variable = 0, graph, mode, etc ...)

PS : D'habitude c'est moi qui corrige les programmes des autres (du moins dans mon lycée) mais là sad

Edit : Un exemple du bug : http://aplu.fr/guppy/img/PUISSANCE_BUG.TIF là le joueur 2 aurait du gagner en diagonale hors il n'est rien !

EDIT-2010: MAJ des liens.
Je viens de passer le prog sous zTXT (je connaissait pas, c'est vachement bien ça !) prgmEFACVARS AxesOff FnOff  0&#8594;Xmin 0&#8594;Ymin 94&#8594;Xmax 62&#8594;Ymax Text(20,25,"PUISSANCE 4" Text(30,30,"BY MULX" Text(40,4,"VERSION EN DEVELOPEMENT" Pause  ClrDraw Horizontal 0  //On trace le cadrillage X Vertical 0 For(X,1,89,8) Vertical X  End For(Y,1,57,8  //On trace le cadrillage Y Horizontal Y End For(Y,57,62,1)  //On trace le bordures Horizontal Y End For(X,89,94,1)  //On trace le bordures Vertical X End 80&#8594;dim(L1 Fill(0,L1 44&#8594;X 1&#8594;E 0&#8594;U 6&#8594;Y Text(Y,X,"V" while E getKey&#8594;K If K=24 Then Text(Y,X,"   " X-8&#8594;X If X&#8804;4 4&#8594;X Text(Y,X,"V" End If K=26 Then Text(Y,X,"   " X+8&#8594;X If X&#8805;84 84&#8594;X Text(Y,X,"V" End If K=21 //Petit code que j'ai rajouté pour passer inapercu lors d'un controle :p  Then ClrHome Disp round(rand10,0),round(rand5&#960;,1 Pause  End If K=45 Then 0&#8594;E 2&#8594;U End Text(0,2,"  JOUEUR : ",U+1," A VOUS L'HONEUR" If K=105 Then Text(0,3,"PLEASE WAIT CALCUL ...            " ((4+X)/8)&#8594;C 1&#8594;G 1&#8594;&#952; For(B,1,6,1) (C-1)*6+B&#8594;P If not(L1(P)) Then If (not(U) and &#952;) Then Text(62-B*8,X,"X") 1&#8594;U 0&#8594;&#952; End If (U and &#952;) Then Text(62-B*8,X,"0") 0&#8594;U 0&#8594;&#952; End Text(Y,X,"V" If not(&#952;) and G Then U+1&#8594;L1(P) 1+L1(70)&#8594;L1(70) 0&#8594;G B&#8594;L 8&#8594;B End If L1(70)=66 Then 00000&#8594;E Text(6,2,"                   IT'S POSSIBLE  ?             " Pause  End End End (C-1)*6+L&#8594;P  If L>3 // Debut du calcul pour les colones-> Appriori aucun probleme Then (L1(P)*L1(P-1)*L1(P-2)*L1(P-3)&#8594;O If O=1 or O=16 Then Text(0,3,"JOUEUR : ",U*-1+2," WIN COLON          ") 0&#8594;E End End If C<4 // Debut du calcul pour les ligne -> Appriori aucun probleme Then P-6*(C-1)&#8594;N Else P-6*3&#8594;N End If C>8 Then P+6*(11-C)&#8594;M Else P+6*3&#8594;M End 0&#8594;B For(A,N,M,6) If L1(A)=(U+1) Then B+1&#8594;B Else 0&#8594;B End If B>3 Then Text(0,3,"JOUEUR : ",U*-1+2," WIN LINE           ") 0&#8594;E End End C-3&#8594;Q // Debut du calcul pour les diagonales -> Debut du probleme If Q<1 1&#8594;Q C+3&#8594;F If F>11 11&#8594;F L-3&#8594;M If M<1 1&#8594;M L+3&#8594;N If N>6 6&#8594;N 0&#8594;B For(I,0,5,1) ((Q-1)*6+M)+(I*7)&#8594;Z If (((F-1)*6+N)<Z) Then 6&#8594;I End If L1(Z)=(U+1) Then B+1&#8594;B Else 0&#8594;B End If B&#8805;4 Then Text(0,3,"JOUEUR : ",U*-1+2," WIN DIAG 1    " Pause  0&#8594;E 6&#8594;I End End 0&#8594;B For(I,0,5,1) ((Q-1)*6+N)+(I*5)&#8594;Z If (((F-1)*6+M)<Z) Then 6&#8594;I End If L1(Z)=(U+1) Then B+1&#8594;B Else 0&#8594;B End If B&#8805;4 Then Text(0,3,"JOUEUR : ",U*-1+2," WIN DIAG 2            " Pause  0&#8594;E 6&#8594;I End End End End ClrHome Output(4,1,"LE JOUEUR : " If (U*-1)+2 Then Output(4,13,(U*-1)+2) Output(5,1,"A GAGNE" Else Output(5,1,"A ABANDONE" End Pause  ClrList L1 ClrDraw prgmEFACVARS
Désolé pour les commentaires du code a la manniere du C++, mais vous m'en voudrait pas ?
Une petite info le pion du joueur et sauvegarder dans la liste (L1 pour l'instant, mais dans un certain futur, je permetrait de quitter et de continuer)

Voilà
PS : Comme là j'ai mon bac blanc (et oui la terminal), je ne sais pas trop si je pourrais repondre au eventuelle question que vous pourrez me poser (pourquoi je fait ça, comment marche ça, etc) meme si j'ai un peut oublier, je pense que ça me reviendra wink
Je sais pas si ça viens de là, mais dans certaines de tes boucles il manque des 'Then' et des 'End', exemple :
If Q<1
1→Q
C+3→F
If F>11
11→F
L-3→M
If M<1
1→M
L+3→N
If N>6
6→N 0→B


Doit devenir :
If Q<1:Then:1→Q:C+3→F:End
If F>11:Then:11→F:L-3→M:If M<1:1→M:L+3→N:End If N>6:Then:6→N:0→B:End


Dans certains cas tu peux te passer des 'Then' et 'End', mais seulement lorsque ta boucle 'If' ne comporte qu'une instruction. Dans ton cas, les boucles ne prennai en compte que l'instruction qui se trouve derrière le 'If' et éxecuter les autres sans que la condition soit vérifiée.

(J'ai pas lu le code entièrement, c'est juste une supposition).
Les 4 If
If Q<1
1→Q
C+3→F
If F>11
11→F
L-3→M
If M<1
1→M
L+3→N
If N>6 6→N

sont correct
Explication : je calcule Q (ou F) en fonction de C et C et calculer en fonction de la position du curseur (((4+X)/8)→C). (X = Position en X du curseur)
Q (ou F) correspondent en faite aux valeurs minimale et maximale pour la colonne
M (ou N) sont calculer en fonction la ligne ou atterrit le pion, L est ici :

1→;G
1→;θ;
For(B,1,6,1)
[Placement de la croix (X) ou du rond (0), si il a été placé alors Theta=0]
If not(θwink and G
Then
U+1→;L1(P)
1+L1(70)→;L1(70)
0→;G
B→;L
8→;B End
L correspond a la hauteur (enfin ligne plutôt) ou le pion a été placé
Comme ma méthode pour calculer le mini et maxi (en Colonne et en Ligne) est relativement simple il faut que je m'assure de ne pas sortir de l'écran, surtout qu'après je vais taper dans une liste (L1) qui contient l'image des pions ( 0 = vide ; 1 = un joueur ; 2 = l'autre joueur), si je ne me trompe pas la valeur de L1(1) correspond a la case en haut en gauche, L1(2) a la case en dessous) ainsi de suite si je ne me plante pas L1(8) correspond donc a la case de la 2ieme colonne (en partant de la gauche) première ligne (en partant du haut) (En utilisant un matrice ça aurait été probablement plus simple, mais je pense pas que a l'époque je savais les utiliser, en faite le programme a plus de 1 an (j'ai retrouver la première version (elle avait l'avantage de ne pas planter puisque aucun contrôle n'était effectuer) elle date de fin 2005, début 2006) c'est fou comme le temps passe vite sad
Bref les quelques ligne précédente peuvent aussi être écrite comme ça :
C-3→;Q
C+3→;F
L-3→;M
L+3→;N
If Q<1
1→;Q
If F>11
11→;F
If M<1
1→;M
If N>6
6→;N 0→;B
La mise a 0 de la variable B sert a pour la suite (c'est un compteur il me semble)
c'est bizzard le ';' après le '→', je matterai ça quand j'aurai le temps. (je me dis toujours que je devrais faire une todolist, mais bon cheeky )

Sinon je regarderais bien (pour les rares fois ou l'on a un codeur confirmé qui expose son pb dans cette section ) mais suis à la bourre (un peu comme toi mais en moins blanc et un poil plus dur )
Bon courage wink
Moi aussi je commence a être a la bourre (moins d'un mois) et je passe toujours autant de temps de sur la calculette/pc (mais pour l'instant je retouche plus a des programmes du même style que supramath4 (qui au passage est rempli de bug :/ )

Concernant mon jeu, je pense que je ne vais garder que le début, et refaire la fin en utilisant les matrices, plus simple et surtout plus clair a comprendre ! (mais j'ai toujours eu la mani de faire des algorithmes triso
Raah je vient de me rendre compte que zTXT était au même endroit que la zFAQ (faite qu'ils reviennent vite !)

Bon j'ai fait ce que j'ai dis, cad reprendre le programme de 0 (enfin presque) et utiliser les matrices.
Le programme n'est pas encore complètement fini : il reste les diagonales a analyser (là je sens que je vais me casser autre chose que la tête !), quelque menu a compléter, une aide a faire, et des algorithmes à accélérer (chargement sauvegarde, verification ligne, et vérification place) !
Donc voilà une nouvelle version 3 alpha 7 : (version alpha certes mais ça ne plantera pas votre calculette !, juste que c'est toujours en développement)

A été fait : Utilisation de matrice, sauvegarde l'état du jeu, chargement de l'état du jeu si sauvegardé, et réécriture des algorithmes de vérification, apparition d'un menu (qui sera compléter plus tard), et aussi libération de la mémoire si l'on ne sauvegarde pas !


tromb Fichier joint : P4_version3.07.zip

Quand j'aurais terminer la version 3 je réfléchirais a la version suivante pour rajouter l'AI


PS : Faudrait-il-donc pas déplacer le sujet dans les projets ?
Comme tu veux, on peut le faire avec ton accord.

Sinon j'ai téléchargé ton jeu, je le testerai surement demain.
et aussi libération de la mémoire si l'on ne sauvegarde pas !


Si c'est bien ce que je pense (le fait d'éffacer le score si on ne sauvegarde pas), il suffit d'utiliser deux listes (voir même qu'une avec les variables), une liste temporaire (ou des variables, donc) et une autre définitive.
Pour l'instant il n'y a pas de score, donc pas de problème de sauvegarde ! par contre comme je n'y avais pas penser je le rajouterai (mais pas prioritaire !)
Nan mais si c'est juste une liste des meilleurs score c'est même pas la peine, si le score est meilleur que les anciens on l'ajoute à la liste sinon on ne l'enregistre pas.

Sinon tu veux que je déplace le sujet ?
La libération de la mémoire consiste a supprimer les 4 "grosses" variables que je crées ([A], Str1, et listeP4, et GDB) en tout ça doit faire pas loin de 900 en RAM.

Pour le score j'ai une petite idée de comment compter les points, mais enfin on verra ça plus tard.

Je ne sais pas si j'aurais le temps de sortir un nouvelle version avant le 20 juin, j'ai des épreuves qui commence le 6/06/07 et j'ai prévu de travailler un poil plus qu'au bac blanc ! (d'autant plus que tant qu'il faut être 2 pour jouer, à part avec l'examinateur .... ) les prochaines modifications risque même d'attendre un poil plus longtemps, tout dépend de ce que je fait cette été.

Étant donnée que ce jeu fort stupide et devenu un projet pour moi (ça fait quand même plus de 1 an que la V1 a vu le jour), et que je profite de ce forum pour m'aider a le développer (trop de monde sur mon site !). J'accepte donc que tu déplace le sujet. (non je ne suis pas en L !!!)

Sinon je viens de voir un "truc" bizarre la ligne horizontale qui sépare le texte de la grille du jeu, était écrasé par le texte, alors qu'il y a quelque jours ça marché nickel, j'ai fait un reset de la RAM et depuis ça ce ré-affiche triso

Voilà c'est fait. Sinon pour les grosses variables à prioris c'est très simple à supprimier (delVar).
Sinon je viens de voir un "truc" bizarre la ligne horizontale qui sépare le texte de la grille du jeu, était écrasé par le texte, alors qu'il y a quelque jours ça marché nickel, j'ai fait un reset de la RAM et depuis ça ce ré-affiche triso


C'est peut-être du au paramètre de WINDOW (dans ce cas là autant faire un reset Defaults...).
( ça te dit pas de créer une IA ? grin )
Si c'est prévu (même si je ne suis pas sur que le jeu reste jouable, si il faut 1 heure pour que la calto décide ou mettre le pion :/ ) mais il faudrait déjà que je finisse les vérifications.
(j'ai un peu trop tout reporté au 20/06 du coup la je sature, je travaille plus que pour le bac !! )
D'un autre coté ça ne me semble pas bien dur de travailler plus que pour le bac embarrassed
Zut je me suis fait repérer, pour avoir rien branlé pour le bac !
Bon enfin un bonne nouvelle : Version 3.1.01 (pourquoi 3.1.01 et pas 3.1.0 ? allez voir le changelog )
Pour les infos (changelog, dépose des idées, etc) : http://aplu.fr/guppy/forum.php?lng=fr&cat=5
Pour le télécharger c'est par là : http://aplu.fr/guppy/download.php?lng=fr&pg=79
mad je voulais editer les posts pour changer les liens mais soit je suis aveugle, soit c'est pas possible ...
Donc lse liens sont tous les même sauf qu'il n'y a plus hostgratos, en gros de là : http://mulx.hostgratos.net je passe la : http://aplu.fr smile
Pour télécharger la version qui est toujours la même qu'au dessus c'est maintenant à cette adresse : http://aplu.fr/guppy/download.php?lng=fr&pg=79 (c'est même plus simple on tombe direct sur la bonne page smile ) et pour le forum http://aplu.fr/guppy/forum.php?lng=fr&cat=5

Bon sinon j'était en train de penser reprendre le développement vu que en BTS je bosse encore moins qu'en terminal (si si c'est possible grin )

EDIT : c'est moi qui suis aveugle ^^ (je modifierais les liens plus demain)

PS : C'est possible de changer le nom du topic ?

EDIT-2010: MAJ des liens.
MulX (./17) :
PS : C'est possible de changer le nom du topic ?

Oui c'est possible mais seulement pour les modo & admin : t'as qu'a me dire ce que tu veux comme titre.

Sinon bonne chance pour ton jeu, si jamais t'as envi de le présenter à zContest c'est encore largement possible happy
Pour le nom du topic j'aurais penser "Puissance 4" c'est un peu plus explicite que "Bêta testeur & Programmeur" grin
Pour zContest yep j'aurais même pu le présenté pour celui de 2007 si je ne me plante pas happy (faudrait quand même que je fasse une doc est que je l'améliore un p'tit peu ...)
Voilà pour le titre smile