Oon just tekemässä yhtä pelii johon tulee aika monta kentää, niin ajattelin tehdä siihen jonku pelimoottorin
ettei tarvis joka kenttään (formiin) laittaa sitä samaa koodii. Tehdäänkö se moottori modulille, vai mihin. Jos joku vois vaikka neuvoo kun en oo ennen tehny sellasta...
Minkälaisen moottorin meinaat tehdä. Jos tilemoottorin niin kannattaa laittaa kentät tiedostoon ja ladata sieltä
Ei ku mul kaikki kentät aina omassa formissaan, kun en mä tajuu niit tiedostosta lataus juttuja. Mut siis tarkoituksena ois, että laittaisin moduuliin ne aliohjelmat
esim. ukkoliikkuuoikea jne. Mutta kun laitoin ne sinne moduuliin ja yritän nyt liikkua niin tulee virheilmoitus
"Sub or Function not defined".
Näin se ei ainakaan toimi?
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyUp Then
Module1.ukkoliikkuuylös
End If
If KeyCode = vbKeyDown Then
Module1.ukkoliikkuualas
End If
If KeyCode = vbKeyLeft Then
Module1.ukkoliikkuuvasen
End If
If KeyCode = vbKeyRight Then
Module1.ukkoliikkuuoikea
End If
End Sub
Onko sun ukkoliikkuuylös, ukkoliikkuualas, ukkoliikkuuvasen ja ukkoliikkuuoikea määritelty julkisiksi? Jos ne on nyt muotoa
[b]Private[/b] Sub ukkoliikkuuylös() 'täällä sitten tapahtuu jotain jännää... End Sub
niin muuttaa ne muotoon
[b]Public[/b] Sub ukkoliikkuuylös() 'täällä sitten tapahtuu jotain jännää... End Sub
Määritä ne ukonliikkumis muuttujat moduleen näin:
Public UkkoX
Public UkkoY
Tee jonkinlainen kenttäeditori, talletus, ja lataus esimerkkejä varmasti löytyy.
Jos et halua tehdä editoria, talleta jokaisen levelin tärkeät muuttujat, ja kontrollien sijainnit kun tason pelaaminen alkaa. Sitten voit ladata ne takaisin aina kun taso vaihtuu. Tämän jälkeen voit hoitaa pelin hallinnan yhdestä formista.
Aina kun mahdollista kannattaa välttää koodin kopiointia useaan kohtaan jos ne tekevät saman asian, vain yksi aliohjelma jota kaikki muut sitten kutsuvat.
Ne aliohjelmat oli määritelty julkisiksi ja sain sen toimimaan muuten mutta nyt mun täytyy laittaa aliohjelmaan form1.ukko.left+25
eikä
ukko.left+25
kun se muuten valittaa "object required"
Joo, jos kyseessä on moduulikoodi niin täytyy tietysti pistää, minkä formin olioista on kyse.
omasta mielestäni Antti Laaksosen "Jakija"peliin on ihan maukkaasti ja selvästi rakennettu tapa jolla luodaan uusi mappi ja kaikki asiat, eli taulukkoon kaikki roskat ja otetaan tiedot sitten vaikkapa 1.map tiedostosta minkälainen se on, esim itse kenttä, koordinaatit missä on vihut, mitä vihuja löytyy jne...
itellä ollut tapa että vaikkapa varataan jonkun tiedoston pari ekaa riviä muuhun kuin kentän piirtämiseen esim näin:
vihut = 5 'kertoo määrän monta vihua
1,1 'kertoo koordinaatit missä vihut on, näitä lasketaan sen mukaan kuin miten monta vihua on merkattu kentällä olevaksi
1,3
1,5
1,7
vihu(1) = punainenmörkö 'kertoo minkälainen mörkö ja sen tiedot revitään sitten pelistä, tai voi luoda tiedoston joka aukaistaan mörön nimellä, tässä tapauksessa aukastaisiin mörkö nimeltään: punainenmörkö.mör
vihu(2) = ninja
mappi: 'tämä kohta kertoo että aletaan lukemaan mappia ja mennään aliohjelmaan joka osaa tämän hoitaa
1,1,1,1,1,1,1,1
1,0,0,0,0,0,0,1
1,0,0,0,0,0,0,1
1,0,x,0,0,0,0,1 'x = on oma ukko
1,0,0,0,0,0,0,1
1,0,0,0,0,0,0,1
1,1,1,1,1,1,1,1
toi on nyt yksi tapa tehdä mappi ja siihen omia tietoja, mutta toinen jota on alkanut käyttämään kun laiska olen niin suoraan kirjoitetaan mappi esim neljä kertaa
ensimmäinen kerta on että otetaan taulukkoon muistiin kohdat joissa on seinät, seuraava kohta on jossa luodaan tilet, eli grafiikka peliin ja sitten vielä mappi johon luot esim vihut ja ukot ja kaiki bonus-roskat jne...
Aihe on jo aika vanha, joten et voi enää vastata siihen.