Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Tyhmät kysymykset

Post by Harakka »

Se onnistuu vaikka näin:

Code: Select all

If nappia_painettu Then
     soldiers_created + 1
     soldier.SOLDIERS = new(SOLDIERS)
     soldier\ID = i
     soldier\name = "sotamies"+ soldiers_created
     soldier\defence = rand(4,6)
     soldier\attack = rand(2,5)
EndIf
Eli pidä aina kirjaa siitä, kuinka monta sotilasta on luotu (jos haluat hifistellä, laske se uudestaan kun sotilaita poistetaan ettei väliin jää aukkoja).
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

Ohhoh, yritin näköjään liikaa säätää niillä funktioilla, vaikken niitä näköjään osaakkaan :D Kiitokset sinullekkin.

E: Ah, viimeinkin sain sen toimimaan :D Suuret kiitokset teille.
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 4:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post by Olwi »

Postaan tämän tänne koska normaalisti keksin ratkaisun heti,kun olen kertonut muille ongelmistani :mrgreen:

EDIT
Kuten tälläkin kertaa,ei vddu :mrgreen:
Miettinyt monta tuntia että missä se vika on,kun puuttuu yksi drawscreeni
Ammattikoodaaja,ihan varmasti...
Huuda mun ip:tä!
Outo vika tai bugi

Re: Tyhmät kysymykset

Post by Outo vika tai bugi »

Kun lisään tähän uuden typen tai jonkin includen niin botit bugaa.

Kun tiettyä bottia ampuu niin botin energia vähenee väärältä botilta.
Kun botin energia on 0 niin botti ei kuole vaan voin ampua lisää ja energia vaan menee miinukselle, kun taas jos botin energia on 0 botin pitäisi kuolla.

Itse en vaan löydä sitä bugia / vikaa tästä mikä tuon aiheuttaisi.

Code: Select all

SCREEN 800, 600, 0, 0
AddText "LOADING..."
DrawScreen
//rajoitetaan pelin ruudunpäivitysnopeutta ja siten myös pyörimisnopeutta
FrameLimit 40
ShowMouse OFF
Include "RainEngine.cb"

//tyyppi ukon ammuksille
Type AMMUS_ukko 'luo kokoelma, jonka nimi on AMMUS_ukko
    Field obj 'yksi kenttä nimeltään 'obj'
End Type

//tyyppi bottien ammuksille
Type AMMUS_botit 'luo kokoelma, jonka nimi on AMMUS_botit
    Field obj 'yksi kenttä nimeltään 'obj'
End Type

//Ladataan kartta
kartta = LoadMap("cdm2.til", "tileset.bmp")

//Ammuksen kuva
pati=LoadObject("bullet.bmp")

//botit
Dim botit(8, 4)

//kuinka monta bottia vielä hengissä
botteja = 8

//muutama vakio helpottamaan taulukointia
Const masterbotti = 0
Const objekti = 0
Const energia = 1
Const hengissä = 2
Const ampuuko = 3
Const reload_botti = 4

//masterbotti, jota kloonataan
botit(masterbotti, objekti) = LoadObject("guy.bmp", 360)
//piilotetaan isäntäobjekti
ShowObject botit(masterbotti, objekti), OFF

//kloonataan isäntäobjektista käytettävät botit
For kloonattava = 1 To 8
    botit(kloonattava, objekti) = CloneObject(botit(masterbotti, objekti))
    //arvotaan botin energia
    botit(kloonattava, energia) = Rand(10, 20)
    //botti on hengissä
    botit(kloonattava, hengissä) = 1
    //botti ei ammu
    botit(kloonattava, ampuuko) = 0
    //botin ase on latingissa
    botit(kloonattava, reload_botti) = 0
Next kloonattava

//sijoitetaan botit kartalle
PositionObject botit(1, objekti), -465,865
PositionObject botit(2, objekti), 110,1120
PositionObject botit(3, objekti), -50,1120
PositionObject botit(4, objekti), 465,865
PositionObject botit(5, objekti), 465,705
PositionObject botit(6, objekti), 400,130
PositionObject botit(7, objekti), 400,480
PositionObject botit(8, objekti), 400,-130

