L'avantage de ce pocket est que son écran fait 6 ligne de 24 caractères et donc, on peut joueur contre celui-ci sur une grille de 6x6 qui reste affichée tout au long de la partie (pas besoin de recopier).
Code : Tout sélectionner
10:CLEAR :DIM A(5,5),S(1) ' A=Grid 6x6 S=Score 0 & 1
12:CLS :LOCATE 19,0:PRINT "You:":LOCATE 19,3:PRINT "Me:"
14:FOR I=0 TO 5:FOR J=0 TO 5:A(I,J)=10+ RND 89:IF A(I,J)>A(L,C) LET L=I,C=J
16:GOSUB 70:NEXT J:NEXT I
18:P=0:GOSUB 80:P=1:GOSUB 80
'
' User play S( P=0 )
'
20:I=L,J=C:GOSUB 76
22:GOSUB 74:K= ASC INKEY$ :GOSUB 70:IF K=0 THEN 22 ' animate sel cursor while no key pressed
24:IF K= 4 AND I>0 AND J=C LET I=I-1 ' UP key = go prev row
26:IF K= 5 AND I<5 AND J=C LET I=I+1 ' DOWN key = go next row
28:IF K=14 AND I=L AND J<5 LET J=J+1 ' RIGHT key = go next column
30:IF K=15 AND I=L AND J>0 LET J=J-1 ' LEFT key = go prev column
32:IF K=23 THEN 40 ' BS key = skip play
34:IF K<>13 AND K<>32 THEN 22 ' RETURN or SPACE = select position
36:IF A(I,J) GOSUB 78:L=I,C=J,P=0:GOSUB 76:GOSUB 82
'
' SHARP PC-G850V play S( P=1 )
'
40:I=L,J=C:GOSUB 78:FOR K=0 TO 5
42:IF A(K,J)>A(L,C) LET L=K,C=J 'Loop-up for greatest value in active column
44:IF A(I,K)>A(L,C) LET L=I,C=K 'Loop-up for greatest value in active row
46:NEXT K
48:GOSUB 74:GOSUB 70:I=I+ SGN (L-I),J=J+ SGN (C-J):IF I<>L OR J<>C THEN 48 'Animate select cursor
50:IF A(L,C) GOSUB 76:P=1:GOSUB 82:GOTO 20
'
' End of game
'
52:LOCATE 0,5
54:IF S(0)<S(1) PRINT " I win !";
56:IF S(0)=S(1) PRINT "Equality !";
58:IF S(0)>S(1) PRINT "Well done!";
60:INPUT "CONT(Y,N)?";K$:IF LEFT$ (K$,1)<>"N" THEN 12
62:END
'
' Sub-routines
'
70:IF A(I,J) THEN T$= " "+ STR$ A(I,J) ELSE T$="##" ' Current 2 digits or ## empty
72:LOCATE 1+3*J,I:PRINT RIGHT$ (T$,2):RETURN ' Display pos value
74:LOCATE 1+3*J,I:PRINT "__":RETURN ' Cursor pos __
76:LOCATE 3*C,L:PRINT "{":LOCATE 3+3*C,L:PRINT "}":RETURN ' Active pos markers ON
78:LOCATE 3*C,L:PRINT " ":LOCATE 3+3*C,L:PRINT " ":RETURN ' OFF
80:LOCATE 19,1+3*P:PRINT RIGHT$ (" 000"+ STR$ S(P),5):RETURN 'Display score
82:GOSUB 70:IF A(I,J) LET A(I,J)=A(I,J)-1,S(P)=1+S(P):GOSUB 80:GOTO 82 'Animation increasing score
84:RETURN
Evidemment, ce code peut encore être optimisé ou adapté à un affichage diffèrent ce qui nécessitera quelques dispositifs supplémentaires afin de faire défiler la grille pour les systèmes n'ayant pas l'ergonomie du SHARP PC-G850V.
La position en cours de sélection est indiquée par le scintillement du curseur '__' déplacé sur la ligne ou la colonne active à l'aide des touches curseur. On ne peut naviguer que dans la ligne ou la colonne active. La valeur sélectionnée est indiquée en pressant RETURN ou la barre d'ESPACE. Ce qui déclenche une petite animation au cours de laquelle le score est alors incrémenté de la valeur choisie. La touche BS sert à passer son tour et donne donc la main à son adversaire.
Le jeu du pocket donne lieu au déplacement du curseur et à la même animation lors de l'incrémentation de son score.
En fin de partie, entrer Y ou O pour continuer avec une nouvelle grille. Les scores ne sont pas remis à zéro.
P.S.: Pour celles et ceux qui n'auraient pas de SHARP PC-G850V sous la main, je recommande vivement de vous procurer celui proposé par remy dans son excellent PockEmul.