Go-moku sur CPC6218
Modérateur : Politburo
Go-moku sur CPC6218
Bonsoir,
Présentation du jeu : https://youtu.be/VlToz5JrBeA
Téléchargement programme et sources : https://drive.google.com/file/d/10NfG_4 ... sp=sharing
Présentation du jeu : https://youtu.be/VlToz5JrBeA
Téléchargement programme et sources : https://drive.google.com/file/d/10NfG_4 ... sp=sharing
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Re: Go-moku sur CPC6218
Pas mal !
J’aime bien le gomoku
J’aime bien le gomoku
? Apple, Atari, Canon, Casio, ????????????, HP, Psion, Sharp, Tandy... même TI.
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3419
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: Go-moku sur CPC6218
Moi aussi, j'attends avec patience les explications sur les principes de fonctionnement du programme.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
- SbM
- Fonctionne à 9600 bauds
- Messages : 4609
- Enregistré le : 24 nov. 2004 21:49
- Localisation : SQY (78), France
- Contact :
Re: Go-moku sur CPC6218
Disons plutôt que CP/M était fourni en complément, sur disquette.sappas a écrit : ↑07 févr. 2021 19:37 Très très bien, d'ailleurs si tu pouvais extraire du .dsk, je suppose avec managedsk, les deux fichiers gomoku.pas, et gomoku.scr. je t'en serais gré.
j'ai envie de tenter une expérience, de portage sur Atari ST.
J'avais oublié que l'OS du CPC était CP/M
Par avance, merci
L'OS « natif » du CPC, c'était l'AMSDOS, si on peut appeler OS cette petite collection de commandes de gestion du lecteur de disquettes.
http://sbm.ordinotheque.free.fr | http://www.mo5.com
"Un bon disque dur est un disque dur mort." (Général Cluster)
"Un bon disque dur est un disque dur mort." (Général Cluster)
Re: Go-moku sur CPC6218
Hello
je viens de pousser une nouvelle version qui gère 4 niveaux et rend l'affichage lisible sur un écran monochrome.
Par défaut on est en "facile". Le niveau "Kamikaze!" est le niveau le plus élevé comme avant. Je n'ai jamais réussi à gagner à ce niveau sans tricher un peu ("propose coup"), ce qui était plus que frustrant ! ;D
Pour l'algorithme, je vais devoir rendre à César ce qui est César (ou à Borland plutôt !) :
https://archive.org/details/bitsavers_b ... 5/mode/2up
Je vais faire une vidéo explicative dans la semaine.
Le lien pour télécharger la version avec niveau : https://drive.google.com/file/d/10NfG_ ... sp=sharing
je viens de pousser une nouvelle version qui gère 4 niveaux et rend l'affichage lisible sur un écran monochrome.
Par défaut on est en "facile". Le niveau "Kamikaze!" est le niveau le plus élevé comme avant. Je n'ai jamais réussi à gagner à ce niveau sans tricher un peu ("propose coup"), ce qui était plus que frustrant ! ;D
Pour l'algorithme, je vais devoir rendre à César ce qui est César (ou à Borland plutôt !) :
https://archive.org/details/bitsavers_b ... 5/mode/2up
Je vais faire une vidéo explicative dans la semaine.
Le lien pour télécharger la version avec niveau : https://drive.google.com/file/d/10NfG_ ... sp=sharing
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Re: Go-moku sur CPC6218
Hello,sappas a écrit : ↑07 févr. 2021 19:37 Très très bien, d'ailleurs si tu pouvais extraire du .dsk, je suppose avec managedsk, les deux fichiers gomoku.pas, et gomoku.scr. je t'en serais gré.
j'ai envie de tenter une expérience, de portage sur Atari ST.
J'avais oublié que l'OS du CPC était CP/M
Par avance, merci
Avec l'émulateur Amstrad CPC WINAPE, il suffit d'ouvrir le DSK de faire un copier-glisser des fichiers voulus depuis le .DSK vers Windows. Dans WinAPE cliquer sur l'icone de la disquette et faire EDIT.
Le point .scr est l'image de l'écran au format CPC. Je mettrai le source qui le génère sur la disquette plus tard. Ca permet d'avoir instantanément le plateau de jeu sans le voir se dessiner ni attendre quelques secondes si on masque les couleurs.
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3419
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: Go-moku sur CPC6218
Merci Gilles, j'ai trouvé les réponses aux questions que je me posais concernant l'algorithme.
En fait, je n'ai jamais programmé de jeu de GO-moku, mais j'avais fait un 'puissance 4' qui lui aussi utilisait un algorithme d'évaluation des coups basé sur un décompte incrémental. C'est d'ailleurs plus simple à faire sur un 'Puissance 4' car il n'y a à considérer que les colonnes à joueur, il n'y a pas comme dans le GO-moku de tableau de jeu en deux dimension.
Je me souviens qu'à l'origine, je voulais simplement organiser les données du jeu afin de détecter la victoire d'un des deux joueurs sans avoir à parcourir dans tous les sens chaque pièce du jeu. C'est un mettant au point mon système que je me suis rendu compte qu'il pouvait aussi servir à trouver le meilleurs coup à jouer. J'ai alors ajouter quelques éléments à la structures de donnée et l'ordi pouvait jouer convenablement.
Tout cela afin de pouvoir joueur sur une machine peu rapide programmée en BASIC !
Evidemment, en Turbo-Pascal on peut faire bien plus efficace. J'aime bien cet ouvrage qui accompagnait les logiciels et qui en profite pour faire de la pédagogie, expliquer tout un tas de notions et donner envie de programmer par soi même ! On ne trouve plus personne qui publie ce type d'œuvre aujourd'hui.
P.S.: Et oui, je connais aussi le cas vexant où je suis incapable de battre l'ordi que je viens moi même de programmer. héhé
En fait, je n'ai jamais programmé de jeu de GO-moku, mais j'avais fait un 'puissance 4' qui lui aussi utilisait un algorithme d'évaluation des coups basé sur un décompte incrémental. C'est d'ailleurs plus simple à faire sur un 'Puissance 4' car il n'y a à considérer que les colonnes à joueur, il n'y a pas comme dans le GO-moku de tableau de jeu en deux dimension.
Je me souviens qu'à l'origine, je voulais simplement organiser les données du jeu afin de détecter la victoire d'un des deux joueurs sans avoir à parcourir dans tous les sens chaque pièce du jeu. C'est un mettant au point mon système que je me suis rendu compte qu'il pouvait aussi servir à trouver le meilleurs coup à jouer. J'ai alors ajouter quelques éléments à la structures de donnée et l'ordi pouvait jouer convenablement.
Tout cela afin de pouvoir joueur sur une machine peu rapide programmée en BASIC !
Evidemment, en Turbo-Pascal on peut faire bien plus efficace. J'aime bien cet ouvrage qui accompagnait les logiciels et qui en profite pour faire de la pédagogie, expliquer tout un tas de notions et donner envie de programmer par soi même ! On ne trouve plus personne qui publie ce type d'œuvre aujourd'hui.
P.S.: Et oui, je connais aussi le cas vexant où je suis incapable de battre l'ordi que je viens moi même de programmer. héhé
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Re: Go-moku sur CPC6218
WinAPE est très bien en effet... Il faut télécharger la rom française pour clavier AZERTY. C'est un des rares à bien émuler le CPC+
Voilà le code qui permet de générer le .scr :
Voilà le code qui permet de générer le .scr :
Code : Tout sélectionner
Program Graph;
{$i UGraph.inc}
{$i UJapan.inc}
{$i UKbd.inc}
Var x,Adr : Integer;
i,e,Mask : Byte;
c : Char;
s: String[32];
VFile:File;
Screen: Array[0..$3999] OF Byte Absolute $4000;
Begin
SetMod(1); HidTxtCur;
SetPalMod1(3,25,18,15); SetBdr(3,3);
e:=EncInk(0);
GetScrDotAdr(0,199,Adr,Mask);
DrwScrFldBox(EncInk(3),Adr,48,200);
For x:=0 To 18 Do Begin
DrwHorLin(e,15,177,18+9*x);
DrwVerLin(e,18,180,15+9*x);
End;
SetGraPen(0); EchX:=2; Echy:=2;
For c:='A' to 'S' Do Begin
MovAbs(9+(Ord(c)-64)*18,26);
DspVecStr(c);
MovAbs(9+(Ord(c)-64)*18,386);
DspVecStr(c);
End;
For i:=1 To 19 Do Begin
Case i Of
1..9 : Str(i,s);
10 : s:='0';
11..19: Begin Str(i-10,s); s:='0'+s; End
End;
If i<10 Then MovAbs(6,24+i*18) Else MovAbs(2,24+i*18);
DspVecStr(s);
If i<10 Then MovAbs(366,24+i*18) Else MovAbs(362,24+i*18);
DspVecStr(s);
End;
SetGraPen(2);EchX:=8; EchY:=9; Sens:=Vertical;
MovAbs(392,406); DspVecStr('GOMOKU');
MovAbs(394,406); DspVecStr('GOMOKU');
MovAbs(396,406); DspVecStr('GOMOKU');
MovAbs(398,406); DspVecStr('GOMOKU');
SetGraPen(3);EchX:=2; EchY:=2; Sens:=Horizontal;
MovAbs(464,398); DspVecStr('OUVELLE PARTIE');
MovAbs(450,398); DspVecStr('N');
MovAbs(450,400); DspVecStr('N');
MovAbs(448,400); DspVecStr('N');
MovAbs(462,374); DspVecStr('PC COMMENCE');
MovAbs(450,374); DspVecStr('C');
MovAbs(450,376); DspVecStr('C');
MovAbs(448,376); DspVecStr('C');
EchY:=2;
MovAbs(464,350); DspVecStr('ROPOSE COUP');
EchY:=2;
MovAbs(450,350); DspVecStr('P');
MovAbs(450,348); DspVecStr('P');
EchY:=2;
MovAbs(462,326); DspVecStr('UTO PLAY');
EchY:=2;
MovAbs(450,326); DspVecStr('A');
MovAbs(450,324); DspVecStr('A');
MovAbs(464,302); DspVecStr('EGLE DU JEU');
MovAbs(450,302); DspVecStr('R');
MovAbs(450,304); DspVecStr('R');
MovAbs(450,302); DspVecStr('R');
MovAbs(464,278); DspVecStr('ONOCHROME');
MovAbs(450,278); DspVecStr('M');
MovAbs(450,280); DspVecStr('M');
MovAbs(464,254); DspVecStr('EFI :');
MovAbs(450,254); DspVecStr('D');
MovAbs(452,254); DspVecStr('D');
MovAbs(462,230); DspVecStr('UITTER LE JEU');
MovAbs(450,230); DspVecStr('Q');
MovAbs(450,228); DspVecStr('Q');
CpyBnk0v1($4000,$4000,$4000);
Assign(VFile,'gomoku.scr'); Reset(VFile);
BlockWrite(VFile,Screen,128); Close(VFile);
c:=StpChr;
SetMod(2); SetPalMod1(1,26,0,2);
End.
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32