//tekstuuri kuolleelle botille
dead_master = LoadObject("dead.bmp")

//piilotetaan se
ShowObject dead_master, OFF

//taulukko ruumiin kuvia varten
Dim dead_tekstuurit(7)

For kloonattava = 0 To 7
    //kloonataan
    dead_tekstuurit(kloonattava) = CloneObject(dead_master)
    //piilotetaan
    ShowObject dead_tekstuurit(kloonattava), OFF
Next kloonattava

//pelaaja
ukko = LoadObject("soldier.bmp", 360)

//pelaajan energia
maxukkoenergia = 255

//hiiri
kursori = LoadObject("target.bmp")

//hiiri keskelle ruutua
PositionMouse ScreenWidth()/2, ScreenHeight()/2

//asetetaan ukko törmäämään karttaan
SetupCollision ukko, kartta, 2, 4, 2

//asetetaan pelaaja törmäämään botteihin
For läpikäytävä = 1 To 8
    SetupCollision ukko, botit(läpikäytävä, objekti), 2, 2, 2
Next läpikäytävä

//alustetaan pelaajan energia
ukkoenergia = maxukkoenergia
gRainVolume = 100
gRainType = 1

//---------------------------------------------------------------------------------
//LUUPPI
//---------------------------------------------------------------------------------
Repeat
    //putsataan tekstit
    ClearText
    //tulostetaan joitakin tietoja
    Color 255 - ukkoenergia, ukkoenergia, 0
    AddText "Sinun energiasi: " + 100 * ukkoenergia/maxukkoenergia + "%"
    AddText ""
    Color 255, 255, 255
    AddText "Botteja hengissä: " + botteja + "/8"
    AddText ""
    AddText "Botin 1 energia: " + botit(1, energia)
    AddText "Botin 2 energia: " + botit(2, energia)
    AddText "Botin 3 energia: " + botit(3, energia)
    AddText "Botin 4 energia: " + botit(4, energia)
    AddText "Botin 5 energia: " + botit(5, energia)
    AddText "Botin 6 energia: " + botit(6, energia)
    AddText "Botin 7 energia: " + botit(7, energia)
    AddText "Botin 8 energia: " + botit(8, energia)
    AddText ""
    
    //hiiriohjaus
    PointObject ukko, kursori
    
    //ukon eteen-taakse liikkeet
    If UpKey() Then MoveObject ukko, 3
    If DownKey() Then MoveObject ukko, -3
    
    //ukon side-step-liikkeet, eli sivuaskeleet
    If RightKey() Then MoveObject ukko, 0, 2
    If LeftKey() Then MoveObject ukko, 0, -2
    
    //tarkistetaan näkevätkö botit
    For läpikäytävä = 1 To 8
        //jos ko. botti hengissä (JOS TÄTÄ EI OLE, TULEE MAV)
        If botit(läpikäytävä, hengissä) = 1 Then
            //jos seinät eivät ole tiellä ja etäisyys < 300
            If ObjectSight(botit(läpikäytävä, objekti), ukko) = 1 And Distance2(botit(läpikäytävä, objekti), ukko) < 300
                //botti näkyviin
                ShowObject botit(läpikäytävä, objekti), ON
                //käännetään botti osoittamaan pelaajaan
                PointObject botit(läpikäytävä, objekti), ukko
                //liikutetaan bottia kohti pelaajaa
                MoveObject botit(läpikäytävä, objekti), 1
                //tulostetaan teksti, joka kertoo, että botti näkee
                Color 255, 0, 0 : AddText "LINE OF SIGHT! Bot: " + läpikäytävä
                //botti ampuu 10%:n todennäköisyydellä
                botit(läpikäytävä, ampuuko) = Rand(0, 9)
            Else
                //muuten piilotetaan botti
                ShowObject botit(läpikäytävä, objekti), OFF
            EndIf
        EndIf
    Next läpikäytävä
    
    //copypastetettu ja hiukan modattu ampumishärdelli oppitunnista 18 :D
    'Ammu-systeemi. Vain, jos ase on ladattu
    If MouseDown(1) And reload_ukko=0 Then    
        luoti.AMMUS_ukko = New(AMMUS_ukko) 'luo uusi AMMUS_ukko
        luoti\obj=CloneObject(pati) 'tee klooni
        'asetetaan pati samaan paikkaan pelaajan kanssa
        CloneObjectPosition luoti\obj,ukko                
        'käännetään pati samaan suuntaan pelaajan kanssa
        CloneObjectOrientation luoti\obj,ukko            
        reload_ukko=8 'aseen lataus
        'asetetaan törmäykset        
        SetupCollision luoti\obj, kartta, 2, 4, 1
        //jätetään törmäys väliaikaisesti huomiotta
        ResetObjectCollision luoti\obj
        //asetetaan luodit törmäämään botteihin
        For läpikäytävä = 1 To 8
            //jos ko. botti on hengissä (JOS TÄTÄ EI OLE, TULEE MAV)
            If botit(läpikäytävä, hengissä) = 1 Then
                SetupCollision luoti\obj, botit(läpikäytävä, objekti), 2, 2, 1
            EndIf
        Next läpikäytävä
    EndIf
    
    //Bottien ampumis-härdelli
    For läpikäytävä = 1 To 8
        //jos ko. botti on hengissä (JOS TÄTÄ EI OLE, TULEE MAV)
        If botit(läpikäytävä, hengissä) = 1 Then
            //jos ampuuko-muuttuja on 9 ja ase ladattu, niin ammutaan
            If botit(läpikäytävä, ampuuko) = 9 And botit(läpikäytävä, reload_botti) = 0 Then
                //nollataan ampuuko
                botit(läpikäytävä, ampuuko) = 0
                luoti_botit.AMMUS_botit = New(AMMUS_botit) 'luo uusi AMMUS_botit
                luoti_botit\obj=CloneObject(pati) 'tee klooni
                'asetetaan pati samaan paikkaan botin kanssa
                CloneObjectPosition luoti_botit\obj, botit(läpikäytävä, objekti)                
                'käännetään pati samaan suuntaan botin kanssa
                CloneObjectOrientation luoti_botit\obj, botit(läpikäytävä, objekti)            
                botit(läpikäytävä, reload_botti)=8 'aseen lataus
                'asetetaan törmäykset        
                SetupCollision luoti_botit\obj, kartta, 2, 4, 1
                //jätetään törmäys väliaikaisesti huomiotta
                ResetObjectCollision luoti_botit\obj
                //asetetaan luodit törmäämään pelaajaan
                SetupCollision luoti_botit\obj, ukko, 2, 2, 1
            EndIf
        EndIf
    Next läpikäytävä  
                
    
    'päivitä pelaajan aseen lataaminen
    If reload_ukko>0 Then reload_ukko = reload_ukko-1

    'päivitä bottien aseen lataaminen
    For läpikäytävä = 1 To 8
        //jos ko. botti on hengissä (JOS TÄTÄ EI OLE, TULEE MAV)
        If botit(läpikäytävä, hengissä) = 1 Then
            //jos ase ei ole latingissa
            If botit(läpikäytävä, reload_botti) > 0 Then
                botit(läpikäytävä, reload_botti) = botit(läpikäytävä, reload_botti) - 1
            EndIf
        EndIf
    Next läpikäytävä
    
    'Päivitä kaikki pelaajan ammukset
    For luoti.AMMUS_ukko = Each AMMUS_ukko
        //siirretään AMMUS_ukkoa
        MoveObject luoti\obj,6
        If CountCollisions (luoti\obj) <> 0 Then
            'AMMUS_ukko törmää -> tuhoa se
            //botit ovat objektit nro 6 - 13               
            törmätty = GetCollision(luoti\obj, 1)
            If törmätty > 5 And törmätty < 14 Then
                botit(törmätty - 5, energia) = botit(törmätty - 5, energia) - 1
            EndIf
            DeleteObject luoti\obj 'poista objekti
            Delete luoti 'poista luoti kokonaan
        EndIf        
    Next luoti
    
    'Päivitä kaikki bottien ammukset
    For luoti_botit.AMMUS_botit = Each AMMUS_botit
        //siirretään AMMUS_botit:a
        MoveObject luoti_botit\obj,6
        //Törmäsikö AMMUS_botit johonkin?
        If CountCollisions (luoti_botit\obj) <> 0 Then
            //Ovatko AMMUS_botit ja pelaaja päällekäin?
            If ObjectsOverlap (luoti_botit\obj, ukko, 2) <> 0 Then
                'AMMUS_botit törmää pelaajaan -> vähennä pelaajan energiaa
                ukkoenergia = ukkoenergia - 3
            EndIf
            'AMMUS_botit törmää -> tuhoa se
            DeleteObject luoti_botit\obj 'poista objekti
            Delete luoti_botit 'poista luoti kokonaan
        EndIf  
    Next luoti_botit
    
    //tarkistetaan bottien energiataso
    For läpikäytävä = 1 To 8
        //jos ko. botti on hengissä (JOS TÄTÄ EI OLE, TULEE MAV)
        If botit(läpikäytävä, hengissä) = 1 Then
            //jos botin energia 0, tai pienempi
            If botit(läpikäytävä, energia) =< 0 Then
                botit(läpikäytävä, hengissä) = 0
                //vähennetään hengissä olevien bottien määrää
                botteja = botteja - 1
                //laitetaan kuolleen botin paikalle "ruumiin" kuva
                CloneObjectPosition dead_tekstuurit(läpikäytävä - 1), botit(läpikäytävä, objekti)
                ShowObject dead_tekstuurit(läpikäytävä - 1), ON
                //"tapetaan" botti
                DeleteObject botit(läpikäytävä, objekti)
            EndIf
        EndIf
    Next läpikäytävä
    
    //tarkistetaan, onko mikään botti päällekkäin pelaajan kanssa
    For läpikäytävä = 1 To 8
        //jos ko. botti on hengissä (JOS TÄTÄ EI OLE, TULEE MAV)
        If botit(läpikäytävä, hengissä) = 1 Then
            If ObjectsOverlap(botit(läpikäytävä, objekti), ukko, 3) = 1 Then
                //vähennetään pelaajan energiaa
                ukkoenergia = ukkoenergia - 1
            EndIf
        EndIf
    Next läpikäytävä
    
    //liimataan kamera pelaajaan
    CloneCameraPosition ukko
    
    //asetetaan kursori-objekti hiireksi
    PositionObject kursori, MouseWX(), MouseWY()
    
    //PIIRRETÄÄN RUUTU
    DrawScreen ON, ON
    DrawGame()
    DrawRain()
    
    //jos kaikki botit kuolleet, rikkoudutaan ulos silmukasta
    If botteja = 0 Then GoTo win
    
    //jos pelaaja kuolee, niin näytetään teksti
    If ukkoenergia =< 0 Then GoTo kuolema
    
Forever

win:
//putstataan ruutu ja poistetaan objektit
ClearObjects
Cls
ClearText
Color 0, 255, 0
//tulostetaan teksti
AddText "PÄÄSIT LÄPI!"
DrawScreen ON, ON
//odotetaan 2 s
Wait 2000
ClearMouse
ClearKeys
WaitKey
End

kuolema:
//putstataan ruutu ja poistetaan objektit
ClearObjects
Cls
ClearText
Color 255, 0, 0
//tulostetaan teksti
AddText "HÄVISIT! VERENHIMOISET BOTIT RAATELIVAT SINUT! YRITÄ UUDELLEEN!"
DrawScreen ON, ON
//odotetaan 2 s
Wait 2000
ClearMouse
ClearKeys
WaitKey
End
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

Kuinka saan selville muiden samaa tyyppikokoelmaa olevien koordinaatit selville? siis kun minulla on näin:

Code: Select all

type ukot
field x
field y
end type
Niin kuinka saan liikuttaessani yhtä ukkoa niin, ettei se voi liikkua, jos se on menossa toisten päälle? Siis esim.

Code: Select all

If keyhit(cbkeydown) and ukko\y+20<>(TÄHÄN PITÄISI JOTENKIN SAADA NIIDEN MUIDEN Y:T)ukko\y then ukko\y+20

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 »

Kaksi sisäkkäistä looppia. Kas näin.

Code: Select all

For ukko.ukot = Each ukot
    For ukko2.ukot = Each ukot
        If KeyHit(cbKeyDown) And ukko\y+20<>ukko2\y Then ukko\y = ukko\y + 20
    Next ukko2
Next ukko
a = a + b, parempaa koodia kuin a + b.

Verbit turhia.

Ja liikutat ukkoa muuten kaksikymmentä pikseliä framessa. Son sitten pelissäsi kovin nopea. Kuvittelepa, että sekunnissa liikutaan 60 kertaa tuo 20 pikseliä. Yay.
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

Kiitoksia. Eipäs muuten ole, sillä peli on vuoropohjainen ;)
danueli
Newcomer
Posts: 14
Joined: Sat Jul 12, 2008 8:28 am

Re: Tyhmät kysymykset

Post by danueli »

Alotin just käyttään coolbasiciä, ensimmäinen ongelma johon törmäsin alko kun oli kattonut ekan lessonin läpi ja menin toiseen, painoin f5 ja sitten se alko valittaa että The program could not be run because the previous run is still active. no sit tuli ongelma miten hoitaa toi eka ongelma.
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 4:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post by Olwi »

danueli wrote:Alotin just käyttään coolbasiciä, ensimmäinen ongelma johon törmäsin alko kun oli kattonut ekan lessonin läpi ja menin toiseen, painoin f5 ja sitten se alko valittaa että The program could not be run because the previous run is still active. no sit tuli ongelma miten hoitaa toi eka ongelma.
Pistä kaikki ikkunat alas,ja käy klikkaamassa rastia kun löydät sieltä sen ikkunan,jossa CB-ohjelma ajetaan.
Joku bugi,sitä ei aina näy siellä alhaalla että olis sellainenkin auki. Unohdit vain sammuttaa edellisen:P
Edit:
Kyllä sen pitäs löytyä.
No,sammuta CB ja yritä uudestaan
Last edited by Olwi on Sat Jul 12, 2008 8:52 am, edited 1 time in total.
Huuda mun ip:tä!
danueli
Newcomer
Posts: 14
Joined: Sat Jul 12, 2008 8:28 am

Re: Tyhmät kysymykset

Post by danueli »

ei onnistu
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 »

Lienetkö Vista-käyttäjä? Silloin sinun tulee ajaa CB järjestelmänvalvojan oikeuksin. Eli oikea klikki pikakuvakkeen päällä, ja valkkaat moisen.
danueli
Newcomer
Posts: 14
Joined: Sat Jul 12, 2008 8:28 am

Re: Tyhmät kysymykset

Post by danueli »

KIITTI! nyt toimii
Maamyyrä
Newcomer
Posts: 27
Joined: Thu Jun 05, 2008 10:59 am

Re: Tyhmät kysymykset

Post by Maamyyrä »

Minulla olisi (taas) kysyttävää.
Millaisen koodin pätkän tarvitsen tähän,että kun laittaa ukkoja töihin niin ukkojen määrällä kertautuvalla nopeudella tulisi tavaraa.

näin:
1 töissä 1 halko per min
2 töissä 2 halkoa per min, tai 1 joka 30 sek
3 töissä 3 halkoa per min, tai 1 joka 20 sek
...

Yritetty on timereillä sun muilla ja olen saanut kaiken mailman söhkellyksiä aikaan. :lol:

Selvennykseksi laitan nykyisen koodin (riisutun) version tänne ihmeteltäväksi.

Code: Select all

puu = 0
tym = 15
työ = 0

