Tein aikaa tappaakseni tälläisen valitettavan yksinkertaisen, ruman ja bugisen matopelin. Ajattelin, että koska täällä Putkassa ei ole ainoatakaan vinkkiä CoolBasic:lle, niin voisin lähettää sellaisen siinä toivossa, että joku muukin innostuisi lähettämään niitä CoolBasic:lle.
Matoa liikutetaan vasemmalle- ja oikealle-näppäimistä, tai vaihtoehtoisesti A- ja S-näppäimistä. Ohjelma luo ruudulle halutun määrän viivoja, joihin ei saa törmätä. Pisteitä annetaan sen mukaan, miten kauan mato pysyy hallinnassa eikä törmää seinään, itseensä tai näytön reunaan. Paras piste-ennätys tallennetaan tiedostoon, vaikkakin kryptaamatta.
Tarkoituksenani on siis lähinnä vain näyttää miten mato saadaan liikkumaan ja kääntymään yksinkertaisesti ja miten tiedostoja voi lukea ja kirjoittaa.
Mikäli et ole kuullut CoolBasic:sta, matkusta osoitteeseen www.coolbasic.com.
'Tämän (kehnon) koodivinkin on tehnyt herkko. Julkaisin sen vain koska en muista nähneeni 'Ohjelmointiputkassa yhtään vinkki CoolBasic:lle. Käytä sitä vapaasti, mutta varoen. Cls FrameLimit 200 SCREEN 800,600,16,0 Wait 2000 Dim suunta As Integer Dim y As Integer, x As Integer Dim mappi(800,600) As Integer Dim sx As Integer, sy As Integer Dim nopeus As Float Dim pisteet As Float Dim viivoja As Integer Dim viivamax As Integer, viivamin As Integer viivoja = 50 viivamax = 200 'viivan max. pituus viivamin = 40 'viivan min. pituus 'piirretään viivoja For i = 1 To viivoja viivax = Rand(800) viivay = Rand(600) v= Rand(0,1) If v = 1 Then viivakorkeus=Rand(viivamin, viivamax) viivaleveys=0 Else viivaleveys=Rand(viivamin, viivamax) viivakorkeus=0 End If Color 0,0,255 Line viivax, viivay, viivax+viivaleveys, viivay+viivakorkeus Next i suunta = 2 x = 100 y = 100 nopeus=2 Repeat 'pisteet Color 0,0,0 Box 0,0,15,15 pisteet = pisteet + .01 Locate 1,1 Color 0,0,255 Print Int(pisteet) If suunta=1 Then xsuunta=0: ysuunta=1 If suunta=2 Then xsuunta=1: ysuunta=0 If suunta=3 Then xsuunta=0: ysuunta=-1 If suunta=4 Then xsuunta=-1: ysuunta=0 'Kääntyminen If tekoaly=OFF Then If KeyHit(cbkeyright) Or KeyHit(cbkeys) Then suunta=suunta+1 If KeyHit(cbkeyleft) Or KeyHit(cbkeya) Then suunta=suunta-1 If suunta < 1 Then suunta = 4 If suunta > 4 Then suunta = 1 EndIf 'Liikkuminen vanhax = x vanhay = y If suunta = 1 Then y = y - nopeus If suunta = 2 Then x = x + nopeus If suunta = 3 Then y = y + nopeus If suunta = 4 Then x = x - nopeus 'Jos mato ei törmää: 'Jos liikutaan vaakasuunnassa, tarkistetaan esteet If suunta = 2 Or suunta = 4 Then For ix = Min(vanhax,x) To Max(x,vanhax) PickColor ix,y If Not GetRGB(RED) = 0 And GetRGB(GREEN) = 0 And GetRGB(BLUE) = 0 Then GoTo loppu If ix < 0 Or ix>800 Then GoTo loppu Next ix EndIf 'Jos liikutaan pystysuunnassa, tarkistetaan esteet If suunta = 1 Or suunta = 3 Then For iy = Min(vanhay,y) To Max(y,vanhay) PickColor x,iy If Not GetRGB(RED) = 0 And GetRGB(GREEN) = 0 And GetRGB(BLUE) = 0 Then GoTo loppu If iy < 0 Or iy>600 Then GoTo loppu Next iy EndIf 'Piirretään mato Color Rand(105)+150,0,0 Line vanhax, vanhay, x, y Color Rand(105)+150,0,0 Line vanhax+1, vanhay+1, x+1, y+1 DrawScreen OFF Until KeyHit(cbkeyescape) loppu: Color 0,0,0 Box 0,0,800,600 Color 100,100,100 Locate 0,20 'Tarkistetaan TOP pisteet = Int(pisteet) If FileExists("mato.top") Then top=OpenToRead("mato.top") 'Jos tehty ennätys ennatys=Int(ReadLine(top)) EndIf If ennatys < pisteet Then top=OpenToWrite("mato.top") WriteLine top, pisteet WriteLine top, Date() + " - " + Time() Print "Teit ennätyksen!" Else Print "Ennätys ("+ennatys+") tehty "+ ReadLine(top) EndIf CloseFile top Print Print "Klikkaa hiirtä lopettaaksesi." WaitMouse End
Aihe on jo aika vanha, joten et voi enää vastata siihen.