10 REM *********************** 20 REM * CASSE TETE 30 REM * J.L DELPORTE * 40 REM *********************** 50 GOSUB 1010 60 REM * MELANGE * 70 CLS:PRINT "Appuyez sur une touche pour arr8ter le mAlange." 80 X=INT(RND(1)*5):Y=INT(RND(1)*5) 90 X1=INT(RND(1)*5):Y1=INT(RND(1)*5) 100 IF X=X1 AND Y=Y1 THEN 90 110 AS=B$(X,Y):BS(X,Y)=B$(X1,Y1):B$(X1,Y1)=A$ 120 REM * TEST DES TOUCHE * 130 ZZS=INKEY$:IF ZZ$="" THEN 80 140 REM 150 REM * DEPART * 160 CLS 170 GOSUB 1080 180 CO=0:XC=0:YC=0 190 GOSUB 970: GOSUB 930 200 D$=">":GOTO 320 210 REM * ENTREE * 220 REM LOCATE X,Y :positionne le curseur ligne X, colonne Y 230 D$=INKEY$:IF D$="" THEN 230 240 IF D$=" " THEN 340 250 IF D8="H" THEN 440 260 IF D$="B" THEN 530 270 IF D$="D" THEN 640 280 IF D$="G" THEN 750 290 IF D$="N" THEN D$=">":GOTO 320 300 IF D$="W" THEN D$="<":GOTO 320 310 GOTO 210 320 SENS$=D$:LOCATE 8,14:PRINT D$ 330 GOSUB 930:GOTO 230 340 REM * DEP CURSEUR 350 GOSUB 930 360 IF SENS$="<" THEN 400 370 YC=YC+1:IF YC<5 THEN 430 380 YC=0:XC=XC+1:IF XC<5 THEN 430 390 XC=0:GOTO 430 400 YC=YC-1:IF YC;-1 THEN 430 410 YC=4:XC=XC-1:IF XC>-1 THEN 430 420 XC=4 430 GOSUB 930:GOTO 210 440 REM * DEP HAUT * 450 IF XC=0 THEN 210 460 FOR I=XC-1 TO 0 STEP -1 470 IF 8$(KOIC)=" " THEN 490 480 NEXT K:GOTO 210 490 FOR J=K TO XC-1:8$(3,YC)=8$(J+1,YC):NEXT J 500 B$(XC,YC)=" " 510 GOSUB 970:GOSUB 930 520 GOTO 850 530 REM * DEF BAS 540 IF XC=4 THEN 210 550 FOR K=XC+1 TO 4 560 IF 8$(K,VC)=" " THEN 580 570 NEXT K:GOTO 210 580 FOR J=K-1 TO XC STEP -1 590 8$(J+1,YC)=B$(J,YC) 600 NEXT J 610 81.(XC,YC)=" " 620 GOSUB 970:GOSUB 930 630 GOTO 850 640 REM * DEF DROITE 650 IF YC=4 THEN 210 660 FOR V=YC+1 TO 4 670 IF B$(XC,K)=" " THEN 690 680 NEXT K:GOTO 210 690 FOR J=K-1 TO YC STEP -1 700 8$(XC,J+1)=8$(XC,J) 710 NEXT J 720 B$(XC,YC)=" " 730 GOSUB 970:GOSUB 930 740 GOTO 850 750 REM * DEF GAUCHE * 760 IF YC=0 THEN 210 770 FOR K=YC-1 TO 0 STEP -1 780 IF B$(XC,K)=" " THEN BOO 790 NEXT K:GOTO 210 800 FOR J=K TO YC-1 810 8$(XC,J)=8$(XC,J+1) 820 NEXT J 830 BS(XC,YC)=" " 840 GOSUB 970:GOSUB 930 850 REM * VERIFICATION * 860 FOR 1=0 TO 4:FOR J=0 TO 4 870 IF B$(I,J)<>A$(I,J) THEN CO=C0+1:GOTO 210 880 NEXT J:NEXT I 890 CLS:LOCATE 12,1:PRINT"Vous ekes parvenu au rAs ultat en";CO;" coups." 900 INPUT"Desirez-vous rejouer 0/N ";D$ 910 IF D$="0" THEN 60 920 END 930 REM * SOPS CURSEUR * 940 REM LOCATE X,Y,1 idem LOCATE X,Y mais affich age clignotant du curseur 950 LOCATE XC*2+10,YC*2+10,1 960 RETURN 970 REM * SSPG DEPLACEMENT * 980 FOR I=0 TO 4:FOR J= 0 TO 4 990 LOCATE I*2+10,J*2+10,1:PRINT 8$(I,J) 1000 NEXT J:NEXT I:RETURN 1010 REM * INITIALISATION * 1020 DIM A$(5,5),8$(5,5) 1030 DATA A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T, U,V,W,X," " 1040 FOR I= 0 TO 4:FOR J=0 TO 4 1050 READ 8$(1,J):A$(I,J)=8$(1,J) 1060 NEXT J:NEXT I 1070 RETURN 1080 PRINT "(H)aut (B)as (D)roite (G)auche" 1090 PRINT:PRINT "Sens du deplacement du curseur c hoisi par W pour < et N pour" 1100 PRINT:PRINT " (SPACE) Deplacement" 1110 RETURN