Repeat
  
  Color 255,255,255
  Text 25,25,"PUUTA:"+puu
  Text 25,38,"UKKOJA:"+tym
  Text 25,51,"TYÖSSÄ:"+työ
  
  Color 0,255,0         'Ekapainike
  Box 25,64,49,15
  Color 0,0,0
  Text 25,65,"TÖIHIN"
  'painikkeeksi
  If MouseX()>25 And MouseX()<74 And MouseY()>64 And MouseY()<79
    If MouseHit(1)
      ClearText
      If tym > 0  ' jos on työläisiä...
        työ = työ + 1
        tym = tym - 1
       Else
        Color 255,0,0 ' jos ei...
        AddText "EI OLE TYÖLÄISIÄ!"
       EndIf
    EndIf
  EndIf    
  
  Color 255,0,0 'TOinen painike
  Box 25,80,49,15
  Color 0,0,0
  Text 25,81,"POISTA"
  
  If MouseX()>25 And MouseX()<74 And MouseY()>80 And MouseY()<95
    If MouseHit(1)
       ClearText
       If työ > 0 'Jos töitätehdään
         tym = tym + 1
         työ = työ - 1
       Else
        Color 255,0,0 ' Jos ei
        AddText "KUKAAN EI OLE TÖISSÄ!"
       EndIf
    EndIf   
  EndIf

  DrawScreen
  
Forever
One object to rule them all

Just don't kill the Master
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Tyhmät kysymykset

Post by Harakka »

Esimerkiksi näin:

Code: Select all

  If työ Then
    If Timer() > nextpuu Then
      puu + 1
      nextpuu = Timer() + 60000/työ
    EndIf
  EndIf
Tässä tosin seuraavan puun luomiseen kuluva aika lasketaan vain kun edellinen on saatu valmiiksi, mutta idea selkenee näinkin.
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
danueli
Newcomer
Posts: 14
Joined: Sat Jul 12, 2008 8:28 am

Re: Tyhmät kysymykset

Post by danueli »

mulla ois ongelma kun minun objecti ei näy kentässä.

katottaaks onko tässä jotain väärin.

'This is your first CoolBasic program!

FrameLimit 40

kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1

auto = LoadObject("Media\car.bmp", 72)

kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1

AddText "LIIKUTA NUOLINÄPPÄIMILLÄ!"

Repeat


If LeftKey() Then TurnObject auto, 5
If RightKey() Then TurnObject auto, -5

If UpKey() Then MoveObject auto, 5
If DownKey() Then MoveObject auto, -5

DrawScreen

CloneCameraPosition auto

Forever
danueli
Newcomer
Posts: 14
Joined: Sat Jul 12, 2008 8:28 am

Re: Tyhmät kysymykset

Post by danueli »

