Kyseessä on Ti99/4A-tietokoneelle tehty basic-peli. Tahmeahan tämä on, ja rammiakin siinä on mahtavat 4 kt, joten siksi matopeliin hivenen erikoinen ratkaisu, jossa c(x,y)-taulukkoon on tehty 32x24-matriisi, jottei muisti lopu kesken. Muistin pienen koon vuoksi on muuttujien pituus määritelty yhden merkin mittaiseksi.
(Tässä koneessa oli muistaakseni myös tapa lukea näytöltä merkki, mutta sitä ominaisuutta ei tässä ole käytetty, kun en muistanut kyseistä käskyä, enkä googlannut. Lisäksi en osannut liittää merkkiä merkkijonoon kyseisellä basicillä. Kyllähän ohjekirjasta se löytyisi, mutta kuka niitä dokkareita lukee?)
Tätä pystyy ohjaamaan joko Joystickilla tai näppäimistöllä. Emulaattorissa nämä näppäimet ovat kursorit, mutta en tiedä mitkä ne on varsinaisessa tietokoneessa.
Pahoittelut, että teksti on fingelskaa...
... koittakaa kestää.
rem - rivit eivät ole numeroituna, jottei niihin tuhlattaisi liikaa muistia kuluttamaan.
Joku vois tehdä vastineen Vic 20:lle, jos on liikaa aikaa. Kuusnepalle se on aivan liian yksinkerteista, kun siinä on niin valtavasti muistia.
rem TÄSTÄ ALKAA MATOPELI rem s= score rem l=madon pituus rem i,j = suunta rem c = screen characters rem v = tail x rem w = tail y rem h = tail suunta rem t=status key:lle rem x,y pään kohta rem z = key-arvo rem u = suunta rem 5 call color (15,15,1) rem 12 call color(5,12,7) rem call color(set of characters,foreground color, background color) 10 call clear 12 call color(12,9,1) 15 dim i(4),j(4) 17 randomize 20 i(0)=-1 30 i(1)=1 40 j(2)=1 50 j(3)=-1 100 b$="66FFFFFF7E7E3C18" 110 call char(127,b$) 120 b$="183C7EFFFF7E3C18" 125 for k=0 to 4 130 call char(128+k,b$) 135 next k 145 call vchar(1,1,32,758) 150 call vchar(1,1,128,24) 160 call vchar(1,32,128,24) 170 call hchar(1,1,128,32) 180 call hchar(24,1,128,32) 190 dim c(32,24) 200 for k=1 to 32 210 c(k,1)=128 220 c(k,24)=128 230 next k 240 for k=1 to 24 250 c(1,k)=128 260 c(32,k)=128 270 next k rem suunta 0 eli vasemmalle 280 s=0 310 s=0 320 x=16 330 y=12 340 v=x 350 w=y 360 u=0 370 c(x,y)=128+u 380 m=int(rnd*30)+2 390 n=int(rnd*22)+2 400 c(m,n)=167 410 call hchar(n,m,127) 420 l=int(rnd*5)+1 rem alustus tehtyko ??? 500 call key(0,z,t) 510 if z>11 then 550 520 if z<8 then 550 530 u=z-8 540 goto 600 550 call joyst(1,cr,rr) 560 if cr<>-4 then 565 562 u=0 565 if cr<>4 then 570 567 u=1 570 if rr<>-4 then 580 575 u=2 580 if rr<>4 then 600 590 u=3 600 c(x,y)=128+u 605 x=x+i(u) 610 y=y+j(u) 620 call hchar(y,x,128+u) 700 if c(x,y)<>0 then 900 rem lisätty 20220221 ++++++++++++++++++++++++ 710 if l=0 then 740 720 l=l-1 730 goto 500 rem tähän laita madon pituuden kasvattaminen +++++++++++ 740 h=c(v,w) 750 c(v,w)=0 755 if h>127 then 760 757 print "h=";h;v;w;x;y 758 print "bugisee" 759 end 760 v=v+i(h-128) 780 w=w+j(h-128) 790 call hchar(w,v,32) 890 goto 500 rem Osuma, joko reunaan tai sydämmeen 900 if c(x,y)=167 then 1000 910 print "p:";s 990 end 1000 m=int(rnd*30)+2 1010 n=int(rnd*22)+2 1020 if c(m,n)<>0 then 1000 1030 c(m,n)=167 1040 call hchar(n,m,127) 1050 l=int(rnd*4)+1 1060 s=s+l rem scoret näkyviin !!!! 1070 s$=str$(s) 1080 for k=1 to len(s$) 1085 call vchar(1,15+k,asc(seg$(s$,k,1))) 1090 next k 1100 call sound(100,880,2) 1110 if s>600 then 1200 1150 goto 500 1200 print "Pelasit pelin maksimipisteeseen!" 1210 print "Onneksi olkoon!!!" 1220 end rem matopeli loppuu tähän !!!!!!
No räpelsin itse vic20-version...
5 a=4096+2000 rem i-apumuuttuja madon suunnalle 7dimi(4):i(0)=-1:i(1)=1:i(2)=22:i(3)=-22 rem näyton ja apumuistin tyhjennys 10fori=1to22*23:poke38399+i,160:poke7679+i,32:pokea+i-1,0:nexti rem reunojen tekeminen pelialueelle 200fork=0to21 210poke(a+k+0*22),128 220poke(a+k+22*22),128 230poke7680+k,160:poke7680+k+22*22,160:poke7680+k*22,160 240poke7680+21+k*22,160 250poke(a+k*22),128 260poke(a+21+k*22),128 270nextk rem pisteiden alkuarvo 0 310s=0 rem koordinaattien keskelle x,y 320x=10+22*11 rem madon putsaaja-muuttujat v,w 340v=x 350w=y rem suunta 0 eli vasemmalle 360u=0 370poke(a+x),128+u rem arvo ensimmäiselle sydämelle paikka näytössä 380m=int(rnd(0)*500)+1 395ifpeek(a+m)<>0then 380 rem 400poke(a+m),167 rem tulosta ensimmäinen sydän näytölle 410poke7680+m,83 415poke38400+m,2+16*0 417pokea+m,167 420l=int(rnd(0)*5)+1 rem volume nollaan 430poke36878,0 rem sopraano 440poke36876,212 rem Joystick:n ohjaus + ääni päälle 500poke36878,1:s1=peek(37151):poke37154,127:t1=peek(37152):poke37154,255 520if (128andt1)=0 then u=1 530if (16ands1)=0 then u=0 540if (8ands1)=0 then u=2 550if (4ands1)=0 then u=3 rem 560 if (32ands1)=0 then print "fire" 600poke (a+x),128+u 605x=x+i(u) rem ääntä pönttöön 610poke36878,0 rem madon pään tulostaminen näytölle 620poke7680+x,81 rem tutkitaan madon törmääminen esteeseen 700ifpeek(a+x)<>0 then 900 rem madon pituuden lisääminen, mikäli l:ssä on vielä merkkejä rem vaatimaan pituuden lisäämistä. 710ifl=0then740 720l=l-1 730goto500 rem tähän laita madon pituuden kasvattaminen +++++++++++ 740h=peek(a+v) rem aputaulukkomuuttuja jouduttu vaihtamaan pokeen... rem 750 c(v,w)=0 750poke(a+v),0 755ifh>127then760 757print "h=";h;v;w;x 758print "bugisee" 759end 760v=v+i(h-128) rem 790call hchar(w,v,32) 790poke7680+v,32 890goto500 rem Osuma, joko reunaan tai sydämeen 900ifpeek(a+x)=167then990 rem ääntä pelin loppuun 905poke36878,10 907fork=1to1300:next 908poke36878,0 910fork=1to4000:next 920?"p:";s 922 ? "uusi peli ? [k/e]":inputy$ rem 920 print peek(a+x);x 925 print y$ 930ify$="k"then10 940end 868 rem osuma sydämeen rem tähän tulee uusi sydän rem ääntä peliin 990poke36878,10 rem arvotaan sydämelle uusi paikka 1000m=int(rnd(0)*500)+1 rem arvotaan uudestaan, mikäli paikasta löytyy jo valmiiksi sydän. 1020ifpeek(a+m)<>0then 1000 1025poke38400+x,160 1030pokea+m,167 rem muutetaan sydämen värikin punaiseksi ? 1040poke7680+m,83:poke38400+m,2 1050l=int(rnd(0)*4)+1 1060s=s+l rem scoret näkyviin !!!! 1070s$=str$(s) rem 1080?chr$(asc("S")+128) rem 1090?s 1080fork=1tolen(s$) 1090poke7680+k,asc(mid$(s$,k,1)) 1100next rem ääntä pois päältä 1105poke36878,0 rem 1100 rem sound(100,880,2) 1110ifs>350then1200 1150goto500 1200print"pelasit pelin maksimipisteeseen!" 1210print"onneksi olkoon!!!" 1220end
Emulaattoreita kyseisille räpellyksille:
Ti 99/4a
https://js99er.net/#/
Commodore Pet-tietokoneelle viritetty matopeli.
rem matopeli pet:lle pokeamalla ... rem s=score rem l=madon pituus rem ii,jj = suunta rem xy=screen characters rem v = tail x rem w=tail y rem h=tail suunta rem t=status key:lle rem x,y=paan kohta rem z=key-arvo rem u=suunta 5 dim xy(40,25),ii(4),jj(4) 6 for i=0 to 3 7 jj(i)=0 8 ii(i)=0 9 next i rem naytto alkaa osoitteesta 32768:sta 10 addr=32768:ii(0)=-1:ii(1)=1:jj(2)=1:jj(3)=-1 15 wall=160:print chr$(19);:s=0 20 for y=0 to 24 30 for x=0 to 39 40 c=32:if x=0 then c=wall 45 if x=39 then c=wall 50 if y=0 then c=wall 55 if y<>24 goto 70 60 c=wall 70 poke addr+x+y*40,c 75 xy(x,y)=c 80 next x 85 next y 100 x=19:y=12:xy(x,y)=3+20 rem print chr$(209);chr$(157); 130 poke addr+x+y*40,81 200 for i=1 to 10:get c$:nexti 210 get c$:if c$="" goto 210 213 a=rnd(-ti) 215 l=1+int(5*rnd(1)) 217 s=s+l 220 x=19:v=x 230 y=12:w=y:u=3 232 xy(x,y)=20+3 236 print chr$(19);s 240 sx=int(rnd(1)*38)+1 245 sy=int(rnd(1)*23)+1 250 if xy(sx,sy)<>32 then 240 255 poke addr+sx+40*sy,83 rem print chr$(211);:sydan 265 poke addr+x+y*40,81 rem sydan on 200, wall on 160 400 xy(sx,sy)=200 420 l=int(rnd(1)*5)+1 rem alustus tehty 500 get c$ 510 if c$="a" then u=0 520 if c$="d" then u=1 530 if c$="s" then u=2 540 if c$="w" then u=3 550 xx=x:yy=y rem 550 xy(x,y)=u+20 610 x=x+ii(u) 620 y=y+jj(u) 630 poke addr+x+y*40,81 rem 650 for k=0 to 100:next k 700 if xy(x,y)<>32 then 900 705 xy(xx,yy)=20+u 710 if l=0 then 740 720 l=l-1 730 goto 500 rem tahan laita madon pituuden kasvattaminen 740 h=xy(v,w)-20 rem tutkitaan bugiseeko madon historia 750 if h>3 then print h:poke addr+v+w*40,0:end 755 if h<0 then print h:poke addr+v+w*40,128:end rem koska ohjelma ei loppunut, niin ei siis bugissut 757 xy(v,w)=32:poke addr+v+w*40,32 760 v=v+ii(h) 780 w=w+jj(h) rem poke addr+v+w*40,32:rem xy(v,w)=32 890 goto 500 rem osuma: matoon, reunaan tai sydameen 900 if xy(x,y)=200 then 1000 910 print "score:";s 990 end 1000 xy(xx,yy)=u+20 1005 m=int(rnd(1)*38)+1 1010 n=int(rnd(1)*23)+1 1020 if xy(m,n)<>32 then 1005 rem sydan on pokena 83 1030 xy(m,n)=200:poke m+40*n+addr,83 1050 l=int(rnd(1)*4)+1 1060 s=s+l rem scoret nakyviin !!!!! 1100 print chr$(19);s; 1110 if s>1400 then 1200 1150 goto 500 1200 print "pelasit pelin maksimipisteeseen!!!" 1210 print "onneksi olkoon !!!" 1220 end run
rem edit aanen lisaaminen matopeliin. 1002 poke 59467,16:poke 59466,85:poke 59464,125:poke 59464,0
Emulaattorissa voi testata, mikäli ei ole käytettävissä alkuperäista Pet-tietokonetta.
Vanhoista retro tietokoneista oma suosikkini on 8-bittinen SAM Coupé. Itse omistan tämmöisen kovalevyllä piristettynä. Kovalevyllä suurin osa koneelle tehdyistä softista mukaan lukien useamman kaupallisen pelin lähdekoodit kuten esimerkiksi Lemmings. Koneen Basic-tulkki on syntaksiltaan jo melko moderni.
Löysin nopealla Googlettamisella pienen matopelin.
jalski kirjoitti:
Vanhoista retro tietokoneista oma suosikkini on 8-bittinen SAM Coupé. Itse omistan tämmöisen kovalevyllä piristettynä. Kovalevyllä suurin osa koneelle tehdyistä softista mukaan lukien useamman kaupallisen pelin lähdekoodit kuten esimerkiksi Lemmings. Koneen Basic-tulkki on syntaksiltaan jo melko moderni.
Joo, ja kone itsessäänkin on melko moderni, mikäli wikipediaa on uskominen...
https://en.wikipedia.org/wiki/SAM_Coupé
Itselleni tämä oli "uusi" tuttavuus. Itse puhun vanhoista tietokoneista vintage-tietokoneina, mutta tämä SAM Coupé voinee olla myös retroa, kun on jonkinlaista yhteensopivuutta ZX-Specktrumin kanssa, mikäli oikein tavasin wikipedian artikkelista.
Saahan nykykoneisiinkin yhteensopivuustilan ZX-spectrumin kanssa :p
Mut joo itselle tuli vähän MSX2, MSX2+ fibat tuosta (Z80 ja isompaa muistia ja parempaa grafiikkaa kuin yleisimmissaä Z80-koneissa). Joillakin kavereilla oli tuollaisiakin, mutta itsellä oli siinä vaiheessa jo Amiga.
Grez kirjoitti:
Saahan nykykoneisiinkin yhteensopivuustilan ZX-spectrumin kanssa :p
Sellaisen käyttäminen on tietenkin retroilua.
Grez kirjoitti:
Mut joo itselle tuli vähän MSX2, MSX2+ fibat tuosta (Z80 ja isompaa muistia ja parempaa grafiikkaa kuin yleisimmissaä Z80-koneissa). Joillakin kavereilla oli tuollaisiakin, mutta itsellä oli siinä vaiheessa jo Amiga.
Joo Amiga oli kova. Itse siirryin MS-DOS-aikaan n. 90-vuonna tai ainakin 90-luvulla. Toki tuolloin Amiga oli kovempi kone kuin MS-DOS, mutta jo silloin näki, että pidemmässä juoksussa PC ohittaa Amigan.
Meillä oli lapsena Specktravideo, joka oli joku vähän tuntemattomampi kuten C64 taas ei ollut. https://fi.wikipedia.org/wiki/Spectravideo
Retroa,
Spectravideo pelit olivat laadukkaampia, ja enemmän iloa tuottavia mitä c64 pelit, eteenkin kaksinpeleinä, muistan Konami moduulit.
Konami Hyper Sports 3, oli paras moduuli, mitä omistin.
Konami Boxing, oli superia kaksinpelinä.
Konami Golf ja Tennis.
Yie ar Kung-fu.
Yksinpeleinä, Knightmare ja Nemesis I ja King's Valley.
Kaksinpeleinä Spectravideo MSX oli värikkäämpi, iloisempi, mitä c64 ja pelit olivat paremman musiikin ja muun ääni efektin kanssa, mitä c64.
Minä pidän MSX kaksinpeleistä, enemmän, mitä jopa Amiga peleistäni, mitä olikaan, vain Amiga International Karate+ ja Sensible Soccer kilpailevat MSX kanssa pelaamisen tasossa, ilon tuottamisessa, myös Amigan Defender of the Crown oli kova peli.
:) :) :)
--
HannuTapio kirjoitti:
Minä pidän MSX kaksinpeleistä, enemmän, mitä jopa Amiga peleistäni, mitä olikaan, vain Amiga International Karate+ ja Sensible Soccer kilpailevat MSX kanssa pelaamisen tasossa, ilon tuottamisessa, myös Amigan Defender of the Crown oli kova peli.
:) :) :)
--
Onko odotettavissa lauta peli kaksin pelejä MSX:lle tulevaisuudessa?
Jatkoja,
Olen miettinyt Amiga emulaattorilla, tehdä jotain, mutta, juuri nyt on kaikki niin kiireistä, että, ei ehdi ihan lähi vuosina, aion tehdä nämä jo ilmoitetut lauta- ja laatta- ja bonuspelit nyt seuraavana.
Mahdollisesti joskus vuosien kuluttua, voi tulla Amiga retroja lautoina.
:) :) :)
Minulle on annettu lupa myös pyytää kaupalliselle sektorille kaupallisia lautapelejä, minä olen rakentana ensimmäiset versiot sellaisista kaupallisista lautapeleistä kuin Carcassonne, Ticket to Ride ja Flamme Rouge, 70 ja 80 lukujen aikana nuoruudessani, minulla on lupa pyytää vielä lisääkin kaupallisia pelejä, ne kehittyneet, sitten tekee ne pyytämäni.
Aika hienoa, mutta, tämä oli jonkun toisen ketju taas, jutellaan minun aiheitani, minun ketjuissa, sitten näin.
:) :) :)
--
HannuTapio kirjoitti:
(24.05.2023 17:45:24): Jatkoja, Olen miettinyt Amiga...
Aika omistuista että jonkin pyytämiseen pitää saada lupa? Mistä näitä pyytämislupia voi hakea?
Toisen juttu ketjua,
Tämä on nimimerkki 'peran' retro juttelu ketjua ..
:)
--
Aihe on jo aika vanha, joten et voi enää vastata siihen.