Page 1 of 2

ongelma huoneiden kans

Posted: Wed Oct 03, 2007 5:28 pm
by nassi-setä
tää on ehkä liijan pieni omaa topickkii varte mut kun teen yläviistost kuvattuu rgp peliä nii mten siihen sais toteutettuu huoneet
siis ku ukko menee talon oven kohalle ja painaa entterii nii se menis sisää?

Re: ongelma huoneiden kans

Posted: Wed Oct 03, 2007 5:42 pm
by TheFish
Tee type huoneita varten ja laitat siihen typeen kaikille huoneille oman numeron (huoneID tai jotain vastaavaa). Sitten laitat kartan data kerrokseen oven kohdalle sen huoneen numeron. Kun enteriä painetaan, tarkistat onko data kerroksessa jonkun huoneen numero, ja jos on niin siirryt siihen huoneeseen.
En ole testannut tuommoista, mutta saattaisi toimia.

Re: ongelma huoneiden kans

Posted: Wed Oct 03, 2007 6:38 pm
by nassi-setä
siis miten ne huaneet tehää ku laitaa gosub huone
ni se menee huone:
mitä mitä sit huoneesee laitetaa ladataaks mappi ja kaikki muut vai?

Re: ongelma huoneiden kans

Posted: Wed Oct 03, 2007 6:56 pm
by Pie2
Jos gosubilla teet niin kannattais tehdä näin:

Code: Select all

IF painetaan entteriä oikeassa kohdassa THEN
gosub laatahuone 2 & laita objektit oikeille paikoilleen
ENDIF
En tosin suosittele gosubin käyttöä. Jos mahdollista niin tee se funktioilla.

Re: ongelma huoneiden kans

Posted: Thu Oct 04, 2007 4:59 pm
by nassi-setä
pitääks sie "huoneessa" ladata objektit mappi ja muut tsydeemit sitä hain takaa
ja huonee tarkotus on ooll trainig-room siel siis mätkitää äijii

Re: ongelma huoneiden kans

Posted: Thu Oct 04, 2007 9:24 pm
by FuJi
nassi-setä wrote:pitääks sie "huoneessa" ladata objektit mappi ja muut tsydeemit sitä hain takaa
ja huonee tarkotus on ooll trainig-room siel siis mätkitää äijii
Tietysti mapit ja objektit täytyy ladata.

Itse tekisin tällaisen systeemin luultavasti functionoilla.

Eli tarkista mapin data-kerros GetMap-komennolla, jos ukkon koordinaatit täsmäävät tilen kanssa niin...

Code: Select all

If GetMap (3, ObjectX(ukko), ObjectY(ukko)) = 1 Then
*toiminnot*
EndIf
Tarkistetaan data-kerros ja jos ukon koordinaatit täsmäävät tileen ja enter on pohjassa siirrytään huoneeseen:

Code: Select all

If GetMap (3, ObjectX(ukko), ObjectY(ukko)) = 1 And KeyDown(cbKeyReturn) Then
huone1()
Endif
Tämä ei kuitenkaan ihan näin pelkästään toimi vaan tarvitaan huone1 niminen function, jossa ladataan uusi mappi ja piilotetaan mahdollinen vanha mappi, ladataan uudet objektit (pelihahmoa, joka on ladattu jo aikaisemmin ei tarvitse enää ladata).

Ja jos haluat huoneeseen vihuja, joita saa mätkiä sen voi luoda vaikka typeillä. Luo type opas manuaalista ;)

Re: ongelma huoneiden kans

Posted: Fri Oct 05, 2007 2:47 pm
by nassi-setä
ongelmana on se etten älyy yhtikäs mitään funktioista

Re: ongelma huoneiden kans

Posted: Fri Oct 05, 2007 2:55 pm
by FuJi
Functioilla luodaan lisää komentoja CB:hen. Funktio voi toimia siis samalla tavalla kuin esimerkiksi kuin LoadObject, mutta sinun täytyy itse "rakentaa" functio eli tavallaan luoda uusi komento.

Re: ongelma huoneiden kans

