Retrocomputer, Emulazione, Riparazioni Scambi/Vendite e collezionismo - Cerco Commodore - Approfondimenti, Listati Basic Commodore

Commodore CErco COmmodore - l'iniziativa di appassionati di retrocomputer


Listato per il basic del Commodore Vic 20 che consente di creare un gioco spaziale.

Si ha a disposizione tre vite e con la navicella si deve distruggere asteroidi ed alieni. La collisione con asteroidi o alieni toglie una vita. Il tasto Z permette di ruotare a sinistra, C a destra ed M fa spostare in avanti. Il tasto RETURN consente di spostarsi in un altra zona dello spazio e la BARRA SPAZIATRICE fa sparare.

      5 S=0:li=3:poke36879,8:print"[carattere cuore in reverse per pulire schermo]"
      10 sc=7680:co=30720:cl=38400:as=7680
      15 dim a(7),d(7)
      16 y=11:x=10:d=1:sx=0:sy=0
      20 a=8
      25 fori=0to7:a(i)=7680+int(rnd(1)*506):d(i)=int(rnd(1)*3+21):ifrnd(1)>0.5then d(i)=-d(i)
      30 next
      35 pokecl+y*22+x,3:pokesc+y*22+x,107
      36 ifas>0then pokeas,32
      40 ad=int(rnd(1)*3+21):ifrnd(1)>0.5then ad=-ad
      45 as=int(rnd(1)*506)+7680
      50 fori=0to7:k=peek(197):ifabs(sx)+abs(sy)=0 then poke36877,0:goto55
      51 poke36878,15:poke36877,235:sx=0:sy=0:goto55
      55 d=d+(k=34)-(k=33):ifd<0thend=d+4
      60 ifd>3thend=d-4
      65 sx=sx+((d=1)-(d=3))*(k=36):sy=sy+((d=2)-(d=0))*(k=36)
      70 ifsx<-1thensx=-1
      75 if sx>1thensx=1
      80 if sy<-1thensy=-1
      85 if sy>1 then sy=1
      90 pokesc+y*22+x,32:x=x+sx:y=y+sy
      95 if k=15 then x=int(rnd(1)*22):y=int(rnd(1)*23)
      100 if x<0 then x=21
      105 if x>21 then x=0
      110 if y<0 then y=22
      115 if y>22 then y=0
      116 if peek(sc+y*22+x)<>32then 1000
      120 pokecl+y*22+x,3:c=107:if d=2 then c=114
      125 if d=3 then c=115
      130 if d=0 then c=113
      135 poke sc+y*22+x,c
      140 if a(i)=0 then 200
      141 if a(i)=sc+y*22+x then 1000
      145 pokea(i),32:a(i)=a(i)+d(i)
      150 if a(i)<7680 then a(i)=a(i)+506
      155 if a(i)>8185 then a(i)=a(i)-506
      160 pokea(i)+co,2:pokea(i),81
      200 if k<>32 or int(i/2)*2=i then 260
      201 poke36878,12:forx1=255to230 step -1:poke36877,x1:next
      205 x1=x:y1=y:dx=(d=3)-(d=1):dy=(d=0)-(d=2):c=64:if dy<>0 then c=93
      210 1=x1+dx:y1=y1+dy
      215 pokecl+y1*22+x1,5:if peek(sc+y1*22+x1)=32 then 240
      216 poke36878,15:poke36877,130
      220 pokesc+y1*22+x1,42
      225 forj=0to7:ifa(j)=sc+y1*22+x1 then a=a-1:a(j)=0:s=s+20
      230 nextj
      231 if sc+y1*22+x1=as then s=s+100:as=0
      232 poke 36877,0
      235 goto 250
      240 pokesc+y*22+x1,c:ifx1<21andx1>0andy1>22andy1>0 then 210
      250 x2=x:y2=y
      251 x2=x2+dx:y2=y2+dy:pokesc+y2*22+x2,32
      255 ifx2<>x1ory2<>y1then 251
      256 poke36877,0
      260 ifas=0 then 300
      265 pokeas,32:if rnd(1)>0.9then ad=int(rnd(1)*3+21):if rnd(1)>0.5 then ad=-ad
      267 as=as+ad:if peek(as+ad*2)=81 then ad=-ad
      270 if as<7680 then as=as+506
      275 if as>8185 then as=as-506
      280 pokeas+co,7:pokeas,88
      285 if as=sc+y*22+x then 1000
      300 next i:if a=0 then 20
      305 if as=0 and rnd(1)>0.9 then 40
      310 goto 50
      100 print"[freccia in alto in reverse]PUNTI"s
      1005 fori=1to2000:next:li=li-1:if li>0 then print"[cuore in reverse]":goto 16
      1010 poke36878,0:poke198,0
      9999 end
		  

Torna indietro



Copyright 2003 - 2018 (c) - Tutti i diritti riservati -