Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
User avatar
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset

Post by temu92 » Sun Jan 18, 2009 6:50 pm

Paina sieltä ylhäältä vihreän nuolen vierestä Build EXE.

Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 3:16 pm

Re: Tyhmät kysymykset

Post by Character » Sun Jan 18, 2009 7:36 pm

Ai juu, enpä huomannut. :shock:

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 » Mon Jan 19, 2009 5:51 pm

mite saan tämän aseen vaihdon tehtyä? ongelmana on se että kun se vaihtaa miekan pistooliin niin se ei enää vaihda sitä eteen päin?apuaa
ja miksei ääni kuulu kun ampuu? se toimi ennen tätä aseenvaihtoa , mutta ei enää..

tässä koodi

Code: Select all

peli:

SCREEN 800,600
FrameLimit 40

//tehdään tyypit 
Type AMMUS 
  Field obj 
  Field hp
  Field dmg
End Type 

Type vihut
  Field obj
  Field id
  Field hp
  Field dmg
  Field score
EndType 


//pelin maasto
grass=MakeObjectFloor()
lawn=LoadImage("metsä.png")
PaintObject grass,lawn
PositionObject grass,0,0, -2 


//ladataan kaikki pelin objectit


////pelaajan jutut////
hiiri = LoadObject   ("tähtäin.png")

pelaaja = LoadObject ("ukkopistooli.png",72)
miekkaukko = LoadObject ("miekkaukko.png",72) : ShowObject miekkaukko,OFF 
pistooliukko = LoadObject ("ukkopistooli.png",72) :ShowObject pistooliukko,OFF 
konepistooliukko = LoadObject ("konepistooli.png",72) :ShowObject konepistooliukko,OFF 
pati=LoadObject("luoti.png")
ShowObject pati,OFF

////vihollisen jutut////
vihollinen1 = loadobject ("monsteri1.png",72)
vihollinen2 = loadobject ("monsteri2.png",72)
ShowObject vihollinen1,OFF 
ShowObject vihollinen2,OFF 

//ladataan musiikit ja äänet
pistooli = LoadSound      ("colt45.mp3")
konepistooli = LoadSound  ("machinegun.mp3")
miekka = LoadSound        ("sword.mp3")
lyöminen = LoadSound      ("bulletbody.mp3")


yläpalkki = LoadImage ("yläpalkki.png")




//laitetaan pelaajan hp , voima ,  kaikkea..

hp=100
voima=5
ammukset = 20

//tapot sekä pisteet

tapot=0
tapotpisteet=1000

//aseenvaihto

miekka=1
pistooli=0
konepistooli=0

If miekka = 1 Then 
PaintObject pelaaja,miekkaukko
EndIf 

If pistooli = 1 Then
PaintObject miekkaukko,pistooliukko
EndIf 

If konepistooli = 1 Then 
PaintObject pelaaja,konepistooliukko
EndIf 




Repeat//// 

//pelaajan ohjaus

PointObject pelaaja,hiiri

    If LeftKey() Then TurnObject pelaaja,5
    If RightKey() Then TurnObject pelaaja,-5
    If UpKey() Then MoveObject pelaaja,2
    If DownKey() Then MoveObject pelaaja,-2    

If pistooli=1 And MouseHit (1) And reload=0 Then   
      luoti.AMMUS = New(AMMUS) 
      luoti\obj=CloneObject(pati) 
      luotihp=2
      ammukset - 1
      PlaySound pistooli,50
      CloneObjectPosition luoti\obj,pelaaja               
      CloneObjectOrientation luoti\obj,pelaaja           
      reload=5       
EndIf


If konepistooli=1 and MouseHit (1) And reload=0 Then   
      luoti.AMMUS = New(AMMUS) 
      luoti\obj=CloneObject(pati) 
      ammukset - 1
      PlaySound konepistooli,50
      CloneObjectPosition luoti\obj,pelaaja               
      CloneObjectOrientation luoti\obj,pelaaja           
      reload=5       
EndIf

    If reload>0 Then reload=reload-1

     For luoti.AMMUS = Each AMMUS
      MoveObject luoti\obj,6 
      If Distance2(luoti\obj,pelaaja)>300  Then del=ON
      
      If del=ON
         DeleteObject luoti\obj
         Delete luoti
         del=OFF
      EndIf
      Next luoti

  If ammukset = 0 Then ////ammusten loppuminen
  reload=-1
