Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Rufi
Member
Posts: 50
Joined: Fri Dec 21, 2007 11:12 am

Re: Tyhmät kysymykset

Post by Rufi »

Character wrote:Olen melkein saanut aseenvaihdon toimimaan peliini, mutta on vielä yksi ongelma.
Kun vaihtaa aseen nyrkkeihin niin edellisen aseen luodit jäävät ilmaan.
Ja tässä tulee koodia:

Code: Select all

Type AMMUS
    Field obj
    Field nopeus
    Field teho
End Type

FrameLimit 40 'rajoita nopeutta

ukko=LoadObject("Media\soldier.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF
pistooli=LoadSound("Media\Gun 1.wav")
kivääri=LoadSound("Media\blaster.wav")

ase=2

Repeat

    Select ase
    Case 1
        a$="nyrkit"
        asenopeus=0
        lataus=0
        ääni=0
    Case 2
        a$="pistooli"
        asenopeus=6
        lataus=25
        ääni=pistooli
    Case 3
        a$="kivääri"
        asenopeus=15
        lataus=5
        ääni=kivääri
    End Select

    If KeyHit(28) Then ase=ase+1
    If ase>3 Then ase=1
    
    'Ohjaa ukkoa NUOLILLA
    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2    

    'Ammu-systeemi. Vain, jos ase on ladattu
    If KeyDown(cbKeyRControl) And reload=0 And ase>1 Then    
        luoti.AMMUS = New(AMMUS) 'luo uusi ammus
        luoti\obj=CloneObject(pati) 'tee klooni
        'asetetaan pati samaan paikkaan
        CloneObjectPosition luoti\obj,ukko                
        'käännetään pati samaan suuntaan
        CloneObjectOrientation luoti\obj,ukko
        PlaySound ääni
        reload=lataus 'aseen lataus        
    EndIf
    'päivitä aseen lataaminen
    If reload>0 Then reload=reload-1

    'Päivitä kaikki ammukset
    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,asenopeus
        If ObjectX(luoti\obj)<-180 Or ObjectX(luoti\obj)>180 Or ObjectY(luoti\obj)<-130 Or ObjectY(luoti\obj)>130 Then
            'ammus ylittää rajan -> tuhoa se                
            DeleteObject luoti\obj 'poista objekti
            Delete luoti 'poista luoti kokonaan
        EndIf        
    Next luoti

    'tämä ennen muuta grafiikkaa (box)
    DrawGame

    'piirrä "kenttä"
    Color cbOrange
    Box 20,20,360,260,OFF    

    Color cbred
    Text 20,20,"Aseesi: "+a$
    Text 20,35,"Aseennopeus: "+asenopeus

DrawScreen

Forever
Ongelma piilee siinä, että asetat asenopeuden 0:ksi, kun vaihdetaan nyrkkeihin, jolloin luodit jäävät ilmaan, koska liikutat niitä nollalla. Eli ongelma ratkeaa muuttamalla koodia hiukan:

Code: Select all

        Case 1
            a$="nyrkit"
            asenopeus=15  <---- tämä vaihtuu 0 -> 15 (rivi 22)
            lataus=0
            ääni=0
Koska vaihdat asetta vain ylöspäin, niin asenopeudeksi laitetaan 15, joka on edellisen aseen nopeus. Tällöin luodit poistuvat yhtä nopeaa kuin ne ammuttiin.

P.S.
Vielä parempi systeemi olisi varmaankin se, että kun painetaan Return, eli vaihdetaan asetta niin silloin kutsuttaisiin funktiota, joka asettaa tarvittavat muuttujat ja muut hommat oikeiksi, kuin se, että se tehtäisiin jokaisella kierroksella.

//Offtopic
@phons, se on Shotgun, ei ShotGun ;D
I'm gonna be the Pira... CoolBasic King!
D. Adams wrote:The knack of flying is learning how to throw yourself at the ground and miss.
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tyhmät kysymykset

Post by Character »

Joo, sain toimimaan.
Funktio voisi kyllä olla parempi keino.. Täytyy koettaa. :)
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset

Post by valscion »

Character wrote:Olen melkein saanut aseenvaihdon toimimaan peliini, mutta on vielä yksi ongelma.
Kun vaihtaa aseen nyrkkeihin niin edellisen aseen luodit jäävät ilmaan.
Ja tässä tulee koodia:

Code: Select all

Type AMMUS
    Field obj
    Field nopeus
    Field teho
End Type

FrameLimit 40 'rajoita nopeutta

ukko=LoadObject("Media\soldier.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF
pistooli=LoadSound("Media\Gun 1.wav")
kivääri=LoadSound("Media\blaster.wav")

ase=2

Repeat

    Select ase
    Case 1
        a$="nyrkit"
        asenopeus=0
        lataus=0
        ääni=0
    Case 2
        a$="pistooli"
        asenopeus=6
        lataus=25
        ääni=pistooli
    Case 3
        a$="kivääri"
        asenopeus=15
        lataus=5
        ääni=kivääri
    End Select

    If KeyHit(28) Then ase=ase+1
    If ase>3 Then ase=1
    
    'Ohjaa ukkoa NUOLILLA
    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2    

    'Ammu-systeemi. Vain, jos ase on ladattu
    If KeyDown(cbKeyRControl) And reload=0 And ase>1 Then    
        luoti.AMMUS = New(AMMUS) 'luo uusi ammus
        luoti\obj=CloneObject(pati) 'tee klooni
        'asetetaan pati samaan paikkaan
        CloneObjectPosition luoti\obj,ukko                
        'käännetään pati samaan suuntaan
        CloneObjectOrientation luoti\obj,ukko
        PlaySound ääni
        reload=lataus 'aseen lataus        
    EndIf
    'päivitä aseen lataaminen
    If reload>0 Then reload=reload-1

    'Päivitä kaikki ammukset
    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,asenopeus
        If ObjectX(luoti\obj)<-180 Or ObjectX(luoti\obj)>180 Or ObjectY(luoti\obj)<-130 Or ObjectY(luoti\obj)>130 Then
            'ammus ylittää rajan -> tuhoa se                
            DeleteObject luoti\obj 'poista objekti
            Delete luoti 'poista luoti kokonaan
        EndIf        
    Next luoti

    'tämä ennen muuta grafiikkaa (box)
    DrawGame

    'piirrä "kenttä"
    Color cbOrange
    Box 20,20,360,260,OFF    

    Color cbred
    Text 20,20,"Aseesi: "+a$
    Text 20,35,"Aseennopeus: "+asenopeus

DrawScreen

Forever
Kun kerran olet tyyppiin AMMUS määritellyt kentän "nopeus", niin miksi et käytä sitä? Koska nyt jos pistoolin ammus on ilmassa ja korjaat sen ammus-ongelman Rufin mainitsemalla tavalla, liikkuu yhtäkkiä PISTOOLIN ammus 15, vaikka sen pitäisi liikkua vain 6! Eli kun luot uuden ammuksen tyyppiin, aseta samalla kentän "nopeus" arvo samaksi kuin asenopeus on sillä hetkellä. Niinkuin näin:

Code: Select all

    'Ammu-systeemi. Vain, jos ase on ladattu
    If KeyDown(cbKeyRControl) And reload=0 And ase>1 Then    
        luoti.AMMUS = New(AMMUS) 'luo uusi ammus
        luoti\obj=CloneObject(pati) 'tee klooni
        luoti\nopeus=asenopeus 'aseta luodille nopeus <------------
        'asetetaan pati samaan paikkaan
        CloneObjectPosition luoti\obj,ukko                
        'käännetään pati samaan suuntaan
        CloneObjectOrientation luoti\obj,ukko
        PlaySound ääni
        reload=lataus 'aseen lataus        
    EndIf
    'päivitä aseen lataaminen
    If reload>0 Then reload=reload-1

    'Päivitä kaikki ammukset
    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,luoti\nopeus 'liikuta tyyppiin asetetun nopeuden mukaan <------------
        If ObjectX(luoti\obj)<-180 Or ObjectX(luoti\obj)>180 Or ObjectY(luoti\obj)<-130 Or ObjectY(luoti\obj)>130 Then
            'ammus ylittää rajan -> tuhoa se                
            DeleteObject luoti\obj 'poista objekti
            Delete luoti 'poista luoti kokonaan
        EndIf        
    Next luoti
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tyhmät kysymykset

Post by Character »

Kun kerran olet tyyppiin AMMUS määritellyt kentän "nopeus", niin miksi et käytä sitä?
Oho! En muistanut käyttää sitä. :shock: Olenpa tyhmä.
sillie
Newcomer
Posts: 19
Joined: Sun Dec 14, 2008 8:56 pm

Re: Tyhmät kysymykset

Post by sillie »

Jeps, eli miten saan tyypin globaaliksi?

En voi käyttää funktioissani tyyppejä, koska ne eivät ilmeisesti ole globaaleita vaan tulee palautetta ettei sellaista tyyppiä ole. :?
Astigma
Moderator
Moderator
Posts: 195
Joined: Sun Aug 26, 2007 5:56 pm
Location: Kuopio, Finland
Contact:

Re: Tyhmät kysymykset

Post by Astigma »

sillie wrote:Jeps, eli miten saan tyypin globaaliksi?

En voi käyttää funktioissani tyyppejä, koska ne eivät ilmeisesti ole globaaleita vaan tulee palautetta ettei sellaista tyyppiä ole. :?
Voit lähettää tyypin ilmentymän kokonaislukutyyppisen viitteen funktiolle syötteenä ja muodostaa sen avulla funktiossa tyypin ilmentymän uudestaan. Funktiot, joita tarvitset olivat jotain tyyliin ObjectToIngeter ja IntegerToObject jos yhtään muistan oikein.

EDIT: Muistin väärin (tietenkin). Eli funktiot ovat ConvertToInteger ja ConvertToType.
sillie
Newcomer
Posts: 19
Joined: Sun Dec 14, 2008 8:56 pm

Re: Tyhmät kysymykset

Post by sillie »

Kiitos. Ilmeisesti ne olivat ConvertToType ja ConvertToInteger :)
Roni L
Newcomer
Posts: 4
Joined: Fri Dec 12, 2008 4:07 pm

