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
EndAihe on jo aika vanha, joten et voi enää vastata siihen.