EndIf 
   
  If ammukset < 1 Then ////ampuminen
  reload=5
EndIf 


//ALIENIT
  If luo>80
   newAlien.vihut= New(vihut)
   newAlien\obj=CloneObject(vihollinen1)

    PositionObject newAlien\obj,Rand(-1600,1000),Rand(1600,-1000)

           newAlien\id=Rand(1,2)
        If newAlien\id = 1 Then 
           newAlien\hp=Rand(130,190):newAlien\dmg=Rand(2,5):newAlien\score=Rand(10,30)
        EndIf
        If newAlien\id = 2 Then 
           PaintObject newAlien\obj,vihollinen2
           newAlien\hp=Rand(300,320):newAlien\dmg=Rand(5,8):newAlien\score=Rand(15,35)
        EndIf
                    luo=0         
                EndIf
                luo+1



If KeyHit (cbkey9) And miekka=1 Then 
PaintObject pelaaja,pistooliukko
pistooli=1
ClearKeys 
If KeyHit (cbkey9) And pistooli=1 Then
PaintObject konepistooli,pelaaja
EndIf 
EndIf 


  DrawGame
  
  DrawImage yläpalkki ,0,0 : Text 10,10,"PISTEITÄ :"+tapotpisteet

 
  
Text 20,30,"LISÄÄ HP(1) +50hp -30p"
Text 20,45,"HP nyt ="+hp
    If KeyHit(cbkey1) And tapotpisteet>29 Then
      hp+50
      tapotpisteet-30
      if Not tapotpisteet=30 Then
        hp-0
        tapotpisteet-0
      EndIf
    EndIf
    
Text 250,30,"LISÄÄ VOIMAA(2) +5voima -20p"
Text 250,45,"VOIMA nyt ="+voima
  If KeyHit(cbkey2) And tapotpisteet>19 Then
      voima+5
      tapotpisteet-20
      if Not tapotpisteet=20 Then
        voima-0
        tapotpisteet-0
      EndIf
    EndIf

Text 500,30,"LISÄÄ AMMUKSIA(3) +25ammusta -10p"
Text 500,45,"AMMUKSIA nyt ="+ammukset
   If KeyHit(cbkey3) And tapotpisteet>9 Then
      ammukset+25
      tapotpisteet-10
      if Not tapotpisteet=10 Then
        voima-0
        tapotpisteet-0
      EndIf
    EndIf

Text 300,10,"UUSI ASE(4) -30p"
     If KeyHit(cbkey4) And tapotpisteet>29 Then
      ase1=1
      tapotpisteet-30
      If ase1=1 And KeyHit(cbkey4) And tapotpisteet>29 Then
      ase2=1
      EndIf 
      If Not tapotpisteet=30 Then
        ase1-0
        tapotpisteet-0
      EndIf
    EndIf
    
 CloneCameraPosition pelaaja
 
//If hp=0 then goto kuolit


 PositionObject hiiri,MouseWX(),MouseWY() 


DrawScreen 
Forever 

Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset

Post by Awaclus » Mon Jan 19, 2009 7:59 pm

Nyt tuli lunta.

Nyt tuli ongelma, että mistä johtuu moinen?

Ohjelma toimii varsin mallikkaasti, sitten siirrän sen toiselle koneelle ja se ei toimikaan. Kun poistan seuraavan rivin, ohjelma toimii taas:

Code: Select all

SCREEN 400, 300, 0, CbFullScreen
ja kaikki hyvin, paitsi että nyt en saa peliä fullscreeniin semmoiselle matalalle resoluutiolle, kun olisin halunnut. Kokeilin tuommoisella rivillä niin että nollan tilalla oli 16, sitten 24, sitten 36 ja sama unable to set graphics mode -virhe toistuu, mitä ei tapahtunut edellisellä koneella. Nyt kirjoitin epäselkeimmän viestin aikoihin. Että voisi tehdä tiivistelmän:

Screen- komento ja Unable to set graphics mode. Johtuneeko näyttiksestä?

User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset

Post by esa94 » Mon Jan 19, 2009 9:12 pm

