start tok64 d64-iHe88G 10 REM **** s[nka skepp **** 20 REM 30 REM (c) creative computing 40 REM dataspel i basic s167-170 50 REM 64-konvertering av: mr.p. 1990 60 REM 70 REM greetings to club64 and henrik 80 REM karnell. 90 REM 100 POKE53280,.:POKE53281,.:DEFFNt(x)=INT(20-LEN(a$)/2):POKE650,128 110 PRINT"{cyan}{clear}s[nka skepp{.*7}(c).creative computing 120 PRINT"{down}{yellow}vill du ha instruktioner? Q{left}";:GETx$:IFx$<>""THEN200 130 FORi=.TO300:NEXT:PRINT"W{left}";:GETx$:IFx$<>""THEN200 140 FORi=.TO300:NEXT:PRINT"Q{left}";:GETx$:IFx$<>""THEN200 150 GOTO130 200 IFx$<>"j"ANDx$<>"n"THENPRINT" ":PRINT"{white}v[lj ja eller nej!":GOTO120 210 IFx$="n"THENPRINT"nej":GOTO1000 220 PRINT 230 PRINT"{up}{light green}s[nka skepp {green}spelas p] en spelplan med 240 PRINT"10x10 rutor med ett r[tvinkligt {light green}(x,y){green} 250 PRINT"koordinatsystem. man placerar ut fyra 260 PRINT"fartyg: {pink}slagskepp {red}(5 rutor) {pink}kryssare {red}(3 270 PRINT"rutor) {green}och tv] stycken {pink}jagare {red}(2 rutor 280 PRINT"vardera). {green}fartygen kan placeras ut v]g- 290 PRINT"r[tt, lodr[tt eller diagonalt, {light green}men f]r 300 PRINT"inte ligga {pound}ver varandra! {green}fartygen r{pound}r 310 PRINT"sig inte under spelets g]ng. 320 PRINT"{down}{yellow}tryck p] n]gon tangent f{pound}r forts[ttning> 330 POKE198,.:WAIT198,1 340 PRINT"{up*2}{blue}s] l[nge det finns rutor kvar i slag-{space*3}"; 350 PRINT"skeppet f]r man {light blue}tre skott{blue}, f{pound}r kryssaren"; 360 PRINT"{light blue}tv] skott{blue} och f{pound}r en jagare {light blue}ett skott{blue}. 370 PRINT"allts] har man vid spelets b{pound}rjan 380 PRINT"{light blue}3+2+1+1 = {white}7{blue} skott per omg]ng. man matar 390 PRINT"in alla sina skott och jag talar om vad 400 PRINT"som har tr[ffats. ett skott anges med 410 PRINT"hj[lp av koordinaterna{light blue} (x,y){blue}. vinnare 420 PRINT"[r den som f{pound}rst s[nkt motst]ndarens 430 PRINT"{light blue}alla{blue} fartyg. 440 PRINT"{down}{yellow}tryck p] n]gon tangent f{pound}r forts[ttning> 450 POKE198,.:WAIT198,1 460 PRINT"{up*2}{orange}observera: dina fartyg och mina fartyg{space*2}"; 470 PRINT"ligger p] tv] {yellow}olika{orange} br[den med 10x10 480 PRINT"rutor. 490 PRINT"{down}{cyan}f{pound}rfattare till spelet [r lawrence 500 PRINT"siegel fr]n shaker heights, ohio. 510 PRINT"{156}konverterat till c-64 av mr.p. 520 PRINT"{down}{yellow}tryck p] n]gon tangent f{pound}r forts[ttning> 530 POKE198,.:WAIT198,1 540 PRINT"{up*2}{yellow}h[r [r rutn[ten som fartygen ligger p]: " 550 PRINT"{space*2}{cm p*10}{space*3}{cm p*10} 560 FORi=10TO1STEP-1:s$=RIGHT$(STR$(i),2) 570 PRINTs$"{L*10}{cm h}"s$"{L*10}{cm h}"s$ 580 NEXT:PRINT"{space*2}1234567890{space*3}1234567890 (obs! 0=10) 590 PRINT"{down}{yellow}tryck p] n]gon tangent f{pound}r forts[ttning> 600 POKE198,.:WAIT198,1 610 PRINT"{up*2}{156}jag hoppas att du [r [rlig, jag kontrol-"; 620 PRINT"lerar n[mligen inte hur du l[gger dina 630 PRINT"b]tar, men jag litar p] dig! 640 PRINT"{down}{yellow}tryck f{pound}r start av spelet> 650 POKE198,.:WAIT198,1 999 PRINT"{cyan}{clear}s[nka skepp{.*7}(c).creative computing"; 1000 PRINT"{down*3}":PRINT"{yellow}v[nta{.*3} l[gger ut mina skepp{.*3}{down*2} 1010 DEFFNa(k)=(5-k)*3-2*INT(k/4)+SGN(k-1)-1:DEFFNb(k)=k+INT(k/4)-SGN(k-1) 1040 DIMa(10,10),b(10,10),c(7),d(7),e(12),f(12),g(12),h(12),k(10,10) 1050 z8=. 1060 FORw=1TO12:e(w)=-1:h(w)=-1:NEXT 1100 FORx=1TO10:FORy=1TO10:b(x,y)=.:NEXT:NEXT 1150 FORx=1TO12:f(x)=.:g(x)=.:NEXT 1190 FORx=1TO10:FORy=1TO10:a(x,y)=.:NEXT:NEXT 1240 FORk=4TO1STEP-1:u6=. 1260 GOSUB2910 1290 IFv+v2+v*v2=.THEN1260 1300 IFy+v*FNb(k)>10ORy+v*FNb(k)<1ORx+v2*FNb(k)>10ORx+v2*FNb(k)<1THEN1260 1340 u6=u6+1:IFu6>25THEN1190 1360 FORz=.TOFNb(k):f(z+FNa(k))=x+v2*z:g(z+FNa(k))=y+v*z:NEXT 1400 u8=FNa(k):IFu8>u8+FNb(k)THEN1460 1410 FORz2=u8TOu8+FNb(k):IFu8<2THEN1450 1420 FORz3=1TOu8-1:IFSQR((f(z3)-f(z2))^2+(g(z3)-g(z2))^2)<3.59THEN1260 1430 NEXT 1450 NEXT 1460 FORz=.TOFNb(k):a(f(z+u8),g(z+u8))=.5+SGN(k-1)*(k-1.5):NEXT 1490 NEXTk 1500 PRINT"{green}ange koordinaterna f{pound}r{.*3} 1510 PRINT"slagskeppet (5 rutor) ";:POKE198,. 1520 FORx=1TO5:PRINTTAB(22);:INPUTy,z:b(y,z)=3:NEXT 1560 PRINT"kryssaren{space*3}(3 rutor) "; 1570 FORx=1TO3:PRINTTAB(22);:INPUTy,z:b(y,z)=2:NEXT 1610 PRINT"jagare (a){space*2}(2 rutor) "; 1620 FORx=1TO2:PRINTTAB(22);:INPUTy,z:b(y,z)=1:NEXT 1660 PRINT"jagare (b){space*2}(2 rutor) "; 1670 FORx=1TO2:PRINTTAB(22);:INPUTy,z:b(y,z)=.5:NEXT 1710 INPUT"{green}vill du b{pound}rja{space*9}";j$ 1730 IFj$<>"var finns dina fartyg?"THEN1890 1735 PRINT"{light blue}det h[r kallas fusk, men okej d], h[r{space*3}[r dem: 1740 PRINT"{yellow}slagskepp: "; 1750 FORz=1TO5:PRINTSTR$(f(z))","MID$(STR$(g(z)),2);:NEXT:PRINT 1780 PRINT"{yellow}kryssare:{space*2}"; 1790 FORz=6TO8:PRINTSTR$(f(z))","MID$(STR$(g(z)),2);:NEXT:PRINT 1820 PRINT"{yellow}jagare(a): "; 1830 FORz=9TO10:PRINTSTR$(f(z))","MID$(STR$(g(z)),2);:NEXT:PRINT 1850 PRINT"{yellow}jagare(b): "; 1860 FORz=11TO12:PRINTSTR$(f(z))","MID$(STR$(g(z)),2);:NEXT:PRINT:GOTO1710 1890 j$=LEFT$(j$,1):c=.:INPUT"{green}vill du se mina skott ";k$:k$=LEFT$(k$,1) 1920 PRINT:IFj$<>"j"THEN2620 1940 REM**************************start 1950 IFj$<>"j"THEN1990 1960 c=c+1:a$="omg]ng"+STR$(c):PRINTTAB(FNt(.))"{white}{down}"a$ 1970 PRINTTAB(FNt(.)-1);:FORi=1TOLEN(a$)+2:PRINT"{cm y}";:NEXT:PRINT 1990 a=. 2000 FORw=.5TO3STEP.5:FORx=1TO10:FORy=1TO10:IFb(x,y)=wTHEN2070 2040 NEXT:NEXT:GOTO2080 2070 a=a+INT(w+.5) 2080 NEXTw:FORw=1TO7 2100 c(w)=.:d(w)=.:f(w)=.:g(w)=.:NEXT 2150 p3=. 2160 p3=.:FORx=1TO10:FORy=1TO10:p3=p3-(a(x,y)<=10):NEXT:NEXT 2220 a$="du har"+STR$(a)+" skott":PRINTTAB(FNt(.))"{yellow}"a$:IFp3=>aTHEN2260 2240 PRINT"du har fler skott [n det finns tomma{space*4}rutor!! du vann.":END 2260 IFa=.THENPRINTTAB(12)"jag har vunnit!":END 2290 FORw=1TOa 2300 PRINT"{yellow}skott"STR$(w);:INPUTx,y 2310 IFx=INT(x)ANDx<=10ANDx=>1ANDy=INT(y)ANDy<=10ANDy>=1THEN2390 2370 PRINT" {green}felaktigt drag. f{pound}rs{pound}k igen!":GOTO2300 2390 IFa(x,y)>10THENPRINT" {green}du sk{pound}t d[r redan omg]ng"a(x,y)-10:GOTO2300 2400 c(w)=x:d(w)=y:NEXT 2460 FORw=1TOa:PRINT"{yellow}skott nr"STR$(w)": {green}"; 2470 IFa(c(w),d(w))=3THEN2540 2480 IFa(c(w),d(w))=2THEN2560 2490 IFa(c(w),d(w))=1THEN2580 2500 IFa(c(w),d(w))=.5THEN2600 2505 PRINT"{cyan}miss! 2510 a(c(w),d(w))=10+c:NEXT:GOTO2620 2540 PRINT"tr[ff slagskepp.":GOTO2510 2560 PRINT"tr[ff kryssare.":GOTO2510 2580 PRINT"tr[ff jagare(a).":GOTO2510 2600 PRINT"tr[ff jagare(b).":GOTO2510 2620 a=.:IFj$="j"THEN2670 2640 c=c+1:a$="omg]ng"+STR$(c):PRINTTAB(FNt(.))"{white}{down}"a$ 2650 PRINTTAB(FNt(.)-1);:FORi=1TOLEN(a$)+2:PRINT"{cm y}";:NEXT:PRINT 2670 a=.:FORw=.5TO3STEP.5:FORx=1TO10:FORy=1TO10:IFa(x,y)=wTHEN2750 2720 NEXT:NEXT:GOTO2760 2750 a=a+INT(w+.5) 2760 NEXTw 2770 p3=.:FORx=1TO10:FORy=1TO10:p3=p3-(b(x,y)<=10):NEXT:NEXT 2840 a$="jag har"+STR$(a)+" skott.":PRINTTAB(FNt(.))"{yellow}"a$ 2850 IFp3>aTHEN2880 2860 PRINT"jag har fler skott [n det finns tomma{space*3}rutor. jag vann.":END 2880 IFa=.THENPRINTTAB(13)"du har vunnit!":END 2890 GOTO2960 2910 x=INT(RND(.)*10+1):y=INT(RND(.)*10+1):v=INT(3*RND(.)-1):v2=INT(3*RND(.)-1) 2950 RETURN 2960 FORw=1TO12:IFh(w)>.THEN3800 2970 NEXT 2990 REM***********************slumpval 3000 w=. 3010 r3=. 3020 GOSUB2910 3030 RESTORE:r2=.:r3=r3+1 3060 IFr3>100THEN3010 3070 IFx>10THEN3110 3080 IFx>.THEN3120 3090 x=1+INT(RND(.)*2.5):GOTO3120 3110 x=10-INT(RND(.)*2.5) 3120 IFy>10THEN3160 3130 IFy>.THEN3270 3140 y=1+INT(RND(.)*2.5):GOTO3270 3160 y=10-INT(RND(.)*2.5):GOTO3270 3180 f(w)=x:g(w)=y:IFw=aTHEN3380 3210 IFr2=6THEN3030 3220 READx1,y1:r2=r2+1 3240 DATA1,1,-1,1,1,-3,1,1,,2,-1,-1 3250 x=x+x1:y=y+y1 3270 IFx>10ORx<1ORy>10ORy<1THEN3210 3310 IFb(x,y)>10THEN3210 3320 FORq9=1TOw:IFf(q9)<>xTHEN3350 3340 IFg(q9)=yTHEN3210 3350 NEXT:w=w+1:GOTO3180 3380 REM 3420 FORw=1TOa:IFk$="j"THENPRINT"{yellow}skott"STR$(w)":"STR$(f(w))","MID$(STR$(g(w)),2); 3430 IFb(f(w),g(w))=3THEN3500 3440 IFb(f(w),g(w))=2THEN3520 3450 IFb(f(w),g(w))=1THEN3560 3460 IFb(f(w),g(w))=.5THEN3540 3465 PRINT"{cyan} miss! 3470 b(f(w),g(w))=10+c:NEXT:GOTO1950 3500 PRINT"{green} tr[ff slagskepp.":GOTO3470 3520 PRINT"{green} tr[ff kryssare.":GOTO3470 3540 PRINT"{green} tr[ff jagare(b).":GOTO3470 3560 PRINT"{green} tr[ff jagare(a).":GOTO3470 3570 FORq=1TO12:IFe(q)<>-1THEN3730 3590 e(q)=10+c:h(q)=b(f(w),g(w)) 3610 m3=. 3620 FORm2=1TO12:IFh(m2)<>h(q)THEN3650 3640 m3=m3+1 3650 NEXT 3660 IFm3<>INT(h(q)+.5)+1+INT(INT(h(q)+.5)/3)THEN3470 3670 FORm2=1TO12:IFh(m2)<>h(q)THEN3710 3690 e(m2)=-1:h(m2)=-1 3710 NEXT:GOTO3470 3740 PRINT"{green}programmet avbrutet:{light green} 3750 FORq=1TO12 3760 PRINT"e("q") ="e(q),"h("q") ="h(q):NEXT:END 3800 REM**************************lista 3810 FORr=1TO10:FORs=1TO10:k(r,s)=.:NEXT:NEXT 3860 FORu=1TO12:IFe(u)<10THEN4020 3880 FORr=1TO10:FORs=1TO10 3900 IFb(r,s)<10THEN3930 3910 k(r,s)=-1e7:GOTO4000 3930 FORm=SGN(1-r)TOSGN(10-r):FORn=SGN(1-s)TOSGN(10-s) 3950 IFn+m+n*m=.THEN3980 3960 IFb(r+m,s+n)<>e(u)THEN3980 3970 k(r,s)=k(r,s)+e(u)-s*INT(h(u)+.5) 3980 NEXTn 3990 NEXTm 4000 NEXTs 4010 NEXTr 4020 NEXTu 4030 FORr=1TOa:f(r)=r:g(r)=r:NEXT 4070 FORr=1TO10:FORs=1TO10:q9=1:FORm=1TOa:IFk(f(m),g(m))=>k(f(q9),g(q9))THEN4130 4120 q9=m 4130 NEXT 4140 IFk(r,s)rTHEN4190 4170 IFg(m)=sTHEN4210 4180 NEXT 4190 f(q)=r:g(q9)=s 4210 NEXTs,r:GOTO3380 stop tok64 (bastext 1.0)