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.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 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
Tyhmät kysymykset (I/2009)
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Tyhmät kysymykset
Re: Tyhmät kysymykset
Muutes eihän se noin toimi, kun haluan nimet niitten vihujen päälle olin tehny näin
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.
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
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.
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.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Tyhmät kysymykset
Eli ei tulosteta mitään randomimuuttujaa, vaan sen vihun nimi. Ja piirtäminen täytyy asettaa maailman koordinaatteihin.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
Re: Tyhmät kysymykset
Tosi alkeellinen kysymys: Miten saa ammuksen törmäämään bottiin tai seinään?
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Tyhmät kysymykset
Onko ammus typeillä toteutettu? Ja kartta tilemappi? Jos on, niin näin:Kerosiinipelle wrote:Tosi alkeellinen kysymys: Miten saa ammuksen törmäämään bottiin tai seinään?
Code: Select all
If GetMap(2, ObjectX(luoti\obj), ObjectY(luoti\obj)) Then
DeleteObject luoti\obj
Delete luoti
EndIf
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
Re: Tyhmät kysymykset
Seinään törmääminen mavaa, vihut ovat objekteja.koodaaja wrote:Onko ammus typeillä toteutettu? Ja kartta tilemappi? Jos on, niin näin:Kerosiinipelle wrote:Tosi alkeellinen kysymys: Miten saa ammuksen törmäämään bottiin tai seinään?
Sitten tuo vihulaiseen, toivon että myös viholliset ovat typeillä tehtyjä:Code: Select all
If GetMap(2, ObjectX(luoti\obj), ObjectY(luoti\obj)) Then DeleteObject luoti\obj Delete luoti EndIf
Suunnilleen noin, toki joudut soveltamaan omaan koodiisi.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
Re: Tyhmät kysymykset
Anteeksi tuplapostaus, mutta vieraiden viestejä ei voi editoida.
Mavaus ei johdu siitä, että niiden nimet eivät ole luoti ja obj.
Mavaus ei johdu siitä, että niiden nimet eivät ole luoti ja obj.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Tyhmät kysymykset
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ä.Kerosiinipelle wrote:Seinään törmääminen mavaa, vihut ovat objekteja.koodaaja wrote:Onko ammus typeillä toteutettu? Ja kartta tilemappi? Jos on, niin näin:Kerosiinipelle wrote:Tosi alkeellinen kysymys: Miten saa ammuksen törmäämään bottiin tai seinään?
Sitten tuo vihulaiseen, toivon että myös viholliset ovat typeillä tehtyjä:Code: Select all
If GetMap(2, ObjectX(luoti\obj), ObjectY(luoti\obj)) Then DeleteObject luoti\obj Delete luoti EndIf
Suunnilleen noin, toki joudut soveltamaan omaan koodiisi.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
Re: Tyhmät kysymykset
Seinään törmääminen mavaa, vihut ovat objekteja.[/quote]Blaa blaa blaa
DeleteObject luoti\obj
Delete luoti
EndIf
Next vihu[/code]
Suunnilleen noin, toki joudut soveltamaan omaan koodiisi.
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
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Tyhmät kysymykset
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
MAV tulee siitä seinääntörmäyksestä. Ja voiko ne tallentaa yhteen ammustyyppiin, jos toinen on konepistooli ja toinen raketinheitin? Ja kahdelle eri tyypille?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.
-
- Advanced Member
- Posts: 485
- Joined: Tue Aug 28, 2007 3:53 pm
- Location: Suomi, Finland
- Contact:
Re: Tyhmät kysymykset
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
Jes! Tämä toimi!tuhoojabotti wrote:Ne koodit (joidenka pitäisi tuhota padit) pitää olla siellä for luoti.AMMUS=each AMMUS /---koodi---/next luoti ja se luoti2 homma
Ja sitten seuraava kysymys:
Miten saada luoti osumaan ei-type-vihollisiin? ObjectsOverlapilla ei toiminut.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Tyhmät kysymykset
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ä.Kerosiinipelle wrote:Jes! Tämä toimi!tuhoojabotti wrote:Ne koodit (joidenka pitäisi tuhota padit) pitää olla siellä for luoti.AMMUS=each AMMUS /---koodi---/next luoti ja se luoti2 homma
Ja sitten seuraava kysymys:
Miten saada luoti osumaan ei-type-vihollisiin? ObjectsOverlapilla ei toiminut.
Re: Tyhmät kysymykset
No ei pelissä ole tarkoituskaan olla suuria vihumassoja.koodaaja wrote: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ä.Kerosiinipelle wrote:Jes! Tämä toimi!tuhoojabotti wrote:Ne koodit (joidenka pitäisi tuhota padit) pitää olla siellä for luoti.AMMUS=each AMMUS /---koodi---/next luoti ja se luoti2 homma
Ja sitten seuraava kysymys:
Miten saada luoti osumaan ei-type-vihollisiin? ObjectsOverlapilla ei toiminut.
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
Re: Tyhmät kysymykset
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?
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
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.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Tyhmät kysymykset
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.
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
ööö nyt meni sormi suuhun... miteen mää muutan sen et kuinka lähelt se kamera sitä ukkoo seuraa..?