Chaosworm wrote:Nyt tuli lunta.

Nyt tuli ongelma, että mistä johtuu moinen?

Ohjelma toimii varsin mallikkaasti, sitten siirrän sen toiselle koneelle ja se ei toimikaan. Kun poistan seuraavan rivin, ohjelma toimii taas:

Code: Select all

SCREEN 400, 300, 0, CbFullScreen
ja kaikki hyvin, paitsi että nyt en saa peliä fullscreeniin semmoiselle matalalle resoluutiolle, kun olisin halunnut. Kokeilin tuommoisella rivillä niin että nollan tilalla oli 16, sitten 24, sitten 36 ja sama unable to set graphics mode -virhe toistuu, mitä ei tapahtunut edellisellä koneella. Nyt kirjoitin epäselkeimmän viestin aikoihin. Että voisi tehdä tiivistelmän:

Screen- komento ja Unable to set graphics mode. Johtuneeko näyttiksestä?
SCREEN 640, 480, 0, CbFullScreen?

Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset

Post by Awaclus » Mon Jan 19, 2009 11:30 pm

Pölhö täällä taas, moi.

Nyt koodi on epäselkeää ja mitä ilmeisemmin ampuminen mavittaa, tähän en löydä syytä ja siksi laitan taas koko koodin tähän:

Code: Select all

Type VIHUT
Field obj
EndType

Type AMMUKSET
Field obj
EndType

SCREEN 640, 480, 0, cbFullScreen
FrameLimit 40
AddText "Loading Mediaguy.bmp, please wait"
vihu=LoadObject("Media\guy.bmp", 72)
ShowObject vihu,OFF
DrawScreen

AddText "Done. Loading Media\bullet.bmp, please wait"

DrawScreen
ammus=LoadObject("media\bullet.bmp", 72)
ShowObject ammus,OFF
DrawScreen
AddText "Done. Loading Media\bullet2.bmp, please wait"
ammus2=LoadObject("media\bullet2.bmp", 72)
ShowObject ammus2, OFF
DrawScreen
AddText "Done. Loading Media\point.png, please wait"
menutarget=LoadObject("media\point.png")
DrawScreen
AddText "Done. Loading Media\SK_Battle2.mp3, please wait"
musa=PlaySound("media\SK_Battle2.mp3")
DrawScreen
AddText "Done. Loading Media\ammu.wav, please wait"
mgun=LoadSound("media\ammu.wav")
DrawScreen
AddText "Done. Loading Media\blaster.wav, please wait"
lcannon=LoadSound("media\blaster.wav")
DrawScreen
AddText "Done. Loading Media\Boom 1.wav, please wait"
ylikuuma=LoadSound("media\Boom 1.wav")
DrawScreen
AddText "Done. Loading Media\soldier.bmp, please wait"
heebo=LoadObject("media\soldier.bmp", 72)
ShowObject heebo, OFF
DrawScreen
AddText "Loading is ready! Press any key."
DrawScreen
WaitKey
' ALKUJUTUT ON NYT TEHTY
'-------------------------------------------------
valikko=LoadObject("media\zombiekilla.png")
ClearText

aloitusvalikko:
ShowObject valikko, ON
valikkotarget=1

PositionObject menutarget, -70, 40
DrawScreen
 Repeat
  If KeyHit(cbkeydown) Then
   Valikkotarget = valikkotarget + 1
   If valikkotarget = 5 Then valikkotarget = 1
  EndIf
  If KeyHit(cbkeyup) Then
   Valikkotarget = valikkotarget - 1
   If valikkotarget = 0 Then valikkotarget = 4
  EndIf
  If valikkotarget = 1 Then PositionObject menutarget, -70, 40
  If valikkotarget = 2 Then PositionObject menutarget, -70, 10
  If valikkotarget = 3 Then PositionObject menutarget, -70, -20
  If valikkotarget = 4 Then PositionObject menutarget, -70, -50
  If KeyHit(cbkeyreturn) And valikkotarget = 3 Then ShowObject valikko, OFF : ShowObject heebo, ON: Goto themaingame
  DrawScreen
 Forever

Konekivaarintehot=1 'vielä aavistuksen turha
Kills=0 'kuin myös
Health=500
Taso=1
supermanmode=0

