Vous trouverez-ci-dessous une adaptation d'un programme paru dans
l'ancienne revue Jeux&Stratégie n°7.
Dans le jeu de Tirs Croisés, vous affrontez votre calculatrice
dans un carré de 5 unités. Les valeurs constituant ce carré sont
prises au hasard.
Le premier joueur tire sur une case du carré.
Son total est augmenté d'autant et c'est au second joueur de tirer
une case. Mais elle doit être dans la même ligne ou la même colonne
que le tir précédent.
Et ainsi de suite...
Le jeu est terminé lorsqu'on ne peut plus tirer de case.
(cela peut arriver en moins de 25 coups, car le PC-E500
a tendance a écourter les parties, vous comprendrez en jouant)
Le programme gère une variable "HANDICAP" que l'on attribue au
PC-E500. Cet handicap est un nombre de point qui est affecté au
PC-E500 en début de partie.
Présentation de l'interface:
1) après une courte présentation vous aurez un menu principal
proposant les options suivantes:
1:Règles : vous énonce de manière succinte les règles du jeu
2:Jouer : permet d'entrer dans la phase de jeu (et de ne plus en sortir)
3:Quitter : pour quitter le menu
S:pour avoir du son ou pas
+ et - : pour augmenter ou baisser le handicap accordé au PC-E500
A:pour permettre la régulation automatique du handicap
(selon le résultat de la partie, le handicap accordé au PC-E500
augmente ou baisse)
Pendant la partie, un petit smiley vous indiquera l'humeur du PC-E500.
Vous déplacez le curseur avec les flèches
directionnelles et vous validez votre coup avec la touche CR.
Une fois la partie terminée, votre PC-E500 n'attend que la pression
d'une touche avant de démarrer une nouvelle partie. Il est insatiable.
Et bien sur, il alterne le joueur qui démarre la partie. Si vous laissez
l'autorégulation du handicap vous aurez forcément des parties
avec de fantastiques finales. (oui fantastiques, il m'arrive de faire
10 parties de suite)
Jusqu'à quelle valeur de handicap irez-vous ? Le défi est lancé !!!
(moi pour l'instant c'est 7 mon maximum)
Dernier point : il se peut fort que vous vous retrouviez dans des
situations où l'ordinateur ne vous laisse que des mauvais coups
et lui des bons. C'est normal, c'est fait exprès...
Amusez-vous bien...
Paul - tireur de case depuis 1943
P.S. : le graphisme du zéro est rangé dans la variable d$(0) en ligne 70.
Je l'ai réduit à un point pour "aérer" le tableau mais si vous
désirez voir un petit zéro, vous pouvez mettre d$(0)="1F111F".
Code : Tout sélectionner
10 CLS :CLEAR :HANDICAP=5:SON=10:REG=1:RANDOMIZE
20 SM1$="60100C042271210101217122040C1060
30 SM2$="07083024489090909090904824300807
40 SM3$="07083020408084848484804020300807
50 SM4$="07083020488484848484844820300807
60 DIM E(4,4):LOCATE 11,0:PRINT "* TIRS CROISES *":PRINT "Un jeu strategique paru dans le magazine"
70 DIM D$(9)*6:D$(0)="000400":D$(1)="00001F":D$(2)="1D1517":D$(3)="11151F":D$(4)="07041E":D$(5)="17151D":D$(6)="1F151D":D$(7)="011D03":D$(8)="1F151F":D$(9)="17151F"
80 LOCATE 10,2:PRINT "Jeux&Strategie no 7":LOCATE 7,3:WAIT 20:PRINT "Adaptation : Paul Tergeist"
90 A$=INKEY$ :IF A$=""THEN 90
100 CLS :WAIT 0:LOCATE 10,0:PRINT "* MENU PRINCIPAL *"
110 LOCATE 5,1:PRINT "Regles....1 Son.......S:";:IF SON>0 PRINT "Oui" ELSE PRINT "Non"
120 LOCATE 5,2:PRINT "Jouer.....2 Handicap.+-:";HANDICAP:LOCATE 5,3:PRINT "Quitter...3 Autoregul.A:";:IF REG=1PRINT "Oui"ELSE PRINT "Non"
130 A$=INKEY$ :IF A$="" THEN 130
140 BEEP 1,80,SON
150 IF A$="1" THEN 240
160 IF A$="2" THEN 380
170 IF A$="3" THEN 370
180 IF A$="+"LET HANDICAP=HANDICAP+1:GOTO 100
190 IF A$="-"LET HANDICAP=HANDICAP-1:GOTO 100
200 IF A$="S"LET SON=10-SON:GOTO 100
210 IF A$="A"LET REG=1-REG:GOTO 100
220 GOSUB 750
230 GOTO 130
240 CLS :PRINT "Le but de ce jeu est de marquer plus":PRINT "de points que la machine en tirant"
250 PRINT "sur un carre de 25 cases contenant":WAIT 20:PRINT "des chiffres entre 1 et 9
260 A$=INKEY$ :IF A$=""THEN 260
270 BEEP 1,80,SON
280 CLS :WAIT 0:PRINT "Les joueurs ne peuvent tirer que dans lameme ligne ou la meme colonne que":PRINT "l'adversaire au coup precedent.
290 WAIT 20:PRINT "Alors choisissez bien votre case...
300 A$=INKEY$ :IF A$=""THEN 300
310 BEEP 1,80,SON
320 WAIT 0:CLS :PRINT "Pendant le jeu vous pouvez egalement":PRINT "utiliser la touche (R) pour demarrer
330 WAIT 20:PRINT "une nouvelle partie"
340 A$=INKEY$ :IF A$=""THEN 340
350 BEEP 1,80,SON
360 GOTO 100
370 CLS :PRINT "A bientot...":END
380 CLS :WAIT 30:PRINT "C'est ";R$;"parti..."
390 FOR X=0TO 4:FOR Y=0TO 4:E(X,Y)=RND 9:NEXT Y:NEXT X
400 C=0:VT=0:MT=0:CX=0:CY=0:IF TJ>0 LET TJ=3-TJ:T=TJ:GOTO 470
410 CLS :WAIT 0:PRINT "Qui commence ?
420 PRINT "1:L'Etre Humain
430 PRINT "2:Le PC-E500
440 INPUT "Quel est votre choix ? ";T
450 IF T<>1 AND T<>2 THEN 440
460 BEEP 1,80,SON:TJ=T
470 LX=-1:LY=-1:MT=HANDICAP
480 CLS :WAIT 0:FOR X=0TO 4:FOR Y=0TO 4
490 GCURSOR (X*8+4,Y*6+7):GPRINT D$(E(X,Y))
500 NEXT Y:NEXT X
510 C=C+1:LOCATE 10,0:PRINT "Coup no";C:LOCATE 27,0:PRINT "Handicap";HANDICAP
520 LOCATE 10,1:PRINT "Votre total ";VT
530 LOCATE 10,2:PRINT "Mon total ";MT
540 LOCATE 10,3
550 IF T=1 PRINT "A vous de jouer "
560 IF T=2 PRINT "A moi de jouer "
570 GCURSOR (180,18):GPRINT SM1$:GCURSOR (180,25)
580 IF VT<MT GPRINT SM2$
590 IF VT=MT GPRINT SM3$
600 IF VT>MT GPRINT SM4$
610 IF LX=-1 THEN 630
620 S=0:FOR I=0TO 4:S=S+E(I,LY)+E(LX,I):NEXT I:IF S=0 THEN 1000
630 IF T=1 GOSUB 720 ELSE 820
640 A$=INKEY$ :IF A$=""THEN 640
650 IF A$=CHR$ (14) AND CX<4 GOSUB 720:CX=CX+1:GOSUB 720:BEEP 1,8,SON:GOSUB 750
660 IF A$=CHR$ (15) AND CX>0 GOSUB 720:CX=CX-1:GOSUB 720:BEEP 1,8,SON:GOSUB 750
670 IF A$=CHR$ (5) AND CY<4 GOSUB 720:CY=CY+1:GOSUB 720:BEEP 1,8,SON:GOSUB 750
680 IF A$=CHR$ (4) AND CY>0 GOSUB 720:CY=CY-1:GOSUB 720:BEEP 1,8,SON:GOSUB 750
690 IF A$="R"LET R$=R$+"Re-":GOTO 380
700 IF A$=CHR$ (13) BEEP 1,20,SON:GOTO 770
710 GOTO 640
720 Y=CY*6+5:FOR X=CX*8+3 TO CX*8+7
730 IF POINT (X,Y)=0 PSET (X,Y) ELSE PRESET (X,Y)
740 NEXT X:RETURN
750 B$=INKEY$ :IF B$<>""THEN 750
760 RETURN
770 IF LX=-1 THEN 800
780 IF E(CX,CY)=0 LOCATE 10,3:PRINT "Non deja joue...":BEEP 1,100,3*SON:GOTO 640
790 IF CX<>LX AND CY<>LY LOCATE 10,3:PRINT "Lig";LY+1;" ou Col";LX+1;" ":BEEP 1,100,3*SON:GOTO 640
800 GOSUB 720:GOSUB 750
810 VT=VT+E(CX,CY):E(CX,CY)=0:T=3-T:LX=CX:LY=CY:GOTO 480
820 IF LX=-1 THEN 1050
830 CJ$="":SV$="":MV=0:FOR X=0TO 4:IF E(X,LY)>MV LET MV=E(X,LY)
840 NEXT X
850 FOR Y=0TO 4:IF E(LX,Y)>MV LET MV=E(LX,Y)
860 NEXT Y:IF MV=0 THEN 1000
870 FOR X=0TO 4:IF E(X,LY)>0 LET EX=X:EY=LY:GOSUB 910
880 NEXT X
890 FOR Y=0TO 4:IF E(LX,Y)>0 LET EX=LX:EY=Y:GOSUB 910
900 NEXT Y:GOTO 960
910 S=E(EX,EY):V=0:FOR I=0TO 4:IF E(I,EY)>V AND I<>EX LET V=E(I,EY)
920 NEXT I
930 FOR J=0TO 4:IF E(EX,J)>V AND J<>EY LET V=E(EX,J)
940 NEXT J:S=S-V
950 CJ$=CJ$+CHR$ (EX*10+EY):SV$=SV$+CHR$ (20+S):RETURN
960 MV=0:IM=0:FOR I=1TO LEN (SV$):IF ASC (MID$ (SV$,I,1))>MV LET MV=ASC (MID$ (SV$,I,1)):IM=I
970 NEXT I:I=ASC (MID$ (CJ$,IM,1)):MX=INT (I/10):MY=I-10*MX
980 CX=MX:CY=MY:GOSUB 720:LOCATE 10,3:WAIT 80:BEEP 1,20,SON:PRINT "Je joue en ";MY+1;",";MX+1:LX=MX:LY=MY
990 MT=MT+E(MX,MY):E(MX,MY)=0:T=3-T:GOTO 480
1000 GOSUB 720:LOCATE 10,3:WAIT 50:IF MT>VT PRINT "Vous avez perdu!":BEEP 3,10,SON:IF REG=1 LET HANDICAP=HANDICAP-1
1010 IF MT<VT PRINT "Vous avez gagne!":BEEP 3,100,SON:IF REG=1 LET HANDICAP=HANDICAP+1
1020 IF MT=VT PRINT "Egalite! ":BEEP 1,10,SON
1030 A$=INKEY$ :IF A$=""THEN 1030
1040 R$=R$+"Re-":GOTO 380
1050 CJ$="":SV$="":MV=0
1060 FOR X=0TO 4:FOR Y=0TO 4:IF E(X,Y)>MV LET MV=E(X,Y):MX=X:MY=Y
1070 NEXT Y:NEXT X:GOTO 980









