Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: CoolBasic: Matopeli

herkko [25.02.2005 21:07:22]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta