Page 2 of 154

Re: Tyhmät kysymykset

Posted: Mon Sep 03, 2007 10:08 pm
by koodaaja
kauhu wrote:luulen että, en tarvii enää muuta neuvoa , kun yks oon tajunnu et miten tehää se että jos mennää vaikka oven kohalle niin se menee siihen toiseen huoneeseen tai taloon jne , mutta mulla tulee aina mavi siinä kun koitan saada että kartta vaihtuis. se aina mavittaa :o Eli osaan että jos mennään johonkin kohtaa kartassa niin tulee näkyville joku toinen objekti tai jotai, mutta en tajuu kun aina kun se latais uuden kartan niin " TöK " " memory acces violation" se memory acces violation tulee kait siinä kun poistan sen vanhan mapin pois ja kun meen taas pois sieltä talosta niin se latais sen alunperisen mapin , mutta ei toimi :x
Onko se siirtyminen funktiossa? Silloin kartan on oltava globaali. Ja kannattaa tehdä se niin, että sinulla on yksi iso kartta, joka on jaettu pieniin huoneisiin. Sitten voit vain objektia siirtämällä liikkua paikasta toiseen.

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 12:25 pm
by kauhu
Muutes eihän se noin toimi, kun haluan nimet niitten vihujen päälle olin tehny näin

Code: Select all


For i = 0 To 9
    vihu.vihut = New(vihut)
    vihu\obj = CloneObject(mastermovia)
    PositionObject vihu\obj,Rand(-ScreenWidth()/2,ScreenWidth()/2),Rand(-ScreenHeight()/2,ScreenHeight()/2)
    vihu\hyökkäys = Rand(2,6)
    vihu\suojaus = Rand(2,4)
    vihu\enkat =100
    vihu\nimi$="Movia"

Next i

Repeat

For vihu.vihut = Each vihut
     Text ObjectX(vihu\obj),ObjectY(vihu\obj)+24,nimi
   Next vihu




niin eihän se tossa tiiä minkä vihun päälle pitäis laittaa tollanen nimi. ja sit siin sena alla lukee "0" mistäs moinen en ole missää
n halunnu mitään nollaa sen kohalle.

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 12:51 pm
by Jonez
Yritäs saada sitä kieliasua vähän luettavammaks, kun ei tosta sun selityksestä oikein saa selvää.

Se nolla näytetään siksi, koska et pyydä sitä konetta missään vaiheessa näyttämään vihun nimeä (eli arvoa muuttujasta vihu\nimi), vaan arvon kokonaislukumuuttujasta 'nimi', joka oletuksena on tietenkin nolla.

Muista myös, että sun pitää määritellä se tyyppimuuttuja merkkijonomuuttujaksi.

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 3:49 pm
by koodaaja
kauhu wrote:

Code: Select all


For i = 0 To 9
    vihu.vihut = New(vihut)
    vihu\obj = CloneObject(mastermovia)
    PositionObject vihu\obj,Rand(-ScreenWidth()/2,ScreenWidth()/2),Rand(-ScreenHeight()/2,ScreenHeight()/2)
    vihu\hyökkäys = Rand(2,6)
    vihu\suojaus = Rand(2,4)
    vihu\enkat =100
    vihu\nimi$="Movia"

Next i

Repeat

For vihu.vihut = Each vihut
     DrawtoWorld ON, ON, ON
     Text ObjectX(vihu\obj),ObjectY(vihu\obj)+24,vihu\nimi
     DrawtoWorld OFF, OFF, OFF
   Next vihu


Eli ei tulosteta mitään randomimuuttujaa, vaan sen vihun nimi. Ja piirtäminen täytyy asettaa maailman koordinaatteihin.

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 4:05 pm
by Kerosiinipelle
Tosi alkeellinen kysymys: Miten saa ammuksen törmäämään bottiin tai seinään?

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 4:34 pm
by koodaaja
Kerosiinipelle wrote:Tosi alkeellinen kysymys: Miten saa ammuksen törmäämään bottiin tai seinään?
Onko ammus typeillä toteutettu? Ja kartta tilemappi? Jos on, niin näin:

Code: Select all

If GetMap(2, ObjectX(luoti\obj), ObjectY(luoti\obj)) Then 
    DeleteObject luoti\obj
    Delete luoti
EndIf
Sitten tuo vihulaiseen, toivon että myös viholliset ovat typeillä tehtyjä:

Code: Select all

For vihu.VIHUT = Each VIHUT
    If ObjectsOverlap(vihu\obj, luoti\obj, 3) Then
        vihu\health = vihu\health - 3
        DeleteObject luoti\obj
        Delete luoti
    EndIf
Next vihu
Suunnilleen noin, toki joudut soveltamaan omaan koodiisi.

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 4:47 pm
by Kerosiinipelle
koodaaja wrote:
Kerosiinipelle wrote:Tosi alkeellinen kysymys: Miten saa ammuksen törmäämään bottiin tai seinään?
Onko ammus typeillä toteutettu? Ja kartta tilemappi? Jos on, niin näin:

Code: Select all

If GetMap(2, ObjectX(luoti\obj), ObjectY(luoti\obj)) Then 
    DeleteObject luoti\obj
    Delete luoti
EndIf
Sitten tuo vihulaiseen, toivon että myös viholliset ovat typeillä tehtyjä:

Code: Select all

For vihu.VIHUT = Each VIHUT
    If ObjectsOverlap(vihu\obj, luoti\obj, 3) Then
        vihu\health = vihu\health - 3
        DeleteObject luoti\obj
        Delete luoti
    EndIf
Next vihu
Suunnilleen noin, toki joudut soveltamaan omaan koodiisi.
Seinään törmääminen mavaa, vihut ovat objekteja.

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 4:50 pm
by Kerosiinipelle
Anteeksi tuplapostaus, mutta vieraiden viestejä ei voi editoida.

Mavaus ei johdu siitä, että niiden nimet eivät ole luoti ja obj.

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 4:52 pm
by koodaaja
Kerosiinipelle wrote:
koodaaja wrote:
Kerosiinipelle wrote:Tosi alkeellinen kysymys: Miten saa ammuksen törmäämään bottiin tai seinään?
Onko ammus typeillä toteutettu? Ja kartta tilemappi? Jos on, niin näin:

Code: Select all

If GetMap(2, ObjectX(luoti\obj), ObjectY(luoti\obj)) Then 
    DeleteObject luoti\obj
    Delete luoti
EndIf
Sitten tuo vihulaiseen, toivon että myös viholliset ovat typeillä tehtyjä:

Code: Select all

For vihu.VIHUT = Each VIHUT
    If ObjectsOverlap(vihu\obj, luoti\obj, 3) Then
        vihu\health = vihu\health - 3
        DeleteObject luoti\obj
        Delete luoti
    EndIf
Next vihu
Suunnilleen noin, toki joudut soveltamaan omaan koodiisi.
Seinään törmääminen mavaa, vihut ovat objekteja.
Toki ne objekteja ovat, niitä kun käytetään melkein kaikissa ei-isometrisissä peleissä tätä nykyä. Mutta typessä voi olla objekteja, ja useimmiten onkin. Ja tuon poistamisen jälkeenhän ei luotia saa mitenkään koskea, sitä kun ei enää ole. Muuten iskee MAV. Kun en koodistasi mitään tiedä, vähän vaikea sanoa miten tuo kannattaa tehdä.

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 5:03 pm
by Kerosiinipelle
Blaa blaa blaa

DeleteObject luoti\obj
Delete luoti
EndIf
Next vihu[/code]

Suunnilleen noin, toki joudut soveltamaan omaan koodiisi.
Seinään törmääminen mavaa, vihut ovat objekteja.[/quote]

Toki ne objekteja ovat, niitä kun käytetään melkein kaikissa ei-isometrisissä peleissä tätä nykyä. Mutta typessä voi olla objekteja, ja useimmiten onkin. Ja tuon poistamisen jälkeenhän ei luotia saa mitenkään koskea, sitä kun ei enää ole. Muuten iskee MAV. Kun en koodistasi mitään tiedä, vähän vaikea sanoa miten tuo kannattaa tehdä.[/quote]

Koodin tähän vaikuttavat kohdat:

Code: Select all


Type AMMUS 'luo kokoelma, jonka nimi on AMMUS
    Field obj
End Type 

Type AMMUS2 'luo kokoelma, jonka nimi on AMMUS
    Field obj2
End Type 

jack = LoadObject ("guy.bmp",72)

ObjectPickable jack, 2 'aseta se poimittavaksi

pati=LoadObject("bullet.bmp")
ShowObject pati,OFF

pati2=LoadObject("bigbullet.bmp")
ShowObject pati2,OFF

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

john = LoadObject ("guy.bmp",72)
ObjectPickable john, 2 'aseta se poimittavaksi
PositionObject john, 32,150 'sijoita ylemmäs

SetupCollision jack, john, 2, 2, 2
SetupCollision john, jack, 2, 2, 2
'kartta-törmäykset on hyvä esitellä viimeiseksi
SetupCollision jack, kartta, 1, 4, 2
SetupCollision john, kartta, 1, 4, 2

Repeat

    If KeyDown(cbKeyA) Then TurnObject jack,5
    If KeyDown(cbKeyD) Then TurnObject jack,-5
    If KeyDown(cbKeyW) Then MoveObject jack,2
    If KeyDown(cbKeyS) Then MoveObject jack,-1.5
    If KeyDown(cbKeyQ) Then MoveObject jack,0,-2
    If KeyDown(cbKeyE) Then MoveObject jack,0,2

    
    If LeftKey() Then TurnObject john,5
    If RightKey() Then TurnObject john,-5
    If UpKey() Then MoveObject john,1.6
    If DownKey() Then MoveObject john,-1
    If KeyDown(cbKeyn) Then MoveObject john,0,-1.6
    If KeyDown(cbKeyb) Then MoveObject john,0,1.6

    CloneCameraPosition jack    

   ObjectPick jack
    e=PickedObject()
    
    'jos poiminta osui omaan
    If e=john Then
        Color cbGreen
        Circle PickedX()-4,PickedY()+4,8,OFF
    EndIf
    
    'jos poiminta osui karttaan
    If e=kartta Then
        Color cbWhite
        Circle PickedX()-4,PickedY()+4,8,OFF    
    EndIf
    
    '------------------------
    
        ObjectPick john
    ei=PickedObject()
  'jos poiminta osui omaan
    If ei=jack Then
        Color cbGreen
        Circle PickedX()-4,PickedY()+4,8,OFF
    EndIf
    
    'jos poiminta osui karttaan
    If ei=kartta Then
        Color cbWhite
        Circle PickedX()-4,PickedY()+4,8,OFF    
    EndIf
    
    '-----------------------------------
    
        If KeyDown(cbKeyF) And reload=0 Then    
        luoti.AMMUS = New(AMMUS) 'luo uusi ammus
        luoti\obj=CloneObject(pati) 'tee klooni
        'asetetaan pati samaan paikkaan
        CloneObjectPosition luoti\obj,jack               
        'käännetään pati samaan suuntaan
        CloneObjectOrientation luoti\obj,jack           
        reload=0.1 '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
        
     
    Next luoti
    
    '----------------------
    
            If KeyDown(cbKeyM) And reload2=0 Then    
        luoti2.AMMUS2 = New(AMMUS2) 'luo uusi ammus
        luoti2\obj2=CloneObject(pati2) 'tee klooni
        'asetetaan pati samaan paikkaan
        CloneObjectPosition luoti2\obj2,john                
        'käännetään pati samaan suuntaan
        CloneObjectOrientation luoti2\obj2,john          
        reload2=40 'lataus        
    EndIf
    'päivitä aseen lataaminen
    If reload2>0 Then reload2=reload2-1

    'Päivitä kaikki ammukset
    For luoti2.AMMUS2 = Each AMMUS2
        MoveObject luoti2\obj2,6
        
       
    Next luoti2
    
    '-------------------
    
If GetMap(2, ObjectX(luoti\obj), ObjectY(luoti\obj)) Then
    DeleteObject luoti\obj
    Delete luoti
EndIf


If GetMap(2, ObjectX(luoti2\obj2), ObjectY(luoti2\obj2)) Then
    DeleteObject luoti2\obj2
    Delete luoti2
EndIf
        
        '--------------------------------

    DrawScreen 'piirrä näyttö

Forever
En koodia ole vielä tässä yksinkertaistetussa muodossa testannut koska CB tilttasi jostain syystä painaessani ctrl+v. Mutta sen pitäisi toimia.

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 5:12 pm
by koodaaja
MAV iski. En jaksa koko koodia katsoa läpi, mutta voin suoraan sanoa, että kaksi ammustyyppiä on täysin turhaa, yhteenkin voisi tallentaa kaiken.

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 5:17 pm
by Kerosiinipelle
koodaaja wrote:MAV iski. En jaksa koko koodia katsoa läpi, mutta voin suoraan sanoa, että kaksi ammustyyppiä on täysin turhaa, yhteenkin voisi tallentaa kaiken.
MAV tulee siitä seinääntörmäyksestä. Ja voiko ne tallentaa yhteen ammustyyppiin, jos toinen on konepistooli ja toinen raketinheitin? Ja kahdelle eri tyypille?

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 5:18 pm
by tuhoojabotti
Ne koodit (joidenka pitäisi tuhota padit) pitää olla siellä for luoti.AMMUS=each AMMUS /---koodi---/next luoti ja se luoti2 homma

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 5:28 pm
by Kerosiinipelle
tuhoojabotti wrote:Ne koodit (joidenka pitäisi tuhota padit) pitää olla siellä for luoti.AMMUS=each AMMUS /---koodi---/next luoti ja se luoti2 homma
Jes! Tämä toimi!

Ja sitten seuraava kysymys:

Miten saada luoti osumaan ei-type-vihollisiin? ObjectsOverlapilla ei toiminut.

Re: Tyhmät kysymykset

Posted: Tue Sep 04, 2007 9:08 pm
by koodaaja
Kerosiinipelle wrote:
tuhoojabotti wrote:Ne koodit (joidenka pitäisi tuhota padit) pitää olla siellä for luoti.AMMUS=each AMMUS /---koodi---/next luoti ja se luoti2 homma
Jes! Tämä toimi!

Ja sitten seuraava kysymys:

Miten saada luoti osumaan ei-type-vihollisiin? ObjectsOverlapilla ei toiminut.
Jos ne ovat objekteja, ObjectsOverlap toimii. Käyt vain vihutaulukon läpi luodin läpikäyntiloopissa. Jos et käytä taulukoita etkä typejä, on turha kuvitella saavasi hyvää peliä (ilman suuria vaikeuksia ja turhaa kikkailua) aikaan ;D Eli nyt ryhdyt toteuttamaan vihuja typeillä.

Re: Tyhmät kysymykset

Posted: Wed Sep 05, 2007 4:17 pm
by Kerosiinipelle
koodaaja wrote:
Kerosiinipelle wrote:
tuhoojabotti wrote:Ne koodit (joidenka pitäisi tuhota padit) pitää olla siellä for luoti.AMMUS=each AMMUS /---koodi---/next luoti ja se luoti2 homma
Jes! Tämä toimi!

Ja sitten seuraava kysymys:

Miten saada luoti osumaan ei-type-vihollisiin? ObjectsOverlapilla ei toiminut.
Jos ne ovat objekteja, ObjectsOverlap toimii. Käyt vain vihutaulukon läpi luodin läpikäyntiloopissa. Jos et käytä taulukoita etkä typejä, on turha kuvitella saavasi hyvää peliä (ilman suuria vaikeuksia ja turhaa kikkailua) aikaan ;D Eli nyt ryhdyt toteuttamaan vihuja typeillä.
No ei pelissä ole tarkoituskaan olla suuria vihumassoja.

Näinkö sen vihu-pati törmäyksen pitäisi toimia (tai pati-vihu törmäyksen):

Code: Select all

If ObjectsOverlap(luoti\obj,vihu,3) Then
*Blaa blaa*
EndIf
Tuo ainakin minulla mavaa.

Re: Tyhmät kysymykset

Posted: Wed Sep 05, 2007 6:10 pm
by Guest
Miten olisi paras toteuttaa törmäystunnistus (objekteilla vai piirtämällä CoolBasic:in piirtokomennoilla esimerkiksi neliönmuotoinen alue)?
Yritin tehdä peliini seinän jota päin mentäessä pelaaja pysähtyy; tein seinän kuvatiedostoksi piirtäen sen paintilla ja liitin sen peliin, nyt kun törmään siihen piirtämääni kuvaan pelaaja luisuu oudosti. Kun yritin parannella sitä, pelaaja menee seinän läpi. Ajattelin myös, että jos tekisin monta seinää peliin kuvatiedostona, se varmasti olisi raskasta ja varmaan kuormittaisi paljon muistia.
Tiedättekö te viisaammat mikä olisi vialla ja miten toteuttaisin seinät peliini?

Vielä viimeinen kysymys:
Onko totta kun jotkut sanovat ettei ohjelmointia voi oppia ellei ole hyvä matikkapää? Vai onko mahdollista oppia esimerkiksi joillakin kursseilla ohjelmointia vaikka ei olisi hyvä matematiikassa?

Re: Tyhmät kysymykset

Posted: Wed Sep 05, 2007 6:32 pm
by esa94
Oli sinulla hyvä matikkapää tai sitten ei, joudut kuitenkin käyttämään matematiikkaa ohjelmoidessa. Mietitään esimerkiksi pelihahmon elkkuja. Yksinkertaisimmillaan vähennät niistä yhden kerrallaan Yksinkertaista, mutta silti matematiikkaa. Pieniin projekteihin ei tarvitse kuitenkaan mitään hyvää matikkapäätä, kunhan osaa perusteet. Vähintään.

Re: Tyhmät kysymykset

Posted: Wed Sep 05, 2007 7:53 pm
by koodaaja
Kerosiinipelle: se toimii. Vika on muualla koodissa. Ja jos sinulla on enemmän kuin yksi vihu kerrallaan olemassa, käytä typejä tai taulukoita.

Guest: Tutustuhan tilekarttoihin, niillä saat toimivat törmäykset seiniin yhdellä komennolla. Ja jos kolmiulotteinen ( ja kaksiulotteinen ) hahmotuskyky ovat kunnossa ja osaat käyttää vektoreita, ei tule mitään ongelmia. Jos tämä avaruudellinen hahmotuskyky ei ole kunnossa, se on aika pitkälti voi voi, jos haluat mitään isompaa graafista tehdä. Vektorit taas oppii helposti, ja on syytäkin oppia, jos haluat mitään kunnollista aikaan saada. Eli vaikka tekstiä kirjoittaa näytölle.

Re: Tyhmät kysymykset

Posted: Thu Sep 06, 2007 6:04 pm
by koppanen
ööö nyt meni sormi suuhun... miteen mää muutan sen et kuinka lähelt se kamera sitä ukkoo seuraa..?