Mä pistin objeketihin kyvyn ampua, muklla on kaksi liikkuvaa objektia, kumpikin pystyy ampua, mutta ne voivat ampua yhteensä vain kerran koko pelin aikana :( . oisko joku ratkasu??
Ris
Active Member
Posts: 142
Joined: Wed Jul 02, 2008 8:27 pm

Re: Tyhmät kysymykset

Post by Ris »

Edelliseen viestiin on vaikea sanoa ilman koodia mitään.
danueli wrote:

Code: Select all

koodia
lataat 2 karttaa yhtäaikaa ja auton jälkeen ladattava
kartta menee objectin auto päälle.

Vain 1 karttaa pystyy käyttämään kerrallaan.
Eli poista auton jälkeen ladattava kartta.

Tällä foorumilla kun laitat koodia niin laita se koodi tagien sisään,
eli

Code: Select all

 
Kun kirjoitat uuden viestin niin viestilaatikon yläpuolella quoten vieressä on code tagi.
Sen sisälle kuuluu laittaa koodi.

Kannattaa lukea coolbasicin ohjeet läpi.
+ tutoriaalit 1 - 20.

Tutoriaali aukeaa napista F8.
danueli
Newcomer
Posts: 14
Joined: Sat Jul 12, 2008 8:28 am

Re: Tyhmät kysymykset

Post by danueli »

mä olen pistänyt tälläsen koodauksen

Code: Select all

SetupCollision pati, kartta, 1, 4, 2
pati on pyssyn panos tässä ja ton koodin mukan se ei sais mennä seinien läpi mut se kumminkin menee, miksi?
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Tyhmät kysymykset

Post by Harakka »

Se riippuu vähän koodistasi. Voisitko pistää sen myös näytille niin ongelman ratkaiseminen helpottuisi? Voi olla että ammus liikkuu liian nopeasti tai sitten käytät typejä jolloin törmäys kuuluisi asettaa objektille pati\obj (tai vastaava).
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
danueli
Newcomer
Posts: 14
Joined: Sat Jul 12, 2008 8:28 am

Re: Tyhmät kysymykset

Post by danueli »

tässä mun koko koodaus, eka tekemäno "peli" olen lainannut manuaaleista koodauksia

Code: Select all

Type AMMUS 'luo kokoelma, jonka nimi on AMMUS
    Field obj 'yksi kenttä nimeltään 'obj'
End Type
FrameLimit 70

musa = PlaySound ("Media\SK_Battle2.mp3")

SCREEN 1200,1000

ääniAmmu = LoadSound ("Media\Blaster.wav")

kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,2

auto2 = LoadObject("Media\car2.bmp", 72)

auto = LoadObject("Media\car2.bmp", 72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF

SetupCollision pati, kartta, 1, 4, 2

SetupCollision auto, kartta, 1, 4, 2

SetupCollision auto2, kartta, 1, 4, 2

Repeat
 'soita musiikki uudelleen, jos se lo4ppuu
    If SoundPlaying(musa)=0 Then 
        musa = PlaySound ("Media\SK_Battle2.mp3")
        
        'satunnainen tapahtuma.. 
        'tasataanko ääni oikealle vai vasemmalle
        If Rand(1,2)=1 Then 
            SetSound musa,0,100,-100 'vasen kajari
        Else
            SetSound musa,0,100,100 'oikea kajari
        EndIf
    EndIf

'Ammu-systeemi. Vain, jos ase on ladattu
    If KeyDown(cbKeyRControl) And reload=0 Then    
        luoti.AMMUS = New(AMMUS) 'luo uusi ammus
        luoti\obj=CloneObject(pati) 'tee klooni
        'asetetaan pati samaan paikkaan
        CloneObjectPosition luoti\obj,auto                
        'käännetään pati samaan suuntaan
        CloneObjectOrientation luoti\obj,auto           
        reload=5 'aseen lataus        
    EndIf
    
    'Ammu-systeemi. Vain, jos ase on ladattu
    If KeyDown(cbKeyLControl) And reload=0 Then    
        luoti.AMMUS = New(AMMUS) 'luo uusi ammus
        luoti\obj=CloneObject(pati) 'tee klooni
        'asetetaan pati samaan paikkaan
        CloneObjectPosition luoti\obj,auto2                
        'käännetään pati samaan suuntaan
        CloneObjectOrientation luoti\obj,auto2            
        reload=5 '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,6
    If KeyDown(cbKeyRControl) And reload=0 Then
        PlaySound ääniAmmu,50
        reload=10 'lataa 1/4 sekunnissa (koska framelimit 40)
    EndIf
    'lataaminen
    If reload>0 Then reload-1
            
    Next luoti

'päivitä aseen lataaminen
    If reload>0 Then reload=reload-1

    'Päivitä kaikki ammukset
    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,6
    If KeyDown(cbKeyLControl) And reload=0 Then
        PlaySound ääniAmmu,50
        reload=10 'lataa 1/4 sekunnissa (koska framelimit 40)
    EndIf
    'lataaminen
    If reload>0 Then reload-1
            
    Next luoti

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

    'piirrä "kenttä"
   
    
    If LeftKey() Then TurnObject auto, 12
    If RightKey() Then TurnObject auto, -12    
    
    If UpKey() Then MoveObject auto, 15
    If DownKey() Then MoveObject auto, -15
    
    If KeyDown(30) Then TurnObject auto2, 12
    If KeyDown(32) Then TurnObject auto2, -12    
    
    If KeyDown(17) Then MoveObject auto2, 16
    If KeyDown(31) Then MoveObject auto2, -16    
    
    CloneCameraPosition auto2
    
    DrawScreen
    
    
    
    

 Forever
Locked