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:
