ISOLA. Jeu tactique contre la CASIO FX-602P

 

Casio FX-602P

ISOLA

Image

La règle d'Isola est très simple. Après avoir déplacé votre pion (comme un roi aux échecs) , vous enfoncez une case de votre choix du tablier de jeu (les cases sont en plastique mou). Le premier qui ne peut plus déplacer son pion (il est isolé autour de cases vides) a perdu la partie.

En savoir plus sur l'excellent site Jeuxsoc et lien vers la version Windows de Saîd Koudache:
http://jeuxsoc.fr/?principal=/i/isola.php

LISTE DES PROGRAMMES ET SP

P0 : 602P joue
P1 : Joueur joue
P2 : Calcul libertés primaires, secondaires et renvoie la valeur du coup
P3 : Le coup est-il meilleur que ceux déjà testés?
P4 : Programme principal
P5 : Teste tous les coups possible. Le meilleur -> MR14
P6 : x.y -> x en MR16 et y en MR17
P7 : Libère case
P8 : Enfonce case
P9 : Initialisation


MEMOIRES UTILISEES

MR19 x.y joueur
MR18 x.y 602P
MR17 y
MR16 x
MR15 La 602 cmmence
MR14 x.y du meilleur coup en cours
MR13 Valeur du meilleur coup en cours
MR12 Libertés secondaires
MR11 Libertés primaires
MR10 Surface de jeu
.
.
.
MR01 Surface de jeu
MR00 index et adressages indirects
MR1F A qui le tour ?
MRF Test.



P4 {Programme principal}
GSBP9 { initialisations }
LBL0
18 Min00 Mr1F M+00
IND MR00 GSBP6
GSBP2 { renvoi 0 si impossible de jouer }
x=0 GOTO9 { fin de partie }
Mr1F Min00 IND GSB(0)

1 M-1F Mr1F ABS Min1F { au suivant }
GOTO0

LBL9

Mr1F "Je" x=0 "Tu" "; gagne" x=0 ";s"


P0 { 602P joue }

MR18 GSBP7 { libère la case de l'ancienne position du pion }
MR18 GSPP6 GSBP5 { recherche du meilleur coup }
MR14 Min18 GSBP8 { bloque la case de la nouvelle position du pion }
MR18 - 2.2 =
"R-># " { Affiche le déplacement du pion 602P }

MR15 x=0 GOTO1 {La 602 commence}

MR19 GSBP6 GSBP5 { choix de la case à enfoncer }
GOTO2

LBL1
7.5 Min14 RAN# x 2 =INT / 10 = M+14 RAN# x 2 = INT M+14
1 M+15

LBL2


MR14 - 2.2 =
";E->#" { Affiche case enfoncée }

HLT


P1 { Joueur joue }
Code:
MR19 GSBP7 { Libère l'ancienne case du roi }
"Roi en x.y ?" HLT
+ 2.2 = Min19
GSBP8 { Bloque la nouvelle case du roi }

"Enfonce?" HLT
+ 2.2 = GSBP8 { Enfonce case }


P2 { Calcul libertés primaires -> MR11 et secondaires MR12. Valeur du coup = f(MR11,MR12) }
Code:
{ Fait la somme des 3 et 5 mémoires adjacentes : lignes}
IND MR17 Min11 Min12
1 M-17 IND MR17 M+11 M+12
1 M-17 IND MR17 M+12
3 M+17 IND MR17 M+11 M+12
1 M+17 IND MR17 M+12
2 M-17

{ Libertés primaires = somme des 3 chiffres : colonnes }
MR16 - 2 = 10^x x MR11 = FRAC
x MR15 - INT Min11 =
x MR15 - INT M+11 =
x MR15 = INT M+11
Mr11 x=0 GOTO9

{ Libertés secondaire = somme des 5 chiffres}
MR16 - 3 = 10^x x MR12 = FRAC
x MR15 - INT Min12 =
x MR15 - INT M+12 =
x MR15 - INT M+12 =
x MR15 - INT M+12 =
x MR15 = INT M+12

{ Formule empirique pour calculer la valeur du coup }
MR11 M-12 x 8 + MR12 x MR11 + RAN# = MinF

LBL9


P3 { Calcul du meilleur coup }
Code:
MR16 - 1 = 10^x
x IND MR17 = FRAC
x MR15 = INT
x=0 GOTO9 { si le coup n'est pas jouable }

GSBP2
MR13 x>=F GOTO9

MRF Min13 { Ce coup est meilleur que le meilleur mémorisé }
MR16 + MR17 / 10 = Min14

LBL9


P5 { Liste des coups possibles et raz valeur meilleur coup }
Code:
0 Min13 MinF { raz meilleur coup }

{ Test des 8 positions autour de la case centrale }
1 M-16 GSBP3
1 M+17 GSBP3
1 M+16 GSBP3
1 M+16 GSBP3
1 M-17 GSBP3
1 M-17 GSBP3
1 M-16 GSBP3
1 M-16 GSBP3



P6 {x.y -> x Min16 y Min17}
Code:
- INT Min16 = X MR15 = Min17


P7 {libére case}
Code:
GSBP6 Mr16 +/- 10^x IND M+17


P8 {Enfonce case}
Code:
GSBP6 Mr16 +/- 10^x IND M-17


P9 { Initialisation}
Code:
"ISOLA v0.51 "
MAC
8 Min00 900 1/x RND8 { 0.0011111111 }

{ Initialise la surface de jeu avec les bords et cases libres : matrice 8x6 cases + bords }
LBL0

IND Min00 DSZ GOTO0

0 Min01 Min02

{ positions initiales des rois. MR18 ->602P MR19 -> Joueur }
3.6 Min18 GSBP8
10.5 Min19 GSBP8

"Qui débute?" PAUSE
"0->602 1->toi" HLT
Min1F Min15


Pour jouer, taper [P4]
Cliquer ici pour en savoir plus et version HP97 sur Silicium.org