1 REM ***************************** 2 REM * KVADSPEL.BAC - 16 K Minne * 3 REM * 81-02-02 / VER 1.0 * 4 REM * (c) Alf Wirdling <4230> * 5 REM ***************************** 10 RANDOMIZE 11 PRINT CHR$(12);TAB(8); 12 PRINT "K V A D R A T - S P E L" 13 PRINT TAB(8);STRING$(23,61) : ; 14 PRINT "Detta spel g}r ut p} att f|rs|ka" 15 PRINT "flytta samtliga tal i en kvadrat ( av" 16 PRINT "valfri storlek ) s} att talen kommer" 17 PRINT "i r{tt ordning ( stigande sekvens )." : ; 18 PRINT "Ett tal kan endast flyttas n{r det" 19 PRINT "finns en tom ruta vid sidan av detta" 20 PRINT "tal." : ; 21 PRINT "Ett tal f}r inte flyttas 'i kors' ." : ; 22 PRINT "Man flyttar genom att ange talet vid" 23 PRINT "vid fr}gan : DRAG : " : ; 24 PRINT "Ett tal m}ste anges med 2 siffror" 25 PRINT "( utan RETURN ). Talet 7 anges 07" : ; : ; 90 PRINT "ANGE KVADRAT-STORLEK (1-10) "; 91 INPUT N% : A%=0% 92 PRINT CHR$(12); 93 PRINT CUR(12,6);"BLANDNING AV TALEN P]G]R !!!"; 95 DIM V%(100%) 96 DIM M%(18%,36%) 99 REM *** INIT AV VEKTOR V *** 100 M1%=8%+N% 105 M2%=7%+N%*3% 110 I%=0% 115 FOR R%=9% TO M1% 120 FOR K%=9% TO M2% STEP 3% 125 I%=I%+1% 130 V%(I%)=R%*100%+K% 135 M%(R%,K%)=I% 140 NEXT K% : NEXT R% 199 REM *** BLANDNING VEKTOR V *** 200 FOR X%=1% TO N%^2%*10% 205 D1%=RND*2%+1% 210 D2%=RND*2%+1% 215 R%=V%(N%^2%)/100% : R2%=R% 220 K%=V%(N%^2%)-R%*100% : K2%=K% 225 ON D1% GOTO 230,265 230 ON D2% GOTO 235,250 235 R%=R%-1% 240 IF R%>=9% THEN 300 245 R%=R%+2% : GOTO 300 250 R%=R%+1% 255 IF R%<=M1% THEN 300 260 R%=R%-2% : GOTO 300 265 ON D2% GOTO 270,285 270 K%=K%-3% 275 IF K%>=9% THEN 300 280 K%=K%+6% : GOTO 300 285 K%=K%+3% 290 IF K%<=M2% THEN 300 295 K%=K%-6% 299 REM *** PRINT : VEKTOR TILL MATRIS 300 M%(R2%,K2%)=M%(R%,K%) 305 M%(R%,K%)=N%^2% 310 V%(N%^2%)=R%*100%+K% 315 V%(M%(R2%,K2%))=R2%*100%+K2% 320 NEXT X% 349 PRINT CHR$(12); 350 FOR P%=1% TO N%^2% 355 H%=V%(P%)/100% 360 IF P%=N%^2% THEN 375 365 PRINT CUR(H%,V%(P%)-H%*100%);P%; 370 GOTO 380 375 PRINT CUR(H%,V%(P%)-H%*100%);" "; 380 NEXT P% 399 REM *** GET AV TAL SOM FLYTTAS *** 400 PRINT CUR(22%,10%);"DRAG : "; 402 ONERRORGOTO 400 405 GET R$ : PRINT R$; 410 S%=VAL(R$)*10% 415 GET R$ : PRINT R$; 420 S%=S%+VAL(R$) 425 A%=A%+1% 430 IF S%<0% OR S%>N%^2%-1% THEN 530 499 REM *** SELECT OM R[TT DRAG *** 500 R%=V%(N%^2%)/100% 505 K%=V%(N%^2%)-R%*100% 510 R2%=V%(S%)/100% 515 K2%=V%(S%)-R2%*100% 520 IF R%=R2% THEN 550 525 IF K%=K2% THEN 560 530 PRINT CUR(22%,10%);"FELAKTIGT DRAG !"; 535 FOR F=1 TO 2500 : NEXT F 540 PRINT CUR(22%,10%);" "; 545 GOTO 400 550 IF ABS(K%-K2%)=3% THEN 600 555 GOTO 530 560 IF ABS(R%-R2%)<>1% THEN 530 599 REM *** CHANGE I VEKTOR OCH BILD *** 600 V%(N%^2%)=R2%*100%+K2% 605 V%(S%)=R%*100%+K% 610 PRINT CUR(R2%,K2%);" "; 615 PRINT CUR(R%,K%);S%; 620 PRINT CUR(4%,10%); 625 PRINT "ANTAL FLYTTNINGAR =";A% 699 REM *** CHECK OM TALEN KLARA *** 700 FOR C%=2% TO N%^2% 705 IF V%(C%)<=V%(C%-1%) THEN 400 710 NEXT C% 715 PRINT CUR(6%,10%); 720 PRINT "ALLA TAL [R KLARA !"; 725 PRINT CUR(22%,10%); 730 PRINT "VILL DU SPELA MER (J/N) "; 735 GET R$ : PRINT R$; 740 IF R$="J" OR R$="j" THEN 11 745 PRINT : ; : ; "TACK F\R IDAG" 750 END