Rechercher
Connexion
Chatbox externe
Derniers sujets
Partenaires
TI-Planet | Espace-TI : Forum |
Faire un don à Tout-82...
Où va cet argent ?
Membres donateurs:- Persalteas (10€)
- Wistaro (5€)
- jo2geek (22€)
Les posteurs les plus actifs du mois
Aucun utilisateur |
Tic Tac Toe Tomek
4 participants
Page 1 sur 1
Tic Tac Toe Tomek
Bonjour à tous!
Alors voilà je vous présente mon programme Tic Tac Toe Tomek que j'ai présenté pour le ti concours 2014, au tour 1 en ti basic, en sujet imposé !
Le lien de téléchargement:
https://www.mediafire.com/?1qgtz7433jtq2h4
Je vous fait une rapide présentation:
Le menu:
Vous vous déplacez avec les flèches du haut et du bas. Dans l'ordre:
_Vous pouvez choisir ici de jouer à 2 joueurs (chacun joue chacun son tour sur la même ti), ou contre une IA (HUM VS IA) en utilisant les flèches droite/gauche. Ce choix sera effectif en mode partie simple et tournoi.
_Vous pouvez choisir de faire une partie simple du jeu (voir les règles plus bas) (entrer pour valider).
_Vous pouvez choisir de faire un tournoi, et le choisir le nombre de manches (entre 2 et 5), avec les flèches droite/gauche (entrer pour valider).
_Quitter, je ne vous apprends rien. (annul/clear marche aussi)
Au moment de l'affichage de fin, vous pouvez quitter directement en appuyant sur n'importe quelle touche.
Le jeu (règles prises d'après le site du concours: http://www.ti-concours.com/tz/t1/accueil.php)
Ce jeu se joue sur une grille de 4 * 4 cases. Au début d'une partie, la grille est vide, à l'exception d'un caractère 'T' qui est placé aléatoirement sur l'une des cases.
Il y a deux joueurs: le joueur X et le joueur O. Le joueur X commence, puis les deux jouent chacun leur tour. A chaque tour, le joueur concerné place son symbole sur l'une des cases vides de la grille. Lorsque c'est votre tour, déplacez vous avec les flèches directionnelles, et validez votre position avec entrer.
Lorsque l'un des joueur finis avec une ligne, une colonne ou une diagonale contenant quatre fois son symbole, ou trois fois son symbole plus le symbole 'T', alors ce joueur gagne. La partie continue jusqu'à ce que quelqu'un gagne, ou qu'il n'y ait plus d'emplacement vide sur la grille, auquel cas il y a égalité.
A tout moment, vous pouvez quitter avec annul/clear.
Mode tournoi
En mode tournoi, vous disputez (contre un autre joueur ou une IA), une série de manches, chacun commençant à tour de rôle. A la fin du tournoi, celui qui a remporté le plus de manches gagne le tournoi.
L'IA
L'IA est programmée pour gérer en priorité certains cas (si elle peut gagner, si elle peut perdre, si elle peut prendre l'avantage, etc). Elle est plus offensive que défensive, mais ne peut pas avoir de stratégie impliquant plusieurs lignes/colonnes/diagonales simultanément.
Le code
Voici le code de mon programme. Comme vous pouvez le voir, j'ai essayé d'exploiter au maximum le "bogue" des goto/lbl. (note:je corrige dès que possible l'incompatibilité entre le forum et les caractères de tipe fait)
Pour finir, je vous met un petit screen:
Nb: ici vous pouvez trouver le programme présenté par Wistaro pour ce même concours.
Alors voilà je vous présente mon programme Tic Tac Toe Tomek que j'ai présenté pour le ti concours 2014, au tour 1 en ti basic, en sujet imposé !
Le lien de téléchargement:
https://www.mediafire.com/?1qgtz7433jtq2h4
Je vous fait une rapide présentation:
Le menu:
Vous vous déplacez avec les flèches du haut et du bas. Dans l'ordre:
_Vous pouvez choisir ici de jouer à 2 joueurs (chacun joue chacun son tour sur la même ti), ou contre une IA (HUM VS IA) en utilisant les flèches droite/gauche. Ce choix sera effectif en mode partie simple et tournoi.
_Vous pouvez choisir de faire une partie simple du jeu (voir les règles plus bas) (entrer pour valider).
_Vous pouvez choisir de faire un tournoi, et le choisir le nombre de manches (entre 2 et 5), avec les flèches droite/gauche (entrer pour valider).
_Quitter, je ne vous apprends rien. (annul/clear marche aussi)
Au moment de l'affichage de fin, vous pouvez quitter directement en appuyant sur n'importe quelle touche.
Le jeu (règles prises d'après le site du concours: http://www.ti-concours.com/tz/t1/accueil.php)
Ce jeu se joue sur une grille de 4 * 4 cases. Au début d'une partie, la grille est vide, à l'exception d'un caractère 'T' qui est placé aléatoirement sur l'une des cases.
Il y a deux joueurs: le joueur X et le joueur O. Le joueur X commence, puis les deux jouent chacun leur tour. A chaque tour, le joueur concerné place son symbole sur l'une des cases vides de la grille. Lorsque c'est votre tour, déplacez vous avec les flèches directionnelles, et validez votre position avec entrer.
Lorsque l'un des joueur finis avec une ligne, une colonne ou une diagonale contenant quatre fois son symbole, ou trois fois son symbole plus le symbole 'T', alors ce joueur gagne. La partie continue jusqu'à ce que quelqu'un gagne, ou qu'il n'y ait plus d'emplacement vide sur la grille, auquel cas il y a égalité.
A tout moment, vous pouvez quitter avec annul/clear.
Mode tournoi
En mode tournoi, vous disputez (contre un autre joueur ou une IA), une série de manches, chacun commençant à tour de rôle. A la fin du tournoi, celui qui a remporté le plus de manches gagne le tournoi.
L'IA
L'IA est programmée pour gérer en priorité certains cas (si elle peut gagner, si elle peut perdre, si elle peut prendre l'avantage, etc). Elle est plus offensive que défensive, mais ne peut pas avoir de stratégie impliquant plusieurs lignes/colonnes/diagonales simultanément.
Le code
Voici le code de mon programme. Comme vous pouvez le voir, j'ai essayé d'exploiter au maximum le "bogue" des goto/lbl. (note:
- Code:
{4,4->dim([A]
AxesOff
FnOff
"TIC TAC TOE TOMEK->Str0
10->dim(L2
-1->Ymin
61->Ymax
-23->Xmin
71->Xmax
DelVar LDelVar MDelVar H4->O
While 1
ClrDraw
2->J
Shade(48,59,-13,63
For([théta],1,17
If not(max([théta]={4,8,12
Text(4+randInt(0,2),10+4[théta]," "+sub(Str0,[théta],1
End
Text(50,33,"QUITTER
Text(40,12,"TOURNOI EN ",O," MANCHES
Text(30,23,"PARTIE SIMPLE
For([théta],0,1
For(W,0,2
For(A,1,1+2W
22+20[théta]-W+A
Pxl-On(Ans,W+1
Pxl-On(Ans,93-W
End
End
End
10->I
Repeat H and K=105
If L-W
Text(20,29+2L," "+sub("2 JOUEURSHUM VS IA",1+9L,9
L->W
Text(40,50,O
If H-A
Then
For([théta],0,1
Line(-23,43-10A,71,43-10A,[théta]
Line(-23,33-10A,71,33-10A,[théta]
H->A
End
End
getKey->K
If Ans=45
Goto 0
max(0,min(3,H+(Ans=34)-(Ans=25->H
L xor not(Ans)(K=24 or K=26->L
max(2,min(5,O+(H=2)((K=26)-(K=24->O
End
If H=1
Goto J
If H=3
Goto 0
DelVar P{0,0->L1
Repeat P>O
For(W,0,1
If Pnot(W
Goto 8
End
2-2fPart(.5P->J
P+1->P
If Ans<=O
Goto J
End
L1(2
(L1(1)>Ans)+2(Ans>L1(1->G
Goto 7
Lbl 8
For([théta],-1,50
Line(-23,[théta],71,[théta],0
End
If P-1
Then
RecallPic 0
Else
Horizontal 48
Horizontal 40
Horizontal -1
Text(14,2,"JOUEUR X MANCHE JOUEUR O
For([théta],-23,71,31.3
Line([théta],48,[théta],-1
End
For([théta],1,O
16+6[théta]
Text(Ans,46,[théta]
Text(Ans,15,"-
Text(Ans,78,"-
End
6[théta]
Line(-23,44-Ans,71,44-Ans
Text(18+Ans,39,"TOTAL
Shade(-1,36-Ans
If O<5
Text(44+3O,17," IL RESTE ",O," MANCHES
End
For([théta],1,û3
End
If G
Then
Text(6P+16,63G-48,sub("XO",G,1
1+L1(G->L1(G
For([théta],1,300
End
End
For([théta],1,2
Text(24+6O,63[théta]-48,L1([théta]
End
For([théta],1,300
End
If O<5
Text(44+3O,48,O-P
StorePic 0
Pause
End
Lbl J
ClrDraw
If M
Then
RecallPic 1
Else
For([théta],52,61
Line(-8,[théta],55,[théta]
End
Pxl-Off(0,15
Pxl-Off(9,15
Pxl-Off(0,78
Pxl-Off(9,78
Text(2,17," "+Str0
For([théta],0,48,12
Line(0,[théta],48,[théta]
Line([théta],0,[théta],48
End
Line(1,-1,49,-1
Line(49,-1,49,47
For(A,0,36,12
For(B,0,36,12
Lbl 9
For([théta],2,8,2
Pt-Change(A+[théta],2+B
Pt-Change(2+A+[théta],10+B
Pt-Change(2+A,B+[théta]+2
Pt-Change(A+10,B+[théta]
End
End
End
StorePic 1
1->M
End
Line(54,32,54,16
Line(66,32,66,16
Line(56,14,66,14
Line(67,32,67,15
For([théta],15,33,2
Line(55,[théta],65,[théta]
End
If H=2
Then
Text(29,78," X:",L1(1
Text(39,78," O:",L1(2
End
Fill(0,[A]
randInt(0,3->C
randInt(0,3->D
Fill(0,L2
L2->L3
Ans->L5
.5->L2(1+C
Ans->L2(5+D
If C=D
Then
Ans->L2(9
1->L3(9
End
If C=3-D
Then
.5->L2(10
1->L3(10
End
1->L3(1+C
1->L3(5+D
3->[A](C+1,D+1
12C->A
12D->B
Line(4+A,8+Ans,8+A,8+Ans
Line(6+A,8+Ans,6+A,4+Ans
For(T,0,1
If not(T
Goto 9
End
9->V
Line(-14,19,-6,19
Line(-5,20,-5,26
Line(-15,20,-15,26
Line(-14,27,-6,27
DelVar GDelVar NRepeat N=15 or G
N+1->N
3-J->J
Text(35,10,"J",sub("XO",Ans,1
If L and J=2
Then
seq([théta],[théta],1,10->L4
(4!=L3)+(-1=L2 and 1=L3->L5
For([théta],1,10
L5([théta]
If Ans
Then
If 2=L3([théta]) and 0>L2([théta]) or not(L3([théta]
3
If L3([théta])=1 and 0<L2([théta]
4
If L3([théta])=2 and 0<L2([théta]
5
If L3([théta])=3 and -1.5>=L2([théta]
6
If 2.5<=L2([théta]
7
Ans->L5([théta]
End
End
SortD(L5,L4
L4(1
If Ans<5
Then
DelVar SAns-1->Q
While [A](Q+1,S+1
S+1->S
End
Else
If Ans>8
Then
Ans=10->[théta]
DelVar Q3Ans->S
While [A](Q+1,S+1
Q+1->Q
S+1-2[théta]->S
End
Else
DelVar QAns-5->S
While [A](Q+1,S+1
Q+1->Q
End
End
End
End
Repeat K=105 and not([A](U+1,V+1
If U-C or V-D
Then
For(W,0,1
12U->A
12V->B
For([théta],1,11,10
Line(A+1,[théta]+B,A+11,[théta]+B,W
Line(A+[théta],1+B,A+[théta],B+11,W
End
C->U
D->V
End
End
If L and J=2
Then
69!
If getKey=45
Goto M
DelVar KU+(U<Q)-(U>Q->C
If Ans=U
V+(V<S)-(V>S->D
If S=V and C=Q
105->K
Else
Repeat Ans
getKey->K
End
If Ans=45
Goto M
max(0,min(3,U+(Ans=26)-(K=24->C
max(0,min(3,V+(K=25)-(K=34->D
End
End
J->[A](U+1,V+1
If J=2
Then
For(W,4,8,4
Line(5+A,W+B,7+A,W+B
Line(W+A,5+B,W+A,7+B
End
Else
Line(A+4,B+4,A+8,B+8
Line(A+4,B+8,A+8,B+4
End
For(T,0,1
If not(T
Goto 9
End
2J-3+L2(U+1->L2(U+1
1+L3(U+1->L3(U+1
2J-3+L2(V+5->L2(V+5
1+L3(V+5->L3(V+5
If U=V
Then
2J-3+L2(9->L2(9
1+L3(9->L3(9
End
If U=3-V
Then
2J-3+L2(10->L2(10
1+L3(10->L3(10
End
J(max(L2=-2.5) or 3.5<=max(abs(L2->G
End
Lbl 7
For([théta],0,3
Horizontal 28+[théta]
Horizontal 27-[théta]
69!
End
If G
Then
sub("XO",G,1)+" GAGNE!
Else
"EGALITE...
End
Text(31,34," "+Ans
Pause
End
Lbl M
105->K
Ans->P
Fill(0,[A]
1->G
End
End
End
End
End
Lbl 0
If M
Then
ClrDraw
RecallPic 1
Text(2,18," PRESS A KEY
DelVar A-1->B
For([théta],1,16
B=2 and [théta]-16->W
B+1-3Ans->B
A+W->A
Text(16+12A+randInt(-1,1),28+12(B+(A=1))+randInt(-1,1),sub(Str0,[théta],1
[théta]+max([théta]={3,7,11->[théta]
For(D,1,300
End
getKey->K
If Ans
20->[théta]
End
Text(57,72," K
While not(Ans
getKey
End
End
ClrDraw
ClrHome
DelVar [A]DelVar Str0DelVar Pic0DelVar Pic1ClrAllLists
Output(1,1,"
Pour finir, je vous met un petit screen:
Nb: ici vous pouvez trouver le programme présenté par Wistaro pour ce même concours.
Dernière édition par m@thieu41 le Dim 2 Mar 2014 - 18:10, édité 1 fois
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Tic Tac Toe Tomek
Joli!
Normal que le code soit truffé de caractères spéciaux?...
Et comment tu as fait le triangle plein ?
Normal que le code soit truffé de caractères spéciaux?...
Et comment tu as fait le triangle plein ?
Re: Tic Tac Toe Tomek
Ohaw hallucinante performance O_o
Tu mérites bien ta première place ! félicitations !
(Et sinon, le screen qui affiche en gris, c'est du contraste mal réglé, ou tu gères vraiment du gris en Basic ?)
Tu mérites bien ta première place ! félicitations !
(Et sinon, le screen qui affiche en gris, c'est du contraste mal réglé, ou tu gères vraiment du gris en Basic ?)
- Spoiler:
- je vais être forcé de poster le mien après vous deux... alors que le mien est buggé
Re: Tic Tac Toe Tomek
Merci
Le gris c'est la nouvelle version de wabbitemu qui me le fait sur les screen...
Les caractères spéciaux je vais les régler. //Edit: c'est fait.
Les triangles pleins sont fait avec des pxl-on couplés avec des boucles ici:
Le gris c'est la nouvelle version de wabbitemu qui me le fait sur les screen...
Les caractères spéciaux je vais les régler. //Edit: c'est fait.
Les triangles pleins sont fait avec des pxl-on couplés avec des boucles ici:
- Code:
For(théta,0,1
For(W,0,2
For(A,1,1+2W
22+20théta-W+A
Pxl-On(Ans,W+1
Pxl-On(Ans,93-W
End
End
End
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Tic Tac Toe Tomek
Ce programme frôle la perfection. Bien joué.
Je m'intéresse surtout à l'Intelligence Artificielle et au test de victoire malgré les graphismes irréprochables. (car j'ai réalisé plusieurs programmes aux tests performants, mais je n'ai jamais achevé aucune de mes Intelligences Artificielles.)
Je m'intéresse surtout à l'Intelligence Artificielle et au test de victoire malgré les graphismes irréprochables. (car j'ai réalisé plusieurs programmes aux tests performants, mais je n'ai jamais achevé aucune de mes Intelligences Artificielles.)
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Tic Tac Toe Tomek
Merci
J'ai essayé de faire en sorte que l'IA se serve des données de test de victoires, de façon à ce qu'elle soit assez rapide, et que ces données soient toujours actualisées de manière simple, de façon à ne pas à avoir à tout vérifier constamment.
J'ai essayé de faire en sorte que l'IA se serve des données de test de victoires, de façon à ce qu'elle soit assez rapide, et que ces données soient toujours actualisées de manière simple, de façon à ne pas à avoir à tout vérifier constamment.
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Dim 16 Oct 2022 - 21:11 par Wistaro
» Bonne année 2018!
Ven 2 Nov 2018 - 19:42 par Ti64CLi++
» Lancement du TI-Concours 2017 !
Sam 20 Mai 2017 - 0:27 par Paulo1026
» Chaînes Youtube des membres
Ven 19 Mai 2017 - 22:41 par Wistaro
» cacul du taux d'intêret
Ven 24 Mar 2017 - 21:50 par m@thieu41
» [Projet] Un mario by tout82
Dim 29 Jan 2017 - 14:09 par Wistaro
» Cherche documentation assembleur TI82stat
Mer 25 Jan 2017 - 12:29 par Ti64CLi++
» Probleme Ti-82 Stats fr
Jeu 12 Jan 2017 - 13:56 par Ti64CLi++
» ROM 82 stats.fr
Jeu 15 Déc 2016 - 10:24 par Ti64CLi++