Re: Tyhmät kysymykset

Post by Roni L »

Tässä olisi taas yksi tyhmäkysymys.
Eli miten saisin yhteenlaskun?
Kun laitain tällä tavalla:

Code: Select all

eka$ = 1
toka$ = 2
Text 30,70, eka $+ toka$
summa olisi muka 12.
Eli miten saisin, että ohjelma laskisi muuttujat yhteen, eikä vain tulostaisi niitä peräkkäin?
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Tyhmät kysymykset

Post by TheDuck »

Olet asettanut nuo muuttujat merkkijonoiksi. Käytä integer-tyyppisiä muuttujia, jos haluat laskea lukuja..

Code: Select all

eka = 1
toka = 2
Text 30,70, eka+toka
$ merkki siis tekee muuttujasta merkkijonon
^^
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

pikku ongelma tuli eteen vihollisen ammunna on jotain vikaa ? :? vihollinen ei ole tehty typellä
ja omaa ampumiskoodia en viitsi laitaa koska se ei toimi ja sen on roskaa.. joten voiko joku tehdä nopean esimerkin? RiiTTää ,kunhan luoti lähtee vihollisesta.
esimerkissä voisi olla 2 objectia vihu tähtää sitä ja ampuu muuta ei tarvitakkaan.. :)

EDIT:

Kiitos! :)

Last edited by rami123 on Tue Dec 16, 2008 8:11 pm, edited 1 time in total.
Jonhu
Active Member
Posts: 186
Joined: Mon Aug 04, 2008 5:45 pm

Re: Tyhmät kysymykset

Post by Jonhu »

muokattuna esimerkki...

Code: Select all

'Esimerkki 18 : Ammukset (osa 2)
'================================================

'! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
'Aja tämä ohjelma painamalla F5.
'Lopeta ohjelma painamalla ESC.
'! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !

FrameLimit 40 'rajoita nopeutta

vihu=LoadObject("Media\guy.bmp",72)
ukko=LoadObject("Media\soldier.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF

AddText "Nuolista ohjaa, CTRL=ampuu"
ScreenPositionObject vihu,100,100
Repeat

    'Ohjaa ukkoa NUOLILLA
    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2    

    'Ammu-systeemi. Vain, jos ase on ladattu
    PointObject vihu,ukko
    
    If luotielossa=0 Then    
        'luoti.AMMUS = New(AMMUS) 
        luotiobj=CloneObject(pati) 'tee klooni
        'asetetaan pati samaan paikkaan
        CloneObjectPosition luotiobj,vihu              
        'käännetään pati samaan suuntaan
        CloneObjectOrientation luotiobj,vihu        
 
        luotielossa=1
    EndIf


    'Päivitä kaikki ammukset
    If luotielossa=1
        MoveObject luotiobj,6
        If ObjectX(luotiobj)<-180 Or ObjectX(luotiobj)>180 Or ObjectY(luotiobj)<-130 Or ObjectY(luotiobj)>130 Then del=ON
        If ObjectsOverlap (luotiobj,ukko,3) Then del=ON
        
        If del=ON
            'ammus ylittää rajan -> tuhoa se                
            DeleteObject luotiobj 'poista objekti
            del=OFF
            luotielossa=0
        EndIf        
    EndIf

    'tämä ennen muuta grafiikkaa (box)
    DrawGame

    'piirrä "kenttä"
    Color cbOrange
    Box 20,20,360,260,OFF    
    
    DrawScreen

Until EscapeKey()
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset

Post by Jani »

siis... Miksi kuva lopettaa liikkumisen kun sen suuntaa käännetään?

Code: Select all

SAFEEXIT OFF

Type ROTTA
    Field x#
    Field y#
    Field suunta
    Field nopeus#
EndType

For i=1 To 1
    h.ROTTA=New (ROTTA)
    
    h\x=20
    h\y=20
    h\suunta=1
    h\nopeus=0.01
Next i

rat=MakeImage(5,5)
DrawToImage rat
    Color cbblackskin
    Circle 0,0,5
DrawToScreen

Repeat

    DrawImage rat,h\x,h\y
    
    If Str(h\suunta)=1 Or Str(h\suunta)=3 And KeyHit(cbkeyleft) Then h\suunta+1
    If Str(h\suunta)=1 Or Str(h\suunta)=3 And KeyHit(cbkeyright) Then h\suunta-1
    If Str(h\suunta)=2 Or Str(h\suunta)=4 And KeyHit(cbkeyup) Then h\suunta+1
    If Str(h\suunta)=2 Or Str(h\suunta)=4 And KeyHit(cbkeydown) Then h\suunta-1
    
    If Str(h\suunta)=1 Then h\y+h\nopeus
    If Str(h\suunta)=2 Then h\x+h\nopeus
    If Str(h\suunta)=3 Then h\y-h\nopeus
    If Str(h\suunta)=4 Then h\x-h\nopeus
    
    DrawScreen
    
    h\nopeus+0.01
    
Until EscapeKey()

For h.ROTTA=Each ROTTA
    Delete h
Next h
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Ozcar
Advanced Member
Posts: 439
Joined: Mon Aug 27, 2007 8:43 pm
Location: Helsinki

Re: Tyhmät kysymykset

Post by Ozcar »

Et vahingossa käännä sen suuntaa nollaksi? Tee ainakin muuten vain systeemi, jolla 0->4 ja toisin päin.
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.

Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
Jonhu
Active Member
Posts: 186
Joined: Mon Aug 04, 2008 5:45 pm

Re: Tyhmät kysymykset

Post by Jonhu »

Jani wrote:siis... Miksi kuva lopettaa liikkumisen kun sen suuntaa käännetään?
Suunnan vaihdot toteutettu. (Olisi ollut yksinkertaisempiakin tapoja toteuttaa tuo)
Mutta ajanmyötä tuo kulma kallistuu, mutta onko se tarkoitus?

Code: Select all

SAFEEXIT OFF

Type ROTTA
    Field x#
    Field y#
    Field suunta
    Field nopeus#
EndType

For i=1 To 1
    h.ROTTA=New (ROTTA)
   
    h\x=20
    h\y=20
    h\suunta=1
    h\nopeus=0.01
Next i

rat=MakeImage(5,5)
DrawToImage rat
    Color cbblackskin
    Circle 0,0,5
DrawToScreen

Repeat

    DrawImage rat,h\x,h\y
   
    If Str(h\suunta)=1 Or Str(h\suunta)=3 And KeyHit(cbkeyleft) Then h\suunta=4 
    If Str(h\suunta)=1 Or Str(h\suunta)=3 And KeyHit(cbkeyright) Then h\suunta=2
    If Str(h\suunta)=2 Or Str(h\suunta)=4 And KeyHit(cbkeyup) Then h\suunta=3
    If Str(h\suunta)=2 Or Str(h\suunta)=4 And KeyHit(cbkeydown) Then h\suunta=1
   
    If Str(h\suunta)=1 Then h\y+h\nopeus
    If Str(h\suunta)=2 Then h\x+h\nopeus
    If Str(h\suunta)=3 Then h\y-h\nopeus
    If Str(h\suunta)=4 Then h\x-h\nopeus
   
    DrawScreen
   
    h\nopeus+0.01
   
Until EscapeKey()

For h.ROTTA=Each ROTTA
    Delete h
Next h
odezzz
Newcomer
Posts: 6
Joined: Tue Dec 16, 2008 6:59 pm

Luultavasti aika tyhmiä kysymyksiä...

Post by odezzz »

Miten saisin sillee, et jos score menee yli 200 nii pääsisin seuraavaa rataa.. Ja miten saisin botit ampuu mua?Kiitti :)
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Luultavasti aika tyhmiä kysymyksiä...

Post by Sly_Jack0 »

Tämän olisi voinut laittaa tänne: viewtopic.php?f=10&t=28&st=0&sk=t&sd=a

Mutta, vastaan nyt tuohon ekaan:

Code: Select all

If score > 200 Then
    //Tähän radanvaihtokoodi
EndIf
Tuohon toiseen en nyt jaksa vastata, mutta koita muokkailla tota Learning Centerin Ammukset2-esimerkkiä.
odezzz
Newcomer
Posts: 6
Joined: Tue Dec 16, 2008 6:59 pm

Re: Luultavasti aika tyhmiä kysymyksiä...

Post by odezzz »

Toi juttu ei oikein toiminu... Voisitko kattoo mikä on vikana??



###################Koodi###########################
Toi juttu ei oikein toiminu... voisitko kattoo mikä on vikana???

Code: Select all

FrameLimit 40

SetWindow "Zombie Madness",2
 
 valikko:


    While True
        ' painikkeista voi tällä tavalla tehdä ehtolauseita, koska ne palauttavat
        ' toden (true, 1) kun niitä on painettu. Tällöin ehtolausekkin muuttuu
        ' todeksi, ja silloin toteutetaan haluttu asia.
        If button(10,10,100,20,"Start") Then Goto rata1
        If button(10,40,100,20,"Exit") then end
        DrawScreen
    Wend
   
    Function Button(x As integer,y As integer,w As integer,h As integer,t As String,s As integer = 5)
        ' painikkeen koodi
        If MouseX()>x And MouseY()>y And MouseX()<x+w And MouseY()<y+h Then
            If MouseDown(1) Then Color 200,200,200 Else Color 190,190,190
            If MouseUp(1) Then Return True
        Else
            Color 220,220,220
        EndIf
        Box x+s,y,w-(s*2),h    ' painikkeen pohja
        Box x,y+s,w,h-(s*2)
        Circle x,y,s*2
        Circle x+w-s*2,y,s*2
        Circle x+w-s*2,y+h-s*2,s*2
        Circle x,y+h-s*2,s*2
        ' painikkeen otsikko
        Color cbblack
        CenterText x+w/2,y+h/2-TextHeight(t)/2,t$
    EndFunction 



DrawScreen 


rata1:
Type zombis'nimi
Field obj'objecti
Field hp'energiat
Field dmg'vahinko
Field speed'nopeus
Field score'pisteet
Field id'minkälainen zombie on
EndType
Type bullets'ammukset
Field obj
Field hp
Field dmg
Field speed
Field id
EndType
Type upgs'asepäivitykset
Field obj
Field hp
Field id
EndType
'ladataan media
gun_sound=LoadSound("media\gun 1.wav")
upg_sound=LoadSound("media\whip.wav")
enemy_sound=LoadSound("media\sheep.wav")
map=LoadMap("media\cdm2.til","media\tileset.bmp")
hero=LoadObject("media\hero.bmp",32)
zombi=LoadObject("media\guy.bmp",32)
cow=LoadObject("media\cow.bmp",32)
bullet=LoadObject("media\bullet.bmp",720)
upg=LoadObject("media\bullet.bmp")
topower=LoadObject("media\fireball.bmp")
tospeed=LoadObject("media\bigbullet.bmp")
medikit=LoadObject("media\tatti.bmp")
tähtäin=LoadObject("media\crosshair.bmp")

    ShowObject topower,OFF
    ShowObject tospeed,OFF   
    ShowObject bullet,OFF
    ShowObject zombi,OFF
    ShowObject cow,OFF
    ShowObject medikit,OFF
    
    
If score > 20 Then Goto rata2
    


    
    
SetupCollision hero,map,1,4,2

hp=500'sinun energiat
powupg=34'Aseen aloitus teho
speedupg=100000000'aseen aloitus nopeus

Repeat''''''''''''''''''''''''''''''

If hp>0 Then 'jos on energiaa niin suritetaan kaikki
CloneCameraPosition hero
MoveObject hero, KeyDown(CBKEYw)*6- KeyDown(CBKEYs)*4
TurnObject hero, KeyDown(CBKEYa)*5- KeyDown(CBKEYd)*5
'Aseet''''''''''''''''''''''''''''''''''''''''

PositionObject tähtäin,MouseWX(),MouseWY()
ShowMouse OFF

PointObject hero,tähtäin





If MouseHit(1) And reload<0
    PlaySound gun_sound,40
    newBullet.BULLETS= New(BULLETS)
    newBullet\obj=CloneObject(bullet)
    newbullet\dmg=powupg
    newbullet\speed=speedupg
    CloneObjectPosition newBullet\obj,hero
    CloneObjectOrientation newbullet\obj,hero
    MoveObject newBullet\obj,24
    reload=15
    SetupCollision newbullet\obj,map,1,4,2
EndIf
reload-1
For iBullet.BULLETS= Each BULLETS
If CountCollisions(ibullet\obj) Then ibullet\hp-32
MoveObject iBullet\obj,6'llikutetaan luotia

Next iBullet
'Asepäivitykset''''''''''''''''''''''''''''''''
If uusi>220
    newupg.upgS= New(upgS)'thdään uusi
    newupg\obj=CloneObject(upg)
    newupg\hp=100
    newupg\id=Rand(1,3)
    If Newupg\id=1 Then PaintObject newupg\obj,topower
    If Newupg\id=2 Then PaintObject Newupg\obj,tospeed 
    If Newupg\id=3 Then PaintObject Newupg\obj,medikit
    
    'Asetetaan tavara kohtaan missä ei ole törmäystä
    For y=1 To MapWidth()
    For x=1 To MapWidth()
        If GetMap2(2,x,y)=0 Then PositionObject newupg\obj,Rand(-600,500),Rand(-600,600)
    Next x
    Next y
   
    uusi=0
EndIf
uusi+1
For iupg.upgS= Each upgS'aloitetaan kaikkien päivitysten käsittely
If ObjectsOverlap(iupg\obj,hero) Then iupg\hp=-1'jos törmätään niin tuhotaan tavara
If iupg\hp<0 Then'jos tuhotaan tavara
    PlaySound upg_sound'soitetaan ääni
    If iupg\id=1 Then powupg+1'lisätään aseen thoa
    If iupg\id=1 Then speedupg+1'nopeutta
    If iupg\id=3 Then hp+50'lisä
  
    DeleteObject iupg\obj'poistetaan tavara
    Delete iupg'ja sen jasen
EndIf
Next iupg
'zombit''''''''''''''''''''''''''''''''''''''''
If luo>130'jos luonti on suurempi kuin 130, niin tehdään zombie
    newzombi.zombiS= New(zombiS)
    newzombi\obj=CloneObject(zombi)
    'Asetetaan vihollinen kohtaan missä ei ole törmäystä
    For y=1 To MapWidth()
    For x=1 To MapWidth()
        If GetMap2(2,x,y)=0 Then PositionObject newzombi\obj,Rand(-600,500),Rand(-600,600)
    Next x
    Next y
   
    newzombi\id=Rand(1,2)
    If newzombi\id =1'Ykkös zombi
        newzombi\hp=Rand(90,110):newzombi\dmg=Rand(1,3):newzombi\speed=Rand(2,3):newzombi\score=Rand(10,20)'Asetetaan zombielle kentät
    EndIf
    If newzombi\id =2'kakkos zombi
        PaintObject newzombi\obj,cow
        newzombi\hp=Rand(110,130):newzombi\dmg=Rand(2,4):newzombi\speed=Rand(1,2):newzombi\score=Rand(15,25)'toiselle myös
    EndIf
    SetupCollision newzombi\obj,map,1,4,2
    luo=0
EndIf
luo+1
For izombi.zombiS= Each zombiS'Aloitetaan zombien läpikäynti
'Typerä tekoäly
sidle=Rand(-20,20)
If CountCollisions(izombi\obj) Then MoveObject izombi\obj,0,sidle'jos kosketaan deinään, niin stepataan

PointObject izombi\obj,hero'zombi tähtää pelaajaan
If ObjectsOverlap(izombi\obj,hero) Then hp-izombi\dmg

For ibullet.bullets=Each bullets
If ObjectsOverlap(ibullet\obj,izombi\obj) Then izombi\hp-ibullet\dmg Then ibullet\hp=-1
If Distance2(iBullet\obj,hero)>600 Or ibullet\hp<0 Then 'jos...niin tuhotaan ammus
    DeleteObject iBullet\obj
    Delete iBullet
EndIf
Next ibullet

MoveObject izombi\obj,izombi\speed'liikutetaan zombia nopeutensa verran

If izombi\hp<0 Then 'jos zombin energiat loppuu, niin tapetaan se ja annetaan pisteet
    PlaySound enemy_sound
    score+izombi\score
    DeleteObject izombi\obj
    Delete izombi
EndIf
Next izombi
EndIf

DrawGame'ettei teksti jää kartan alle
Text 10,10,"HP "+hp
Text 10,20,"score "+score
If hp<0 Or hp<-1 Or hp<-2 Or hp<-3 Or hp<-4 Or hp<-5 Then Goto valikko
DrawScreen

Forever

rata2:


map=LoadMap("media\map2.til","media\tileset.bmp")

    ShowObject topower,OFF
    ShowObject tospeed,OFF   
    ShowObject bullet,OFF
    ShowObject zombi,OFF
    ShowObject cow,OFF
    ShowObject medikit,OFF
    
    
If score=500 Then Goto valikko    
    
    
SetupCollision hero,map,1,4,2

hp=500'sinun energiat
powupg=34'Aseen aloitus teho
speedupg=100000000'aseen aloitus nopeus

Repeat''''''''''''''''''''''''''''''

If hp>0 Then 'jos on energiaa niin suritetaan kaikki
CloneCameraPosition hero
MoveObject hero, KeyDown(CBKEYw)*6- KeyDown(CBKEYs)*4
TurnObject hero, KeyDown(CBKEYa)*5- KeyDown(CBKEYd)*5
'Aseet''''''''''''''''''''''''''''''''''''''''

PositionObject tähtäin,MouseWX(),MouseWY()
ShowMouse OFF

PointObject hero,tähtäin





If MouseHit(1) And reload<0
    PlaySound gun_sound,40
    newBullet.BULLETS= New(BULLETS)
    newBullet\obj=CloneObject(bullet)
    newbullet\dmg=powupg
    newbullet\speed=speedupg
    CloneObjectPosition newBullet\obj,hero
    CloneObjectOrientation newbullet\obj,hero
    MoveObject newBullet\obj,24
    reload=15
    SetupCollision newbullet\obj,map,1,4,2
EndIf
reload-1
For iBullet.BULLETS= Each BULLETS
If CountCollisions(ibullet\obj) Then ibullet\hp-32
MoveObject iBullet\obj,6'llikutetaan luotia

Next iBullet
'Asepäivitykset''''''''''''''''''''''''''''''''
If uusi>220
    newupg.upgS= New(upgS)'thdään uusi
    newupg\obj=CloneObject(upg)
    newupg\hp=100
    newupg\id=Rand(1,3)
    If Newupg\id=1 Then PaintObject newupg\obj,topower
    If Newupg\id=2 Then PaintObject Newupg\obj,tospeed 
    If Newupg\id=3 Then PaintObject Newupg\obj,medikit
    
    'Asetetaan tavara kohtaan missä ei ole törmäystä
    For y=1 To MapWidth()
    For x=1 To MapWidth()
        If GetMap2(2,x,y)=0 Then PositionObject newupg\obj,Rand(-600,500),Rand(-600,600)
    Next x
    Next y
   
    uusi=0
EndIf
uusi+1
For iupg.upgS= Each upgS'aloitetaan kaikkien päivitysten käsittely
If ObjectsOverlap(iupg\obj,hero) Then iupg\hp=-1'jos törmätään niin tuhotaan tavara
If iupg\hp<0 Then'jos tuhotaan tavara
    PlaySound upg_sound'soitetaan ääni
    If iupg\id=1 Then powupg+1'lisätään aseen thoa
    If iupg\id=1 Then speedupg+1'nopeutta
    If iupg\id=3 Then hp+50'lisä
  
    DeleteObject iupg\obj'poistetaan tavara
    Delete iupg'ja sen jasen
EndIf
Next iupg
'zombit''''''''''''''''''''''''''''''''''''''''
If luo>130'jos luonti on suurempi kuin 130, niin tehdään zombie
    newzombi.zombiS= New(zombiS)
    newzombi\obj=CloneObject(zombi)
    'Asetetaan vihollinen kohtaan missä ei ole törmäystä
    For y=1 To MapWidth()
    For x=1 To MapWidth()
        If GetMap2(2,x,y)=0 Then PositionObject newzombi\obj,Rand(-600,500),Rand(-600,600)
    Next x
    Next y
   
    newzombi\id=Rand(1,2)
    If newzombi\id =1'Ykkös zombi
        newzombi\hp=Rand(90,110):newzombi\dmg=Rand(1,3):newzombi\speed=Rand(2,3):newzombi\score=Rand(10,20)'Asetetaan zombielle kentät
    EndIf
    If newzombi\id =2'kakkos zombi
        PaintObject newzombi\obj,cow
        newzombi\hp=Rand(110,130):newzombi\dmg=Rand(2,4):newzombi\speed=Rand(1,2):newzombi\score=Rand(15,25)'toiselle myös
    EndIf
    SetupCollision newzombi\obj,map,1,4,2
    luo=0
EndIf
luo+1
For izombi.zombiS= Each zombiS'Aloitetaan zombien läpikäynti
'Typerä tekoäly
sidle=Rand(-20,20)
If CountCollisions(izombi\obj) Then MoveObject izombi\obj,0,sidle'jos kosketaan deinään, niin stepataan

PointObject izombi\obj,hero'zombi tähtää pelaajaan
If ObjectsOverlap(izombi\obj,hero) Then hp-izombi\dmg

For ibullet.bullets=Each bullets
If ObjectsOverlap(ibullet\obj,izombi\obj) Then izombi\hp-ibullet\dmg Then ibullet\hp=-1
If Distance2(iBullet\obj,hero)>600 Or ibullet\hp<0 Then 'jos...niin tuhotaan ammus
    DeleteObject iBullet\obj
    Delete iBullet
EndIf
Next ibullet

MoveObject izombi\obj,izombi\speed'liikutetaan zombia nopeutensa verran

If izombi\hp<0 Then 'jos zombin energiat loppuu, niin tapetaan se ja annetaan pisteet
    PlaySound enemy_sound
    score+izombi\score
    DeleteObject izombi\obj
    Delete izombi
EndIf
Next izombi
EndIf

DrawGame'ettei teksti jää kartan alle
Text 10,10,"HP "+hp
Text 10,20,"score "+score
If hp<0 Or hp<-1 Or hp<-2 Or hp<-3 Or hp<-4 Or hp<-5 Then Goto valikko
DrawScreen

Forever  
######################################################



Sori, ku en osaa tehä sellast listaa mist voi painaa "select all" :oops:
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Luultavasti aika tyhmiä kysymyksiä...

Post by Sly_Jack0 »

Se lista tehään

Code: Select all

 - tageilla. En edes yritä ottaa tuosta koodistasi selkoa. Ensinnäkään tuon code-tagien puuttumisen takia ja toiseksi sitä ei ole sisennetty ollenkaan.
nyyh

Re: Luultavasti aika tyhmiä kysymyksiä...

Post by nyyh »

Se ei ole loopissa.

Muutenkin näyttää siltä, kuin olisit kopioinut ja liittänyt kaiken tuohon
Astigma
Moderator
Moderator
Posts: 195
Joined: Sun Aug 26, 2007 5:56 pm
Location: Kuopio, Finland
Contact:

Re: Luultavasti aika tyhmiä kysymyksiä...

Post by Astigma »

Lisäsin code-tagit. Sisennyksethän eivät siis näy, jos niitä code-tageja ei ole käytetty. Nyt ne sisennyksetkin näkyvät. Olkaapa siis hyvät.
Locked