Posted: Fri Oct 05, 2007 9:46 pm
by nassi-setä
ok,mut tuli toine ongnelma se valittaa sitä:can`t find missing REPEAT

täs koodii mikä olis vikana

Code: Select all

Type AMMUS
Field obj
EndType 

Type VIHUT
Field obj2
Field elu
Field ase
EndType 



kartta = LoadMap("Media\alku1.til","Media\tileset3.bmp")
PlayObject kartta,0,0,1
miekka=LoadObject("media\miekka.bmp",90)

ukko1=LoadObject("media\vasen.bmp")
 MaskObject ukko1,cbMagenta
ShowObject ukko1,OFF
ukko2=LoadObject("media\oikee.bmp")
 MaskObject ukko2,cbMagenta
ShowObject ukko2,OFF
ukko3=LoadObject("media\taka.bmp")
 MaskObject ukko3,cbMagenta
 ShowObject ukko3,OFF
 

ukko4=LoadObject("Media\etu.bmp")
MaskObject ukko4,cbMagenta
ShowObject ukko4,OFF

talo=LoadObject("media\talo.bmp")

pati=LoadObject("media\nuoli.bmp",90)

ukko = CloneObject (ukko4) 
M_vihu=LoadObject("media\etu.bmp")
SetupCollision ukko, kartta, 1, 4, 2



lvl=1
attack=1
defu=1
Strr=1




AddText "LVL="+lvl
AddText "attack="+attack
AddText "defense="+defu
AddText "strenght="+Strr










Repeat

CloneObjectPosition miekka,ukko
MoveObject miekka,7



PositionObject talo,-50,80



    'Ukon ohjaus
    If LeftKey() Then
    MoveObject ukko,-5
    PaintObject ukko,ukko1
    EndIf 
    
    
    If RightKey() Then
    MoveObject ukko,5
    PaintObject ukko,ukko2
    EndIf 
    
    
    If UpKey() Then
    MoveObject ukko,0,-5  
    PaintObject ukko,ukko3
    EndIf 
    
    
    If DownKey() Then
    MoveObject ukko,0,5
    PaintObject ukko,ukko4
    
EndIf 
    UpdateGame

    CloneCameraPosition ukko
    
  If KeyDown(cbKeyZ) Then TurnObject miekka,12

 If KeyDown(cbKeyX) Then TurnObject miekka,-12
 
 
If ObjectsOverlap(ukko,talo) And KeyHit(28) Then
   vihu.VIHUT = New(VIHUT) 'luo uusi ammus
        vihu\obj2=CloneObject(M_vihu) 'tee klooni
        
         vihu.VIHUT = New(VIHUT) 'luo uusi ammus
        vihu\ase=CloneObject(miekka)
          CloneObjectPosition vihu\ase,vihu\obj2                
        'käännetään pati samaan suuntaan
         
        
    'Päivitä kaikki ammukset
    For vihu.VIHUT = Each VIHUT
        MoveObject vihu\obj2,1
        PointObject vihu\obj2,ukko
        PointObject Vihu\ase,ukko
        SetupCollision ukko,vihu\obj2
        vihu\elu=20
        If vihu\elu=0 Then
        DeleteObject vihu\obj2
        Delete vihu
        EndIf
        
If ObjectsOverlap(miekka,vihu\obj2) Then
vihu\elu=-5        
 EndIf            
    Next vihu

 
 
 
 
 
    DrawScreen

Until EscapeKey()

Re: ongelma huoneiden kans

Posted: Fri Oct 05, 2007 9:49 pm
by Harakka
Yksi endiffi puuttui, ja lisäksi SetupCollisionista puuttui törmäystyypin parametrit. Kolmanteja virheenä yritit käyttää vihu\obj21:stä, jota ei ollut olemassa. Korjasin virheet.

Code: Select all

Type AMMUS
Field obj
EndType 

Type VIHUT
Field obj2
Field elu
Field ase
EndType 



kartta = LoadMap("Media\alku1.til","Media\tileset3.bmp")
PlayObject kartta,0,0,1
miekka=LoadObject("media\miekka.bmp",90)

ukko1=LoadObject("media\vasen.bmp")
MaskObject ukko1,cbMagenta
ShowObject ukko1,OFF
ukko2=LoadObject("media\oikee.bmp")
MaskObject ukko2,cbMagenta
ShowObject ukko2,OFF
ukko3=LoadObject("media\taka.bmp")
MaskObject ukko3,cbMagenta
ShowObject ukko3,OFF


ukko4=LoadObject("Media\etu.bmp")
MaskObject ukko4,cbMagenta
ShowObject ukko4,OFF

talo=LoadObject("media\talo.bmp")

pati=LoadObject("media\nuoli.bmp",90)

ukko = CloneObject (ukko4) 
M_vihu=LoadObject("media\etu.bmp")
SetupCollision ukko, kartta, 1, 4, 2



lvl=1
attack=1
defu=1
Strr=1




AddText "LVL="+lvl
AddText "attack="+attack
AddText "defense="+defu
AddText "strenght="+Strr










Repeat

CloneObjectPosition miekka,ukko
MoveObject miekka,7



PositionObject talo,-50,80



    'Ukon ohjaus
    If LeftKey() Then
    MoveObject ukko,-5
    PaintObject ukko,ukko1
    EndIf 
    
    
    If RightKey() Then
    MoveObject ukko,5
    PaintObject ukko,ukko2
    EndIf 
    
    
    If UpKey() Then
    MoveObject ukko,0,-5  
    PaintObject ukko,ukko3
    EndIf 
    
    
    If DownKey() Then
    MoveObject ukko,0,5
    PaintObject ukko,ukko4
    
EndIf 
    UpdateGame

    CloneCameraPosition ukko
    
  If KeyDown(cbKeyZ) Then TurnObject miekka,12

If KeyDown(cbKeyX) Then TurnObject miekka,-12


If ObjectsOverlap(ukko,talo) And KeyHit(28) Then
   vihu.VIHUT = New(VIHUT) 'luo uusi ammus
        vihu\obj2=CloneObject(M_vihu) 'tee klooni
        
         vihu.VIHUT = New(VIHUT) 'luo uusi ammus
        vihu\ase=CloneObject(miekka)
          CloneObjectPosition vihu\ase,vihu\obj2                
        'käännetään pati samaan suuntaan
 EndIf
        
    'Päivitä kaikki ammukset
    For vihu.VIHUT = Each VIHUT
        MoveObject vihu\obj2,1
        PointObject vihu\obj2,ukko
        PointObject Vihu\ase,ukko
        SetupCollision ukko,vihu\obj2,1,4,2
        vihu\elu=20
        If vihu\elu=0 Then
        DeleteObject vihu\obj2
        Delete vihu
        EndIf
        
If ObjectsOverlap(miekka,vihu\obj2) Then
vihu\elu=-5        
EndIf            
    Next vihu






    DrawScreen

Until EscapeKey()

Re: ongelma huoneiden kans

Posted: Fri Oct 05, 2007 10:50 pm
by koodaaja
Itse tekisin ison kartan, jossa kaikki huoneet ovat. Huoneet voivat olla myös erillään, jolloin seuraavaa ei näe seinän läpi.

ÖffTöpik:
Puhutaan mieluummin suomea, eikö? Ei siis function, functio tms. vaan funktio, tai tuttavallisemmin funkkari.

Re: ongelma huoneiden kans

Posted: Sat Oct 06, 2007 10:38 am
by nassi-setä
kiitti sain peliini tosipaljo etee päin

tää ei kyl liity tähän mut voiko komennolla RAND tehä tämmösen et ku miekka osuu vihuu niise arpoo kuoleeko vai torjuuko vihu iskun?

Re: ongelma huoneiden kans

Posted: Sat Oct 06, 2007 11:29 am
by Harakka
nassi-setä wrote:kiitti sain peliini tosipaljo etee päin

tää ei kyl liity tähän mut voiko komennolla RAND tehä tämmösen et ku miekka osuu vihuu niise arpoo kuoleeko vai torjuuko vihu iskun?
Kyllä.

Code: Select all

If Rand(1) then
  'vihollinen kuolee
Else
  'vihollinen torjuu
Endif

Re: ongelma huoneiden kans

Posted: Sat Oct 06, 2007 3:02 pm
by nassi-setä
mä oon teijän mielest varmaa avuton pikku kakru ku kyselen koko ajan kaikkee
mut kummiskin miten pystyy laittaa tyypeil tehyille vihuille heltin oon yrittäny käyttää tämmöstä ku

Code: Select all

 Type VIHUT
    Field obj2
    Field elu
    EndType
mut en älyy miten tot field elu:uu käytetää

Re: ongelma huoneiden kans

Posted: Sat Oct 06, 2007 3:13 pm
by iTKEVAnAKKI
Esim kun ukko menettää enkkua komennat

Code: Select all

For vihu.VIHUT=Each VIHUT
  vihu\elu-1
next vihu
Toivottavasti tajusit idean. Ja jos haluat laittaa alussa, kun luot vihun, enkuksi vaikka 100 laitat vain luonnin perään vihu\elu=100 eli aivan niinkuin muuttujaa :D Ja en pidä sua tyhmänä, itelläkin oli typeriä ongelmia aluksi...

Re: ongelma huoneiden kans

Posted: Sun Oct 07, 2007 1:51 pm
by nassi-setä
tokavika kysymys voisko joku tehä mulle xp laskurin etku miekka osuu vihuu nii tulee vaik 2xp tä ja sit ku on vaik 20xp nii attack nousee levelil?
koitin tehä mut ei onnistunu

Re: ongelma huoneiden kans

Posted: Sun Oct 07, 2007 2:21 pm
by Harakka

Code: Select all

Repeat
If keyhit(cbkeyspace) then 'vaihda tohon vihuun osuminen
  xp + 2
EndIf
If xp > 20 then
  lvl + 1
  xp = 0
Endif

Text 0,0,"XP: " + xp
text 0,13,"LVL: " + lvl
DrawScreen
Forever
Vaikka näin.

Re: ongelma huoneiden kans

Posted: Sun Oct 07, 2007 5:23 pm
by FuJi
nassi-setä wrote:tokavika kysymys voisko joku tehä mulle xp laskurin etku miekka osuu vihuu nii tulee vaik 2xp tä ja sit ku on vaik 20xp nii attack nousee levelil?
koitin tehä mut ei onnistunu
viewtopic.php?f=12&t=61

Re: ongelma huoneiden kans

Posted: Sat Oct 13, 2007 4:12 pm
by nassi-setä
taas kysyisin tämmöstä että miten pystyy tekemään sillee et miekka liikkuu sopivaa vauhtia jonkin matkaa sivulle ja sit palaa takas
ymmärskö kukaa?

Re: ongelma huoneiden kans

Posted: Sat Oct 13, 2007 6:51 pm
by FuJi
nassi-setä wrote:taas kysyisin tämmöstä että miten pystyy tekemään sillee et miekka liikkuu sopivaa vauhtia jonkin matkaa sivulle ja sit palaa takas
ymmärskö kukaa?
Sinun täytyy luoda se frameilla. Oletan, että se on ukko, jonka tulisi lyödä miekalla.
Eli siis sisnun täytyy luoda kuvaan frameja ja se objekti täytyy ladata loadanimobjectilla.
Esimerkkinä tästä on vaikka CoolBasicin media kansiossa oleva ampu.bmp kuva. Jokaisen framen täytyy olla samankokoinen.
Katso vaikka oppitunti 19: Painovoima. Siinä käytetään animoituja objekteja.

Eli ne ladataan näin:

Code: Select all

ukko = loadanimobject("media\ukko.bmp",30,20,11,0.5)
Suluissa on enismmäisenä tiedosto, joka ladataan. Toisena on animaation yhden framen leveys. Kolmanteka sen korkeus. Neljäntenä framejen yhteismäärä ja viiemisenä toistonopeus. Animaation voi toistaa PlayObject komennolla.