Moro! :)

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
Rugila
Newcomer
Posts: 2
Joined: Sun Mar 11, 2012 3:27 pm

Moro! :)

Post by Rugila »

Olen uusi tulokas ohjelmoinnin saralle, aloitin tässä kuukausi sitten ohjelmoinnin.
Coolbasicilla on tullut leikittyä ja kaikenlaista helppoa on tullut väsättyä, kuten muistipeli, klassinen matopeli, ruohonleikkuri. Ja niin edelleen.
Olen tässä jo pari viikkoa väsäillyt peliä nimeltä "Believable world" ( kuvaa välillä erittäin hyvin pelin luomista ja koneen kanssa kinastelua)
Löytyisikö täältä kokeneempien ohjelmoijien seurasta hieman apua. Ongelma on yksinkertainen, mutta uskon että toteutus on monimutkaisempi.

Ongelmani:
Pelimoottorilla on Objekti_Erakko ja Objekti_Talo
Kun objekti_Erakko törmää objektiin_Talo, pitäisi kartalle ilmaantua objekti_Talo2 ja tekstiä.
Olen kokeillut komennoilla DrawImage sekä LoadImage.. Mutta kumpikaan ei ole toiminut, onko olemassa komentoa, jolla tämän voisi ratkaista?
Manuaalisesta ohje kirjasesta ei ole ollut paljoa hyötyä.

Mikä " Believable world:sistä" sitten pitäisi tulla joskus.. sitten.. kun se valmistuu.
Sellainen yksinkertainen Ylhäältä kuvattu Selviytymis-peli.
Hahmolle pitäisi saada ainakin kaikkein yksinkertaisimmat toiminnot kuten raaka-aineiden kerääminen, metsästäminen ja rakentaminen.
Kun tämä perusversio tulee valmiiksi niin sitten, voidaan pohtia muuta.

Tässä alla on believable worldsin koodia, jospa osaisitte auttaa jotenkin:

Code: Select all

FrameLimit 40

DrawToWorld ON


kartta = LoadMap ("Media\cdm2.til","Media\Nurmi.bmp")
ObjectPickable kartta, ON 'aseta se poimittavaksi
PlayObject kartta,0,0,1 'animoi kartta




Erakko = LoadObject ("Media\Erakko.bmp", 72)
RotateObject Erakko,0 
PositionObject Erakko, 150, -150


Talo = LoadObject ("Media\Talo.bmp",72)
RotateObject Talo,0
PositionObject Talo, -150,-100

SetupCollision Erakko,Talo,2,2,2


ObjectPickable Talo, 2

Repeat 

  
    If LeftKey() Then TurnObject Erakko, 4
    If RightKey() Then TurnObject Erakko, -4    
    If UpKey() Then MoveObject Erakko, 2
    If DownKey() Then MoveObject Erakko, -2
    
    
     UpdateGame
    CloneCameraPosition Erakko 
    
 DrawGame
    

    ObjectPick Erakko
    e=PickedObject()
    
  
    If e=kartta Then
        Color cbMagenta
        Circle PickedX()-4,PickedY()+4,8,OFF
    EndIf
    

    If e=Talo Then
       Color cbGreen 
        Circle PickedX()-4,PickedY()+4,8,OFF    
    EndIf

    DrawScreen
    
    DrawScreen

Forever 
Lausu nopeaan tahtiin monta kertaa peräkkäin, ilman että kielesi menee solmuun: Ohjelmoija ei voinut ohjelmoida, ohjelmaa koska ohjelma oli ohjelmoitu ennenkun ohjelmoija, ohjelmoi, ohjelman!
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Moro! :)

Post by Latexi95 »

Tervetuloa foorumeille. :)

Jos haluat piirtää tekstiä tai kuvia kentän tai objektien päälle sinun pitää kutsua ensin DrawGamea, joka piirtää kentän ja objektit, ja vasta sen jälkeen piirtää kuvat ja teksti. Muuten objektit ja kartta piirretään tekstin päälle.
Törmäykset saat tarkistettua GetCollisionin avulla.
Objektit piirretään DrawScreenissä tai DrawGamessa lataus järjestyksessä eli viimeksi ladattu ensimmäisenä ellei järjestystä ole muutettu ObjectOrderilla.

Toivottavasti tämä selitys auttaa ongelman ratkaisemisessa.
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Moro! :)

Post by axu »

Tervetuloa :)
Voit tarkastaa, osuvatko objektit toisiinsa funktiolla ObjectsOverlap (vaikutat sen verran fiksulta ettei tarvi tuosta enempää selittää ;) ). EDIT: tai jos asetat törmäystunnistuksen SetCollisionilla, käytä GetCollisionia, kuten latexi ehdotti.
Saat objektin Talo2 esiintymään, kun lataat sen jo alkuvaiheessa samaan aikaan kuin muutkin objektit, mutta piilotat sen ShowObject-komennolla. Kun erakko törmää taloon, laitat sen näkyville käyttämällä sitä komentoa uudelleen. Tekstin näyttämiseen on kaksi vaihtoehtoa: 1) sinulla on muuttuja, joka sisältää tiedon siitä, onko erakko osunut taloon, ja käytät sitten Text-komentoa näyttääksesi tekstin (muista kutsua DrawGame ennen tätä) tai 2) lisäät tekstin AddTextillä. Jos haluat, että teksti häipyy jonkun ajan kuluttua, ota aika muistiin, milloin törmäys tapahtuu (Timer() muuttujaan) ja piilota teksti, kun Timerin arvon ja muuttujan erotus on tarpeeksi suuri.
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
Post Reply