Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 1444
Réponses : 3
Type : discussion
Etat : réponses autorisées

Tic Tac Toe - Tomek (TI Concours 2014)

Wistaro le 01/03/2014 à 17:15
*************************
* TIC TAC TOE - TOMEK *
*************************

Voici ma création en TI-Basic pour le Tour 1 (sujet imposé) du TI-Concours 2014.
Voici le manuel d'utilisation:

I/ Design

Le design  concerne l'affichage de la grille.
Vous pouvez choisir votre design par 3 moyens:
1) Choisissez un réglage prédéfini en selectionnant "Default"
2) Créez votre propre design en selectionnant "Manual"
Type = le type d'affichage
Size = La taille, le pas d'affichage de la grille. Attention! Une "size" trop grande peut entrainer une grille non visible.
3) Demandez à votre calculatrice de vous générer aléatoirement un design en sélectionnant "Random".

II/ Menu


Pour des raisons graphiques, le jeu est en anglais.

1) Play: Sélectionnez cette option pour démarrer une partie. Pour cela, appuyez sur la touche 7 du clavier. Ensuite, 2 options vous sont proposées:
* J1 vs J2 = Un mode à 2 joueurs
*J1 vs Comp = Un mode 1 joueur, contre l'Ordinateur.
2) Optn: Permet de redéfinir le design (voir chapitre I/ ) - Touche 5 du clavier
3) Exit:  Quitte le jeu - Touche 3 du clavier

II/ Déplacement

En mode jeu, utilisez les touches directionnelles afin de déplacer le "." sur les cases.
Une fois votre case (vide) choisie, appuyez sur "ENTER" pour valider.

Un bref message d'information apparaît en bas pour vous informer des "logs" du joueur:
*"Checking for victory..." = L'ordinateur vérifie si un joueur à gagné.
*Player 1 , choose target = C'est au tour du joueur 1 (X) de jouer
*Player 2 , choose target = C'est au tour du joueur 2 (O) de jouer


Code version pour la gamme des TI82:
Code

:0->Xmin:0->Ymin
:1->DeltaX:1>DeltaY
:ClrDraw:AxesOff
:For(A,1,30
:   Text(30,40,"TIC
:   Text(randInt(1,55),randInt(1,90),"O
:End
:For(A,1,30
:   Text(30,40,"TAC
:   Text(randInt(1,55),randInt(1,90),"X
:End
:For(A,1,79
:   Text(30,40,"TOE
:End
:For(A,1,79
:   Text(30,37,"TOMEK
:End
:Lbl 9
:ClrHome
:Menu("  DESIGN?","DEFAULT",D,"MANUAL",3,"RANDOM",4
:Lbl 4
:randInt(1,3->M
:randInt(1,7->L
:Goto 2
:Lbl D:2->L:2->M:Goto 2
:Lbl 3
:Disp "Type?1=·/2=□/3=˖
:Input "",M
:If not(max(M={1,2,3:Goto 9
:Disp "Size?
:Input "",L
:abs(L->L
:Lbl 2
:ClrDraw
:DelVar G15->C:DelVar L1DelVar L2DelVar [A]{4,4->dim([A]
:randInt(1,4->V
:randInt(1,4->W
:6->[A](V,W
:2->J
:"*TIC TAC TOE TOMEK*->Str2
:Text(55,14,Str2
:For(A,12,62,L
:   Pt-On(22,A,M
:   Pt-On(48,A,M
:   Pt-On(72,A,M
:End
:For(A,0,94,L
:   Pt-On(A,24,M
:   Pt-On(A,38,M
:   Pt-On(A,52,M
:End
:StorePic 1
:{8,33,58,83->L1
:{0,13,28,42->L2
:DelVar ADelVar B
:Repeat K=72
:   getKey->K
:   If K=94:Goto Q
:   Text(1,1,"MENU>
:   Text(13,27,"PLAY
:   Text(28,52,"OPTN
:   Text(43,78,"EXIT
:   Text(55,A," O
:   Text(55,93-A,"X
:   A+1->A
:   If A=70:Text(55,28,"TI-CONCOURS
:   If K=83:Goto 9
:   If A=93:Then
:      Text(55,14,Str2
:      DelVar A
:   End:End
:ClrDraw:RecallPic 1
:DelVar Z2->A:2->B
:Menu(" GAME MODE?","J1 VS J2",7,"J1 vs COMP",8
:Lbl 7:DelVar IGoto 1
:Lbl 8:1->I:Goto 1
:Lbl 1
:Text(55,8,"CHECKING FOR VICTORY...  
:If C<=12:Then
:   4->dim(L5
:   4->dim(L3
:   4->dim(L4
:   For(theta,1,2
:      For(Q,1,4
:         [A](Q,Q->L4(Q
:         If L4(1)L4(2)L4(3)L4(4:Then
:            sum(L4->U
:            If U=4 or U=9:1->G
:            If U=8 or U=12:2->G
:         End
:         Matr>list([A],Q,L3
:         If L3(1)L3(2)L3(3)L3(4:Then
:            sum(L3->S
:            If S=4 or S=9:1->G
:            If S=8 or S=12:2->G
:         End:End
:      [A]T->[A]
:   End
:   For(Q,1,4
:      [A](Q,5-Q->L5(Q
:      If L5(1)L5(2)L5(3)L5(4:Then
:         sum(L5->H
:         If H=4 or H=9:1->G
:         If H=8 or H=12:2->G
:      End:End
:End
:If G:Goto 5
:If not(C:Goto 6
:¯1(J-3->J
:Text(L2(V),L1(W),"T
:If I and J=2:Then
:   Repeat not([A](F,N
:      randInt(1,4->F
:      randInt(1,4->N
:      Text(55,8,"SELECTING TARGET J2      
:   End
:   2->[A](F,N
:   Text(L2(F),L1(N),"O
:   C-1->C
:   Goto 1
:End
:Repeat K=105 and not([A](A,B
:   getKey->K
:   If K=45:Goto 2
:   Text(55,9,"PLAYER ",J,",CHOOSE TARGET  "
:   Pxl-Change(L2(A)+3,L1(B)+5
:   not(Z->Z
:   If Zmax(K={24,25,26,34
:      DelVar ZPxl-Change(L2(A)+3,L1(B)+5
:   min(4,max(1,A-(K=25)+(K=34->A
:   min(4,max(1,B-(K=24)+(K=26->B
:End
:J->[A](A,B
:C-1->C
:If J=1:Text(L2(A),L1(B),"X
:If J=2:Text(L2(A),L1(B),"O
:Goto 1
:Lbl 5
:Text(21,35,"J",G," WINS!
:Pause :Goto 2
:Lbl 6
:Text(21,30,"GAME OVER!
:Pause :Goto 2
:Lbl Q
:ClrDraw
:DelVar Pic1DelVar [A]DelVar L1DelVar L2DelVar L3DelVar L4DelVar L5Disp "

NB: J'ai essayé de convertir le maximum pour les TI82, mais il peut rester quelques erreurs, veuillez m'en excuser.

Screenshoot:
linkakro le 04/03/2014 à 19:24
J'ai modifié ton code pour éviter tant que possible les codes html des caractères unicode.
sto->
<=
¯
Delta
Je n'ai pas touché aux caractères de curseurs de points du graphique.
:Disp "Type?1=·/2=&#9633;/3=&#726;
Wistaro le 06/03/2014 à 11:44
Merci
linkakro le 06/03/2014 à 13:30
Je signale que ce code n'est pas directement compatible TI82 NON-stats.
-il y a la fonction randInt. randInt(A,B)=A+int_((B+1-A)rand)
-il y a des RecallPic 1 et StorePic 1 : il faudra écrire RecallPic Pic1 et StorePic Pic1
-surtout méfiez vous des priorités opératoires de la ti82. En particulier mon code remplaçant randInt qui peut être simplifié mais pas de la même façon sur différents modèles