[W.I.P.] Puissance 4 pour CAS
Re: [W.I.P.] Puissance 4 pour CAS
persiste !!
-
charognard
Niveau 10: GR (Guide de Référence)- Posts: 869
- Joined: 18 Oct 2007, 00:00
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: sans
Re: [W.I.P.] Puissance 4 pour CAS
Up
Bon on va laisser de côter la partie esthétique
J'ai a moitié finit la partie de contrôle des pièces, en fait il me reste à faire les contrôle des diagonales.
Il contrôle donc les horizontales et les verticales
quelques shoots:
[[ Le Programme
hope you enjoy
Bon on va laisser de côter la partie esthétique
J'ai a moitié finit la partie de contrôle des pièces, en fait il me reste à faire les contrôle des diagonales.
Il contrôle donc les horizontales et les verticales
quelques shoots:
Show/Hide spoilerAfficher/Masquer le spoiler
[[ Le Programme
hope you enjoy
-
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6414
- Images: 22
- Joined: 27 Nov 2008, 00:00
- Location: 0x1AACC355
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: BAC+5: Epita (ING3)
Re: [W.I.P.] Puissance 4 pour CAS
vraiment bien
je telecharge
par ailleurs, le lien est "
http://levak.ifrance.com/prgm/files/puissance4_v2.tns
je telecharge
par ailleurs, le lien est "
http://levak.ifrance.com/prgm/files/puissance4_v2.tns
MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)My calculator programs
Mes programmes pour calculatrices
-
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 14744
- Images: 1119
- Joined: 01 Jun 2007, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Twitter: adriweb
- GitHub: adriweb
Re: [W.I.P.] Puissance 4 pour CAS
Merci ^^
Oui j'ai volontairement retiré l'extension, car j'ai déjà eu des problèmes avec les liens directs vers des fichiers avec Ifrance, venant d'un autre site....
Bref j'ai commencé le contrôle des diagonales et j'ai quelques peu de mal à m'organiser dans les for et while
Je m'explique:
Pour contrôler les horizontales et verticales j'opère en incrémentant une variable chaque fois qu'il trouve que m[i,x] et égale à la pièce que l'on vient de poser et sort lorsqu'il n'y a plus de correspondance. Le i s'incrémente avec un For i,y+1,5 etc... pour tous les cas..(en changenant les paramètres bien sur)
Le problème c'est qu'en diagonales, il faut incrémenter deux variables, i1 et i2 pour les X et Y de la matrice, or en PHP c'est facile, le For permet l'incrément et le contrôle de plusieurs variables, mais ça ne l'est pas pour les TI
Je suis pose qu'il faut abandonner le For et passer au While ?
Ou alors une petite parade en mettant deux for l'un derrière l'autre ? un while et un for derrière ?
Quelqu'un a-t-il une idée de comment faire ceci dans le meilleur du monde?
@+
Oui j'ai volontairement retiré l'extension, car j'ai déjà eu des problèmes avec les liens directs vers des fichiers avec Ifrance, venant d'un autre site....
Bref j'ai commencé le contrôle des diagonales et j'ai quelques peu de mal à m'organiser dans les for et while
Je m'explique:
Pour contrôler les horizontales et verticales j'opère en incrémentant une variable chaque fois qu'il trouve que m[i,x] et égale à la pièce que l'on vient de poser et sort lorsqu'il n'y a plus de correspondance. Le i s'incrémente avec un For i,y+1,5 etc... pour tous les cas..(en changenant les paramètres bien sur)
Le problème c'est qu'en diagonales, il faut incrémenter deux variables, i1 et i2 pour les X et Y de la matrice, or en PHP c'est facile, le For permet l'incrément et le contrôle de plusieurs variables, mais ça ne l'est pas pour les TI
Je suis pose qu'il faut abandonner le For et passer au While ?
Ou alors une petite parade en mettant deux for l'un derrière l'autre ? un while et un for derrière ?
Quelqu'un a-t-il une idée de comment faire ceci dans le meilleur du monde?
@+
-
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6414
- Images: 22
- Joined: 27 Nov 2008, 00:00
- Location: 0x1AACC355
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: BAC+5: Epita (ING3)
Re: [W.I.P.] Puissance 4 pour CAS
For i1=XX to YY
i2=i2+1
...
next i1
i2=i2+1
...
next i1
-
charognard
Niveau 10: GR (Guide de Référence)- Posts: 869
- Joined: 18 Oct 2007, 00:00
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: sans
Re: [W.I.P.] Puissance 4 pour CAS
Quand tu parcours une diagonale, tu pars d'une origine (x0,y0) puis tu incrémentes en même temps x et y ou bien tu incrémentes x en décrémentant y. Dans les 2 cas, tu n'as besoin que d'un seul compteur pour cela... donc une seule boucle for !
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: [W.I.P.] Puissance 4 pour CAS
Bisam wrote:Quand tu parcours une diagonale, tu pars d'une origine (x0,y0) puis tu incrémentes en même temps x et y ou bien tu incrémentes x en décrémentant y. Dans les 2 cas, tu n'as besoin que d'un seul compteur pour cela... donc une seule boucle for !
J'effectue la vérification par rapport à la pièce posée, qui à pour coordonnées (x,y) avec le plus souvent x et y différents, donc je suis obligé d'incrémenter deux variables...
Charognard j'ai pas compris ta technique, il manque pas des instructions dans la fonction ?
Merci encore
Amicalement, Levak
@+
-
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6414
- Images: 22
- Joined: 27 Nov 2008, 00:00
- Location: 0x1AACC355
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: BAC+5: Epita (ING3)
Re: [W.I.P.] Puissance 4 pour CAS
Mais, je ne comprends rien à ce que tu racontes !!
Si tu as un point de coordonnées (x0,y0) et que tu veux vérifier les diagonales incluant ce point, il suffit de parcourir les points (x0+1,y0+1) puis (x0+2,y0+2) etc... pour la diagonale dans un sens et (x0+1,y0-1) puis (x0+2,y0-2) etc... dans l'autre sens !
Tu n'as besoin que d'un seul compteur pour parcourir la diagonale.
En revanche, tu as probablement besoin d'un 2ème compteur pour tester les différentes origines possibles de ta diagonale (au maximum 7 origines possibles pour diagonales passant par (4,4) (4,5) et (4,6))
Si tu as un point de coordonnées (x0,y0) et que tu veux vérifier les diagonales incluant ce point, il suffit de parcourir les points (x0+1,y0+1) puis (x0+2,y0+2) etc... pour la diagonale dans un sens et (x0+1,y0-1) puis (x0+2,y0-2) etc... dans l'autre sens !
Tu n'as besoin que d'un seul compteur pour parcourir la diagonale.
En revanche, tu as probablement besoin d'un 2ème compteur pour tester les différentes origines possibles de ta diagonale (au maximum 7 origines possibles pour diagonales passant par (4,4) (4,5) et (4,6))
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: [W.I.P.] Puissance 4 pour CAS
Non ce n'est pas comme cela que je procède:
Je prends comme point de départ les coordonnées de la pièce qui vient d'être placée, x et y
voici comment est affiché la matrice sur la calto:
[tableborder=1]1 2 3 4 5 6 7 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "O" " " " " " " " " " " " " "H" "O" " " " " " " " " " " "H" "H" "O" "H" " " " " " " "H" "O" "O" "O" "H" [/table]
La pièce O en marron à pour coordonnées dans la matrice à n lignes et p colonnes M[n,p]; M[5,4]
Voilà la partie du code concernée:
De toutes façon j'ai réglé mon problème en prenant tout simplement une boucle While et en vérifiant les deux varaibles i et i2 pour pas sortir du tableau et pas provoquer d'erreurs.
Je ne post pas la nouvelle version car il y a quelques petits réglages à faire pour le rendre plus sécurisé et régler un p'tit problème que je sais résoudre.
@+ et merci pour vos réponses !
Je prends comme point de départ les coordonnées de la pièce qui vient d'être placée, x et y
voici comment est affiché la matrice sur la calto:
[tableborder=1]
La pièce O en marron à pour coordonnées dans la matrice à n lignes et p colonnes M[n,p]; M[5,4]
Voilà la partie du code concernée:
Show/Hide spoilerAfficher/Masquer le spoiler
- Code: Select all
....
(c) diagonale 1 (haut gauche vers bas droit)
xy1plus:=1 (indicateur, vous verrez après)
i2:=y-1 (indice des ordonnés)
i:=x-1 (indice des abscisses)
(on vérifie vers le haut)
While i21 and i0
If m[i2,i]=m[y,x] Then
xy1plus+1 - xy1plus
Else
i:=0:i2:=1 (on sort de la boucle)
EndIf
i2-1 - i2 : i-1 -i (on décrémente manuellement)
EndWhile
(on vérifie dans l'autre sens, vers le bas)
i2:=y+1
i:=x+1
While i28 and i8
If m[i2,i]=m[y,x] Then
xy1plus+1 - xy1plus
Else
i:=7:i2:=7 (on sort de la boucle)
EndIf
i2+1 - i2 : i+1 -i
EndWhile
If xy1plus=4 Then
If m[y,x]=fix2 Then (fix2 c'est la pièce du joueur 2 définie dans le prog parent)
message:="Le joueur 2 à gagné !"
Else
message:="Le joueur 1 à gagné !"
Endif
Else
(encore rien mis comme protection, d'ailleurs ça sert à rien ici)
EndIf
(c) diagonale 2 (bas gauche vers haut droit)
xy2plus:=1
i2:=y+1
i:=x-1
(on vérifie vers le bas)
While i28 and i0
If m[i2,i]=m[y,x] Then
xy2plus+1 - xy1plus
Else
i:=0:i2:=7 (on sort de la boucle)
EndIf
i2+1 - i2 : i-1 -i
EndWhile
(on vérifie dans l'autre sens, vers le haut)
i2:=y-1
i:=x+1
While i21 and i8
If m[i2,i]=m[y,x] Then
xy2plus+1 - xy1plus
Else
i:=7:i2:=2 (on sort de la boucle)
EndIf
i2+1 - i2 : i+1 -i
EndWhile
If xy2plus=4 Then
If m[y,x]=fix2 Then
message:="Le joueur 2 à gagné !"
Else
message:="Le joueur 1 à gagné !"
Endif
Else
EndIf
....
De toutes façon j'ai réglé mon problème en prenant tout simplement une boucle While et en vérifiant les deux varaibles i et i2 pour pas sortir du tableau et pas provoquer d'erreurs.
Je ne post pas la nouvelle version car il y a quelques petits réglages à faire pour le rendre plus sécurisé et régler un p'tit problème que je sais résoudre.
@+ et merci pour vos réponses !
-
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6414
- Images: 22
- Joined: 27 Nov 2008, 00:00
- Location: 0x1AACC355
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: BAC+5: Epita (ING3)
Re: [W.I.P.] Puissance 4 pour CAS
Up
J'ai sécurisé la partie de contrôle, mais il reste juste à empêcher le joueur 2 de jouer lorsque le joueur 1 à gagné, et inversement, très facile mais je suis fatigué.
J'ai par ailleurs eu la surprise d'une chose que je ne connaissais pas avant sur l'OS 1.4 de la TI Nspire CAS, c'est qu'elle reboot de temps à autre, surement lorsque le cache est trop gros pour elle... bref j'ai du refaire toutes les modifs que j'ai apporté aujourd'hui xD
un ptit screen pour la route:
[| TÉLÉCHARGER MOI !
Je n'ai toujours pas trouvé comment retirer le "Terminé" qui s'affiche à la fin, et est-il possible de créer ses propres erreurs, pour demander au joueur x de jouer ?
Autre question encore:
Est-il possible de vider l'écran par l'intermédiaire d'une fonction ? car je connais [menu] [Action] [Effacer l'historique], mais cela ne marche que en direct, j'ai pas trouvé l'équivalent pour un programme.
@+ !
J'ai sécurisé la partie de contrôle, mais il reste juste à empêcher le joueur 2 de jouer lorsque le joueur 1 à gagné, et inversement, très facile mais je suis fatigué.
J'ai par ailleurs eu la surprise d'une chose que je ne connaissais pas avant sur l'OS 1.4 de la TI Nspire CAS, c'est qu'elle reboot de temps à autre, surement lorsque le cache est trop gros pour elle... bref j'ai du refaire toutes les modifs que j'ai apporté aujourd'hui xD
un ptit screen pour la route:
[| TÉLÉCHARGER MOI !
Je n'ai toujours pas trouvé comment retirer le "Terminé" qui s'affiche à la fin, et est-il possible de créer ses propres erreurs, pour demander au joueur x de jouer ?
Autre question encore:
Est-il possible de vider l'écran par l'intermédiaire d'une fonction ? car je connais [menu] [Action] [Effacer l'historique], mais cela ne marche que en direct, j'ai pas trouvé l'équivalent pour un programme.
@+ !
-
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6414
- Images: 22
- Joined: 27 Nov 2008, 00:00
- Location: 0x1AACC355
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: BAC+5: Epita (ING3)
Who is online
Users browsing this forum: ClaudeBot [spider] and 2 guests