WaitKey
ClearText
AddText "Level: 1"
AddText "Starting Health: 500"
AddText "Your score is: 0"
AddText "Current weapon: Rifle"
'Alkuruutu on nyt tehty
'------------------------------------------------

themaingame:

Repeat

'Update Tuning
If LeftKey() Then TurnObject heebo,5
If RightKey() Then TurnObject heebo,-5
If UpKey() Then MoveObject heebo, 3
If DownKey() Then MoveObject heebo, -3
If KeyHit(cbkeyv) Then AddText "kills: " + Kills
If KeyHit(cbkeyb) Then AddText "health: " + Health
If KeyHit(cbkey1) Then konekivaarintehot=1
If KeyHit(cbkey2) And taso>9 Then konekivaarintehot=2
If KeyHit(cbkey3) And taso>19 Then konekivaarintehot=3
If KeyDown(cbkeyw) Then TranslateObject heebo,0,3
If KeyDown(cbkeys) Then TranslateObject heebo,0,-3
If KeyDown(cbkeya) Then TranslateObject heebo,-3,0
If KeyDown(cbkeyd) Then TranslateObject heebo,3,0
If ObjectX(heebo) <-320 Then PositionObject heebo, 319, ObjectY(heebo)
If ObjectX(heebo) >320 Then PositionObject heebo, -319, ObjectY(heebo)
If ObjectY(heebo) <-320 Then PositionObject heebo, ObjectX(heebo), 319
If ObjectY(heebo) >320 Then PositionObject heebo, ObjectX(heebo), -319

If KeyDown(cbkeylalt) Then supermanmode=True : score=0 Else supermanmode=False
CloneCameraPosition heebo
CloneCameraOrientation heebo
'----------------------------------------------
If KeyDown(cbkeyspace) And reload < 1 Then
If konekivaarintehot= 3 Then
 For iVihu.VIHUT= Each VIHUT
  kills=kills+1
  DeleteObject iVihu\obj
  Delete iVihu
  reload=317
 Next iVihu
 PlaySound ylikuuma, 70
Else

uusAmmus.AMMUKSET= New(AMMUKSET)
If konekivaarintehot= 2 Then uusAmmus\obj=CloneObject(ammus) 
If konekivaarintehot= 1 Then uusAmmus\obj=CloneObject(ammus2)

CloneObjectPosition uusAmmus\obj, heebo
CloneObjectOrientation uusAmmus\obj, heebo
MoveObject uusAmmus\obj, 24
If Konekivaarintehot=2 Then
PlaySound lcannon, 40
Else
PlaySound mgun, 40

reload=reload+5
EndIf
EndIf 
EndIf

If vihutimer = < 1 Then
uusVihu.VIHUT= New(VIHUT)
uusVihu\obj=CloneObject(vihu)
PositionObject uusVihu\obj, Rnd (-300,300), Rnd(-300,300)
vihutimer = 23
EndIf

'-------------------------------------------------
'Update bullwts
For iAmmus.AMMUKSET= Each AMMUKSET
  MoveObject iAmmus\obj,17
   If Distance2 (iAmmus\obj, heebo) > 400 Then
    DeleteObject iAmmus\obj
    Delete iAmmus
   EndIf
  i=i+1

Next iAmmus


'Update vihulliset
  For iVihu.VIHUT= Each VIHUT ' update vihullaiset
   PointObject iVihu\obj, heebo
   MoveObject iVihu\obj, 1
   If ObjectsOverlap (iVihu\obj, heebo) Then
    If supermanmode=True Then
     DeleteObject iVihu\obj
     Delete iVihu
    Else
     Health = Health-1
    EndIf
   If Health = 0 Then Goto ending
   EndIf

  Next iVihu
'--------------------------------------------------
For iVihu.VIHUT = Each VIHUT
tuhoa=OFF
For iAmmus.AMMUKSET = Each Ammukset
  If ObjectsOverlap(iVihu\obj,iAmmus\obj) Then
    If bulletmode=0 Then 
     DeleteObject iAmmus\obj
     Delete iAmmus
    EndIf     
    tuhoa=ON
  EndIf
Next iAmmus
If tuhoa Then
    Delete iVihu
    DeleteObject iVihu\obj
    Kills=Kills+1
   
EndIf
Next iVihu

 If Kills>50 Then 
     Locate 1,1
     ClearText
     Kills=0
     Taso=Taso+1             
     Score=score+health
      AddText "Level: " + Taso
     AddText "Your health in the end of previous level was: " + Health
     AddText "Your score is: "+ score     
     If taso=10 Then AddText "New weapon is found: Laser Cannon"
     If taso=20 Then AddText "New weapon is found: Instant Kill Grenade"
     If Taso>35 Then bulletmode=1
    EndIf
    
'---------------------------------------------------
 If SoundPlaying(musa)=0 Then 
        musa = PlaySound ("Media\SK_Battle2.mp3")
 EndIf
'--------------------------------------------------
If reload>0 Then reload=reload-Konekivaarintehot
If vihutimer>0 Then vihutimer=vihutimer-Taso

DrawScreen
Forever

ending:
 ClearText
 AddText "The zombies kill you!"
 AddText "Your score was: "+score
 AddText "You were in level "+taso
 AddText "Press any key to quit."
 DrawScreen
WaitKey

 
Apuja kaipaillaan. Valikko on vielä vähän kesken, en viitsinyt tehdä sitä vielä loppuun kun huomasin ongelman.

Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 3:16 pm

Re: Tyhmät kysymykset

Post by Character » Tue Jan 20, 2009 4:05 pm

Mitenkä tämän törmäyksen voisi tehdä pehmeämmin tai liukuvana?
Toiseksi, miksei kamera seuraa alusta? Koodi:

Code: Select all

FrameLimit 40

lvl=LoadImage("Media\level.bmp")

Dim alus(360) As Integer

alus(0) = LoadImage("Media\ship.bmp")

For i = 1 To 360
    alus(i) = CloneImage(alus(0))
    RotateImage alus(i), i
Next i

Global x, y, angle
x = 70
y = 60
angle = 0
oldx = 0
oldy = 0

Repeat

    oldx = x
    oldy = y

    DrawImage lvl, 0, 0
    DrawImage alus(angle), x, y

    If LeftKey() Then angle = angle - 5
    If RightKey() Then angle = angle + 5
    
    If angle < 1 Then angle = angle + 360
    If angle > 360 Then angle = angle - 360
    
    If UpKey() Then
        x = x + Cos(angle) * 5
        y = y + Sin(angle) * 5
    EndIf
    If DownKey() Then
        x = x - Cos(angle) * 5
        y = y - Sin(angle) * 5
    EndIf

    If ImagesCollide(alus(angle),x,y,0,lvl,0,0,0) Then
        x = oldx: y = oldy
    EndIf

    PositionCamera x, y

    DrawScreen

Forever

User avatar
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset

Post by temu92 » Tue Jan 20, 2009 4:23 pm

Mikset käytä objekteja?

Sitäpaitsi PositionCamera siirtää vain objektien kameraa ja kuviin se ei vaikuta mitenkään. Sitäkin varten objektisysteemissä on kätevä komento CloneCameraPosition jolla saat kameran suoraan "liimattua" kiinni objektiin.

Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 3:16 pm

Re: Tyhmät kysymykset

Post by Character » Tue Jan 20, 2009 5:34 pm

Objekteilla en saisi törmäystä bittikarttaan onnistumaan. :?
Sen kameran liimaamisen sain tehtyä kun laitoin DrawToWorld OFF, ON, OFF.
Mutta miten se pehmeä törmäys onnistuu?

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 » Tue Jan 20, 2009 5:45 pm

muutama ongelma

1.miksi ääni ei kuulu ammuttaessa

2.miksi ammukset ei liiku ,kun ne ampuu?


nimet on kuitenkin oikein kirjoitettu.

Code: Select all

peli:

SCREEN 800,600
FrameLimit 40

//tehdään tyypit 
Type BULLETS
        Field obj
        Field hp
        Field dmg
        Field speed
        Field id
    End Type

Type vihut
  Field obj
  Field id
  Field hp
  Field dmg
  Field score
EndType 


//pelin maasto
grass=MakeObjectFloor()
lawn=LoadImage("metsä.png")
PaintObject grass,lawn
PositionObject grass,0,0, -2 


//ladataan kaikki pelin objectit


////pelaajan jutut////
hiiri = LoadObject   ("tähtäin.png")

pelaaja = LoadObject ("ukkopistooli.png",72)
miekkaukko = LoadObject ("miekkaukko.png",72) : ShowObject miekkaukko,OFF 
pistooliukko = LoadObject ("ukkopistooli.png",72) :ShowObject pistooliukko,OFF 
konepistooliukko = LoadObject ("konepistooli.png",72) :ShowObject konepistooliukko,OFF 
pati=LoadObject("luoti.png")
ShowObject pati,OFF

////vihollisen jutut////
vihollinen1 = loadobject ("monsteri1.png",72)
vihollinen2 = loadobject ("monsteri2.png",72)
ShowObject vihollinen1,OFF 
ShowObject vihollinen2,OFF 

//ladataan musiikit ja äänet
pistooli = LoadSound      ("colt45.mp3")
konepistooli = LoadSound  ("machinegun.mp3")
miekka = LoadSound        ("sword.mp3")
lyöminen = LoadSound      ("bulletbody.mp3")


yläpalkki = LoadImage ("yläpalkki.png")




//laitetaan pelaajan hp , voima ,  kaikkea..

hp=100
voima=5
ammukset = 20

//tapot sekä pisteet

tapot=0
tapotpisteet=1000

//aseenvaihto

miekka=1
pistooli=0
konepistooli=0

If miekka = 1 Then 
PaintObject pelaaja,miekkaukko
EndIf 

If pistooli = 1 Then
PaintObject pelaaja,pistooliukko
EndIf 

If konepistooli = 1 Then 
PaintObject pelaaja,konepistooliukko
EndIf 




Repeat//// 

//pelaajan ohjaus

PointObject pelaaja,hiiri

    If LeftKey() Then TurnObject pelaaja,5
    If RightKey() Then TurnObject pelaaja,-5
    If UpKey() Then MoveObject pelaaja,2
    If DownKey() Then MoveObject pelaaja,-2    
    
    



If  MouseHit (1) And reload<0 
   newBullet.BULLETS= New(BULLETS)
   newBullet\obj=CloneObject(pati)
   newbullet\dmg=voima
   newbullet\speed=speedupg
   PlaySound pistooli,50
   ammukset - 1
   CloneObjectPosition newBullet\obj,pelaaja
   CloneObjectOrientation newbullet\obj,pelaaja
   MoveObject newBullet\obj,24
   reload=5
EndIf
reload-1


  If ammukset = 0 Then ////ammusten loppuminen
  reload=-1
EndIf 
   
  If ammukset < 1 Then ////ampuminen
  reload=5
EndIf 


//ALIENIT
  If luo>80
   newAlien.vihut= New(vihut)
   newAlien\obj=CloneObject(vihollinen1)

    PositionObject newAlien\obj,Rand(-1600,1000),Rand(1600,-1000)

           newAlien\id=Rand(1,2)
        If newAlien\id = 1 Then 
           newAlien\hp=Rand(130,190):newAlien\dmg=Rand(2,5):newAlien\score=Rand(10,30)
        EndIf
        If newAlien\id = 2 Then 
           PaintObject newAlien\obj,vihollinen2
           newAlien\hp=Rand(300,320):newAlien\dmg=Rand(5,8):newAlien\score=Rand(15,35)
        EndIf
                    luo=0         
                EndIf
                luo+1
                
                 For iAlien.vihut= Each vihut'Aloitetaan zombien läpikäynti
                   
                   
 
                   




                   
                    sidle=Rand(-20,20)
                    If CountCollisions(iAlien\obj) Then MoveObject iAlien\obj,0,sidle'jos kosketaan deinään, niin stepataan


                    If ObjectSight (iAlien\obj,pelaaja) Then MoveObject iAlien\obj,1 Else MoveObject iAlien\obj,0
                    


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


                    For ibullet.bullets=Each bullets
                        If ObjectsOverlap(ibullet\obj,iAlien\obj) Then
                            iAlien\hp-ibullet\dmg
                            ibullet\hp=-1
                        EndIf

                    Next ibullet
                   
                    If ObjectsOverlap (pelaaja,iAlien\obj) Then iAlien\hp-4
                    If iAlien\hp<0 Then 'jos zombin energiat loppuu, niin tapetaan se ja annetaan pisteet
                        tapotpisteet+1
                        tapot+1
                        DeleteObject iAlien\obj
                        Delete iAlien
                    EndIf
                   

                Next iAlien
               
                   
           
If KeyHit (cbkey9) And miekka=1 Then 
PaintObject pelaaja,pistooliukko
pistooli=1
ClearKeys 
If KeyHit (cbkey9) And pistooli=1 Then
PaintObject konepistooli,pelaaja
EndIf 
EndIf 


  DrawGame
  
  DrawImage yläpalkki ,0,0 : Text 10,10,"PISTEITÄ :"+tapotpisteet : Text 200,10,"TAPOT :"+tapot

 
  
Text 20,30,"LISÄÄ HP(1) +50hp -30p"
Text 20,45,"HP nyt ="+hp
    If KeyHit(cbkey1) And tapotpisteet>29 Then
      hp+50
      tapotpisteet-30
      if Not tapotpisteet=30 Then
        hp-0
        tapotpisteet-0
      EndIf
    EndIf
    
Text 250,30,"LISÄÄ VOIMAA(2) +5voima -20p"
Text 250,45,"VOIMA nyt ="+voima
  If KeyHit(cbkey2) And tapotpisteet>19 Then
      voima+5
      tapotpisteet-20
      if Not tapotpisteet=20 Then
        voima-0
        tapotpisteet-0
      EndIf
    EndIf

Text 500,30,"LISÄÄ AMMUKSIA(3) +25ammusta -10p"
Text 500,45,"AMMUKSIA nyt ="+ammukset
   If KeyHit(cbkey3) And tapotpisteet>9 Then
      ammukset+25
      tapotpisteet-10
      if Not tapotpisteet=10 Then
        voima-0
        tapotpisteet-0
      EndIf
    EndIf

    
 CloneCameraPosition pelaaja
 
//If hp=0 then goto kuolit

 PositionObject hiiri,MouseWX(),MouseWY() 


DrawScreen 
Forever 
EDIT:

hehe sehä unohtui :lol:
vielä ongelma 1 ...
en keksi itse mitään ratkaisua siihe

Last edited by rami123 on Tue Jan 20, 2009 5:53 pm, edited 1 time in total.

DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Tyhmät kysymykset

Post by DatsuniG » Tue Jan 20, 2009 5:48 pm

rami123 wrote: 2.miksi ammukset ei liiku ,kun ne ampuu?
Et edes liikuta niitä missään vaiheessa koodia.
Hengität nyt manuaalisesti.

Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 3:16 pm

Re: Tyhmät kysymykset

Post by Character » Tue Jan 20, 2009 6:04 pm

Code: Select all

PlaySound pistooli,50
Vika on varmaan tuossa.. :shock:

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 » Tue Jan 20, 2009 6:07 pm

Character wrote:

Code: Select all

PlaySound pistooli,50
Vika on varmaan tuossa.. :shock:
ei se ongelma siinä ollut ..

poistin pari koodiriviä niin alko toimimaan äänetkin :D
EDIT:

kiitos avusta


User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: Tyhmät kysymykset

Post by Jani » Wed Jan 21, 2009 10:13 pm

Tämä ei varsinaisesti ole ongelma mutta otsikko on "Tyhmät kysymykset" 8-)

Voisiko joku lähettä kunnollisen esimerkin rekursiosta?´
Olisi katsos kiva tietää, että mikä se on.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset

Post by temu92 » Wed Jan 21, 2009 10:30 pm

No vaikka tämmönen:

Code: Select all

Rekursiivi(5)
WaitKey

Function Rekursiivi(count)
	Print "Moi, olen rekursiivinen funktio!"
	count - 1
	If count > 0 Then
		Rekursiivi(count)
	EndIf
End Function
Eli rekursiivisen funktion pääidea on se että se kutsuu itseään tekemään jotakin. Kannattaa varoa ettei kuitenkaan onnistu tekemään loputonta rekursiota.

User avatar
KilledWhale
Tech Developer
Tech Developer
Posts: 543
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Tyhmät kysymykset

Post by KilledWhale » Wed Jan 21, 2009 10:35 pm

