Go-moku sur CPC6218

Tout sur les ordinateurs de Mr SucreCPC PCW PC PDA NC ...

Modérateur : Politburo

Répondre
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Go-moku sur CPC6218

Message par Gilles59 »

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
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
Avatar du membre
Danny
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1248
Enregistré le : 28 déc. 2013 16:34

Re: Go-moku sur CPC6218

Message par Danny »

Pas mal !
J’aime bien le gomoku :)
? Apple, Atari, Canon, Casio, ????????????, HP, Psion, Sharp, Tandy... même TI.
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Go-moku sur CPC6218

Message par C.Ret »

Moi aussi, j'attends avec patience les explications sur les principes de fonctionnement du programme.
:D
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.
Avatar du membre
SbM
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4609
Enregistré le : 24 nov. 2004 21:49
Localisation : SQY (78), France
Contact :

Re: Go-moku sur CPC6218

Message par SbM »

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
Disons plutôt que CP/M était fourni en complément, sur disquette.

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)
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: Go-moku sur CPC6218

Message par Gilles59 »

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
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
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: Go-moku sur CPC6218

Message par Gilles59 »

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
Hello,
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
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Go-moku sur CPC6218

Message par C.Ret »

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é
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.
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: Go-moku sur CPC6218

Message par Gilles59 »

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 :

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
Répondre

Retourner vers « Amstrad »