Posté le 16/04/2007 à 21:13Edité par MulX le 06/06/2010 à 19:17 Membre depuis le 16/04/2007, 56 messages
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 prgmEFACVARS
Voila 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.
Posté le 16/04/2007 à 23:08 Membre depuis le 16/04/2007, 56 messages
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
Posté le 16/04/2007 à 23:17 Membre depuis le 15/03/2005, 3470 messages
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).
Posté le 17/04/2007 à 17:26 Membre depuis le 16/04/2007, 56 messages
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)
Posté le 19/04/2007 à 21:37 Membre depuis le 09/07/2003, 21783 messages
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 )
Posté le 14/05/2007 à 23:01 Membre depuis le 16/04/2007, 56 messages
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
Posté le 26/05/2007 à 23:21 Membre depuis le 16/04/2007, 56 messages
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 ?
Posté le 26/05/2007 à 23:39 Membre depuis le 15/03/2005, 3470 messages
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.
Posté le 26/05/2007 à 23:47 Membre depuis le 16/04/2007, 56 messages
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 !)
Posté le 26/05/2007 à 23:56 Membre depuis le 15/03/2005, 3470 messages
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 ?
Posté le 27/05/2007 à 08:58 Membre depuis le 16/04/2007, 56 messages
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

Posté le 27/05/2007 à 11:42 Membre depuis le 15/03/2005, 3470 messages
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...).
Posté le 21/06/2007 à 11:14 Membre depuis le 09/07/2003, 21783 messages
( ça te dit pas de créer une IA ? grin )
Posté le 21/06/2007 à 15:05 Membre depuis le 16/04/2007, 56 messages
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 !! )
Posté le 22/06/2007 à 19:18 Membre depuis le 09/07/2003, 21783 messages
D'un autre coté ça ne me semble pas bien dur de travailler plus que pour le bac embarrassed
Posté le 24/06/2007 à 23:36Edité par MulX le 06/06/2010 à 19:15 Membre depuis le 16/04/2007, 56 messages
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
Posté le 08/06/2008 à 23:38Edité par MulX le 30/01/2011 à 11:01 Membre depuis le 16/04/2007, 56 messages
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.
Posté le 09/06/2008 à 00:06 Membre depuis le 15/03/2005, 3470 messages
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
Posté le 09/06/2008 à 00:13 Membre depuis le 16/04/2007, 56 messages
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 ...)
Posté le 09/06/2008 à 17:44 Membre depuis le 15/03/2005, 3470 messages
Voilà pour le titre smile