Tässä olisi vielä esimerkkinä Sierpinskin Kolmio rekursion avulla toteutettuna:

Code: Select all

	SCREEN 800, 800
	
	sierTri(0, 800, 400, 0, 800, 800, 7, 0, 1)
	DrawScreen OFF
	WaitKey

Function sierTri(x1#, y1#, x2#, y2#, x3#, y3#, d, n = 0, dd = 0)
	Line x1 + 1, y1, x2 + 1, y2
	Line x2 + 1, y2, x3 + 1, y3
	Line x3 + 1, y3, x1 + 1, y1
	
	If n < d Then
		If n = 0 Then 
			sierTri((x1 + x2) * 0.5, (y1 + y2) * 0.5, (x1 + x3) * 0.5, y1, (x2 + y3) * 0.5, (y1 + y2) * 0.5, d, 1, dd) 
		Else
			sierTri((x1 + x2) * 0.5, y1 - (y2 - y1) * 0.5, (x1 + x3) * 0.5, y1, (x2 + x3) * 0.5, y1 - (y2 - y1) * 0.5, d, n + 1, dd)
			sierTri(((x1 + x2) * 0.5) - (x3 - x2), y1 + (y2 - y1) * 0.5, (x1 + x3) * 0.5 - (x3 - x1) * 0.5, y2, (x2 + x3) * 0.5 - (x3 - x2), y1 + (y2 - y1) * 0.5, d, n + 1, dd)
			sierTri(((x1 + x2) * 0.5) + (x3 - x2), y1 + (y2 - y1) * 0.5, (x1 + x3) * 0.5 + (x3 - x1) * 0.5, y2, (x2 + x3) * 0.5 + (x3 - x2), y1 + (y2 - y1) * 0.5, d, n + 1, dd)
		EndIf
	EndIf
	If dd and Rand(1, 10) = 1 Then DrawScreen OFF
EndFunction
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras

sillie
Newcomer
Posts: 19
Joined: Sun Dec 14, 2008 9:56 pm

Re: Tyhmät kysymykset

Post by sillie » Thu Jan 22, 2009 6:42 pm

Kun haluan piirtää neliöitä, onko nopeampaa käyttää CBn Box -funkkaria vai piirtää halutun värinen pikseli koordinaatteihin 0,0, lukita ruutu, lukea se funktiolla GetPixel2 ja sitten muodostaa neliö PutPixel2:sella?

Entä saavuttaako muistipalojen käytöllä eroa nopeudessa verrattuna että käyttäisi normaaleita taulukoita a la CB?

User avatar
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tyhmät kysymykset

Post by MAVmaggot » Thu Jan 22, 2009 9:52 pm

cbSDL tai cbGL.

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja » Thu Jan 22, 2009 10:47 pm

Ihan kuvasta copyboxin käyttö on myös hyväksi todettu strategia.

User avatar
Ruuttu
Devoted Member
Posts: 687
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Tyhmät kysymykset

Post by Ruuttu » Fri Jan 23, 2009 7:45 pm

Okei, minulla on pelimaailma, joka piirretään piirtokomennoilla. Kenttätiedostot siis sisältävät ainoastaan tietoa tyyliin "Kordinaateissa X ja Y on Z kokoinen ympyrä." Koska pelin resoluution on oltava muutettavissa, resoluutiot annetaan liukulukuina, esim. 0.5 on puolessa välissä ruutua jne.
Havaitsin kuitenkin ikävän varjopuolen systeemissä: koska kaikki koordinaatit lasketaan näytön korkeuden ja leveyden perusteella, resoluution kuvasuhteen muutos saa kentänkin venymään; sen lisäksi että se näyttää typerältä, siitä saattaa toisinaan olla todellista haittaa.

Miten siis saan koordinaatit skaalautumaan resoluutioon, mutta ilman että resoluutio vaikuttaa kuvasuhteeseen? Voinko esim. verrata alkuperäistä kuvasuhdetta nykyiseen, ja venyttää kordinaatit niiden mukaan? Tarvitsisin aika yksityiskohtaisen selityksen, esimerkinkin mielellään, minulla ei ole hajuakaan kuinka esim. kuvasuhde lasketaan.

Kiitos.

Locked