Tyhmät kysymykset (I/2009)
Re: Tyhmät kysymykset
Koska yrität käyttää objektia jota ei ole olemassa:
Käydään läpi kohta kohdalta:
1. Aloitamme silmukan alusta
2. Tietyssä kohtaa tarkastamme onko pelihahmo smaragdin kohdalla.
3. Jos on, poistamme smaragdin
4. Nyt kun smaragdi on poistettu, menemme silmukan loppuun ja palaamme sieltä alkuun.5
5. Tarkastamme uudestaan onko pelihahmo smaragdin kohdalla. Enää ei objektia "smaragdi" ole, joten tulee mav.
Tee vaikka muuttuja joka kertoo onko smaragdi tuhottu. Ennen törmäyksentarkistusta katsot onko smaragdi enää olemassa. Jos ei ole, törmäyksentarkistusta ei tehdä.
Käydään läpi kohta kohdalta:
1. Aloitamme silmukan alusta
2. Tietyssä kohtaa tarkastamme onko pelihahmo smaragdin kohdalla.
3. Jos on, poistamme smaragdin
4. Nyt kun smaragdi on poistettu, menemme silmukan loppuun ja palaamme sieltä alkuun.5
5. Tarkastamme uudestaan onko pelihahmo smaragdin kohdalla. Enää ei objektia "smaragdi" ole, joten tulee mav.
Tee vaikka muuttuja joka kertoo onko smaragdi tuhottu. Ennen törmäyksentarkistusta katsot onko smaragdi enää olemassa. Jos ei ole, törmäyksentarkistusta ei tehdä.
Re: Tyhmät kysymykset
Eli, jos minulla on luoti joka ei ole pallo, vaan viiva, kuinka saan sen osoittamaan samaan suuntaan kuin pelaaja sinä hetkenä kun se ammuttiin?
Jos et tajunnut, tässä on esimerkki:
Ampuminen nyt:
Ampuminen miten sen haluan:
Tiedä sitten onko tyhmä vai järkevä kysymys, mutta itse en ainakaan onnistunut tehtävässä.
Jos et tajunnut, tässä on esimerkki:
Ampuminen nyt:
Ampuminen miten sen haluan:
Tiedä sitten onko tyhmä vai järkevä kysymys, mutta itse en ainakaan onnistunut tehtävässä.
Re: Tyhmät kysymykset
Jos käytät objekteja, tuo hoituu helposti yhdellä komennolla: Cloneobjectorientation objekti, kohde_objektiBulletStorm wrote:Eli, jos minulla on luoti joka ei ole pallo, vaan viiva, kuinka saan sen osoittamaan samaan suuntaan kuin pelaaja sinä hetkenä kun se ammuttiin?
Teinpä vielä nopean esimerkin vaikka tuskin sille on tarvetta:
Code: Select all
bulletimage = MakeImage(6,2)
Color 255,0,0
DrawToImage bulletimage
Box 0,0,6,2
DrawToScreen
masterbullet = MakeObject(72)
PaintObject masterbullet,-bulletimage
ShowObject masterbullet, OFF
soldier = LoadObject("media\soldier.bmp",72)
Type BULLETS
Field obj
End Type
Repeat
MoveObject soldier, (UpKey()-DownKey())*3
TurnObject soldier, (LeftKey()-RightKey())*5
If KeyDown(157) And reload < Timer() Then
bullet.BULLETS = New(BULLETS)
bullet\obj = CloneObject(masterbullet)
CloneObjectPosition bullet\obj, soldier
CloneObjectOrientation bullet\obj, soldier
MoveObject bullet\obj, 20
reload = Timer()+100
EndIf
For bullet.BULLETS = Each BULLETS
MoveObject bullet\obj, 5
If Distance2(bullet\obj, soldier) > 300 Then
DeleteObject bullet\obj
Delete bullet
EndIf
Next bullet
DrawScreen
Forever
Re: Tyhmät kysymykset
Jännää sinänsä, että kun kerran kokeilin tuota, se ei toiminut. No, kokeilen vielä kerran.Murskaaja wrote:Jos käytät objekteja, tuo hoituu helposti yhdellä komennolla: Cloneobjectorientation objekti, kohde_objektiBulletStorm wrote:Eli, jos minulla on luoti joka ei ole pallo, vaan viiva, kuinka saan sen osoittamaan samaan suuntaan kuin pelaaja sinä hetkenä kun se ammuttiin?
Teinpä vielä nopean esimerkin vaikka tuskin sille on tarvetta:Code: Select all
Koodia...
EDIT: Kävi näin:
Last edited by BulletStorm on Thu Feb 21, 2008 2:49 pm, edited 1 time in total.
Re: Tyhmät kysymykset
Sattuuko kukaan tietämään kuinka saa tasohyppelypelissä ohjelman tarkistamaan onko edessäpäin mitään ja kertomaan mitä se on?
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Tyhmät kysymykset
Luoti on toki piirrettävä niin, että kuvassa viiva on vaaka-asennossa, CB kun olettaa sen olevan niinpäin. (piirretäänhän ukotkin niin, että ne "katsovat" oikealle)BulletStorm wrote:Jännää sinänsä, että kun kerran kokeilin tuota, se ei toiminut. No, kokeilen vielä kerran.Murskaaja wrote:Jos käytät objekteja, tuo hoituu helposti yhdellä komennolla: Cloneobjectorientation objekti, kohde_objektiBulletStorm wrote:Eli, jos minulla on luoti joka ei ole pallo, vaan viiva, kuinka saan sen osoittamaan samaan suuntaan kuin pelaaja sinä hetkenä kun se ammuttiin?
Teinpä vielä nopean esimerkin vaikka tuskin sille on tarvetta:Code: Select all
Koodia...
EDIT: Kävi näin:
Re: Tyhmät kysymykset
Niin se onkin tehty. Jos pelaaja on vaaka-asennossa, viiva näyttäisi tulevan aseesta, mutta kun pelaaja osoittaa vähänkin muualle, luoti ei ole "oikeinpäin".koodaaja wrote:
Luoti on toki piirrettävä niin, että kuvassa viiva on vaaka-asennossa, CB kun olettaa sen olevan niinpäin. (piirretäänhän ukotkin niin, että ne "katsovat" oikealle)
Re: Tyhmät kysymykset
EDIT: Ei mitään, ajattelin väärin. Koodi toimii ainakin minulla.
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
-
- Advanced Member
- Posts: 485
- Joined: Tue Aug 28, 2007 3:53 pm
- Location: Suomi, Finland
- Contact:
Re: Tyhmät kysymykset
onkos latauksen lomassa muistettu pyöritys arvo? eli loadobject(plku,p-arvo) jos pyöritys arvoa ei anneta se on 0 ja luoti ei näytä pyörivän vaikka sitä kääntää kyllähän sen kulma muuttuu mutta sitä ei nää...
Re: Tyhmät kysymykset
Pelissäni on kummallekin pelaajalle omat ruudut, jotka olen tehnyt (ottox90:täkö?) tekemallä funktiolla. Nyt on ongelmaa efektien kanssa. Kun pelaaja ampuu toisen pelaajan niin verta pitäisi lentää, mutta koska funktio tekee pelaajien ruudut kuvista niin veri jää ilmeisesti sen alle. Objecteilla verta ei voi tehdä, koska se on pitemmän päälle liian raskasta. Niin miten tuon veren saisi piirtymään pelaajien ruuduille?
-
- Advanced Member
- Posts: 349
- Joined: Mon Aug 27, 2007 9:00 pm
- Location: Lapinjärvi, Finland
- Contact:
Re: Tyhmät kysymykset
Oletan että käytät pelissäsi tilekarttoja ja haluat veren näkyvän kartan päällä mutta kuitenkin joidenkin objektien alla. Tässä ratkaisu:
"Verta" saa enteristä lisättyä hahmon eteen.
Ota huomioon että karttamuuttuja (ja muut veren alle jäävät objektit) täytyy nyt esitellä camera funktiossa joten niiden kannattaa olla globaaleja tai voit muokata camera funktion siten että tarvittavat muuttujat tuodaan funktioon parametrinä. Tai sitten voit tehdä erillisen piilotus/näyttö funktion joka piilottaa ja palauttaa veren alle jäävät objektit.
EDIT: Ääh, pientä korjailua.
"Verta" saa enteristä lisättyä hahmon eteen.
Code: Select all
SCREEN 1024,768
Type veri
Field aika
Field x
Field y
End Type
Global isäntäveriimage, kartta
isäntäveriimage=makeimage(10,10)
drawtoimage isäntäveriimage
color cbred
circle 0,0,10,1
drawtoscreen
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp") 'ladataan kartta
Const vihumäärä=5
Dim vihu_obj(vihumäärä)
Dim vihu_pic(vihumäärä)
ukko = LoadObject ("Media\guy.bmp",72)
ShowObject ukko,OFF
For i=1 To vihumäärä
vihu_obj(i)=CloneObject(ukko)
SetupCollision vihu_obj(i),kartta,2,4,2
Next i
For i=1 To vihumäärä
vihu_pic(i)=MakeImage(300,300)
Next i
Repeat
For i=1 To vihumäärä-1
TurnObject vihu_obj(i),Rand(-20,20)
MoveObject vihu_obj(i),3
Next i
If UpKey() Then MoveObject vihu_obj(5),3
If LeftKey() Then TurnObject vihu_obj(5),3
If RightKey() Then TurnObject vihu_obj(5),-3
x=ObjectX(vihu_obj(5))
y=ObjectY(vihu_obj(5))
ang=ObjectAngle(vihu_obj(5))
If KeyDown(cbkeyreturn) Then addveri( x+Cos(Ang)*20,-y-Sin(ang)*20 )
For i=1 To 5
camera(vihu_pic(i),ObjectX(vihu_obj(i)),ObjectY(vihu_obj(i)))
Next i
DrawImage vihu_pic(1),0,0
DrawImage vihu_pic(2),310,0
DrawImage vihu_pic(3),620,0
DrawImage vihu_pic(4),0,310
DrawImage vihu_pic(5),310,310
DrawScreen
Forever
Function camera(img,x,y)
l=ImageWidth(img)
k=ImageHeight(img)
UpdateGame
DrawToImage img
ClsColor cbblack
Cls
PositionCamera x,y
PositionCamera CameraX()+((ScreenWidth()-l)/2),CameraY()-((ScreenHeight()-k)/2)
DrawGame
päivitäveret() // ------------ tänne verien piirto
SetMap kartta,OFF,OFF //--piilotetaan kaikki objektit (myös kartat) joiden ei haluta piirtyvän veren päälle
DrawGame
SetMap kartta,ON,ON //--palautetaan näkyvyys
DrawToScreen
EndFunction
Function addveri(_x,_y)
v.veri=New(veri)
v\x=_x
v\y=_y
v\aika=Timer()
End Function
Function päivitäveret()
For v.veri=Each veri
DrawImage isäntäveriimage,v\x,v\y
If v\aika+5000<Timer() Then // viiden sekunnin ajastin
Delete v
EndIf
Next v
End Function
EDIT: Ääh, pientä korjailua.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Runoblogi, vuodatusta ja sekoiluja.
Re: Tyhmät kysymykset
No taas esitän yhden tyhmän kysymyksen... Tai oikeastaan kaksi pientä
1. Millä koodilla saa tehtyy sinne peliruudun sille siniselle alueelle missä on myös tärkeä [X] nappi niin pistettyy pelin nimen(tai jotain kirjoitusta)
2. Mitenkäs sais sellaisen kehykset vaikka joku sinisen laatikon sisällä koko peli ja jotain nappeja siinä reunojen ulkopuolella että niitä vois painella(esim valikko nappi tai inventory tai pelkä joku super komento)
Aluksi käytän tätä koodia vaan koristeena.(huom. sen pitäisi niinkuin muuttaa ne kehykset missä peli on)
1. Millä koodilla saa tehtyy sinne peliruudun sille siniselle alueelle missä on myös tärkeä [X] nappi niin pistettyy pelin nimen(tai jotain kirjoitusta)
2. Mitenkäs sais sellaisen kehykset vaikka joku sinisen laatikon sisällä koko peli ja jotain nappeja siinä reunojen ulkopuolella että niitä vois painella(esim valikko nappi tai inventory tai pelkä joku super komento)
Aluksi käytän tätä koodia vaan koristeena.(huom. sen pitäisi niinkuin muuttaa ne kehykset missä peli on)
Älä kysy multa!
-
- Active Member
- Posts: 126
- Joined: Wed Aug 29, 2007 3:55 pm
Re: Tyhmät kysymykset
Ekaan kysymykseen : SetWindow "Pelin nimi"
Tokaa en oikein ymmärtänyt, mutta ruudun ulkopuolelle ei voi piirtää mitään ilman dlliä jos sitä tarkoitit.
Tokaa en oikein ymmärtänyt, mutta ruudun ulkopuolelle ei voi piirtää mitään ilman dlliä jos sitä tarkoitit.
Tiimit ja tuotokset:
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit
Re: Tyhmät kysymykset
Oikeestaan ruudun sisälle kehykset...Eräs cb koodaaja wrote:Ekaan kysymykseen : SetWindow "Pelin nimi"
Tokaa en oikein ymmärtänyt, mutta ruudun ulkopuolelle ei voi piirtää mitään ilman dlliä jos sitä tarkoitit.
Älä kysy multa!
-
- Active Member
- Posts: 126
- Joined: Wed Aug 29, 2007 3:55 pm
Re: Tyhmät kysymykset
Siis en oikeen tajua. Haluatko siis ikkunoita tämän cb:n ikkunan sisään? ->Katso SDK:sta Ikkunamoottori.
Tiimit ja tuotokset:
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit
Re: Tyhmät kysymykset
No kehykset joudut itse piirtämään jollain tapaa. Joko esim. paintilla, tai käyttäen cb:n piirtokomentoja. Voit ladata ohjelmaan kuvia funktiolla LoadImage. Sun pitää siis piirtää ne kehykset ohjelmaan käyttäen komentoa DrawImage. Katso manuaalista esimerkkejä.
Oman nappulan teko on sinäsä hankalampi homma. Joudut käyttämään joko omaa tai muiden tekemää funktiota. Tähän mennessä olet todennäköisesti tutustunut vain cb:n sisäisiin funktioihin (Input(), Timer() jne). Funktio siis on eräänlainen pieni ohjelma erillään pääohjelmasta, joka voi palauttaa arvon. Funktioita voi kutsua milloin vain.
Funktiot on aika hankala asia aloittelijalle, mutta täysin yksinkertaisia sitten kun ne osaa. Kannattaa katsoa manuaalista 'Function'.
Tein tässä nopean esimerkin nappulasta, joka on toteutettu aika huonolla funktiolla. Sun ei periaatteessa pidä tajuta tästä funktiosta muuta kuin:
1. Sille annetaan arvoja (rivi 11): Piirrettävä teksti ja laatikon koordinaatit. Voit myös antaa sille oman leveyden ja pituuden jos haluat. Kokeile muuttaa rivi 11 tällaiseksi: If Nappula( "Ruoki", 20, 20, 100, 100 ) Then
2. Funktio osaa piirtää annettujen arvojen perusteella ruudulle laatikon, joka muuttaa väriä riippuen hiiren sijainnista.
3. Jos hiiri on laatikon sisällä ja hiiren 1-nappula päästetään, funktio osaa palauttaa arvon 1. Itse ohjelma taas vähentää muuttujasta 'nälkä' 10 aina kun funktio palauttaa arvon 1.
Edit. Ainiin se funkkari
Edit. Ja täytyy lisätä tähän vielä täyttä offtopikkia. Mua suoraan sanottuna ärsyttää kun nykyään näkee niin paljon vastauksia ongelmiin tyyliin: "Katso SDK". Aloittelijoiden kuuluu oppia asiat kantapään kautta. Sitten kun osaa niin voi hyvin ruveta käyttämään SDK:ta. Muistatte varmaan sen jutun pyörästä?
Oman nappulan teko on sinäsä hankalampi homma. Joudut käyttämään joko omaa tai muiden tekemää funktiota. Tähän mennessä olet todennäköisesti tutustunut vain cb:n sisäisiin funktioihin (Input(), Timer() jne). Funktio siis on eräänlainen pieni ohjelma erillään pääohjelmasta, joka voi palauttaa arvon. Funktioita voi kutsua milloin vain.
Funktiot on aika hankala asia aloittelijalle, mutta täysin yksinkertaisia sitten kun ne osaa. Kannattaa katsoa manuaalista 'Function'.
Tein tässä nopean esimerkin nappulasta, joka on toteutettu aika huonolla funktiolla. Sun ei periaatteessa pidä tajuta tästä funktiosta muuta kuin:
1. Sille annetaan arvoja (rivi 11): Piirrettävä teksti ja laatikon koordinaatit. Voit myös antaa sille oman leveyden ja pituuden jos haluat. Kokeile muuttaa rivi 11 tällaiseksi: If Nappula( "Ruoki", 20, 20, 100, 100 ) Then
2. Funktio osaa piirtää annettujen arvojen perusteella ruudulle laatikon, joka muuttaa väriä riippuen hiiren sijainnista.
3. Jos hiiri on laatikon sisällä ja hiiren 1-nappula päästetään, funktio osaa palauttaa arvon 1. Itse ohjelma taas vähentää muuttujasta 'nälkä' 10 aina kun funktio palauttaa arvon 1.
Edit. Ainiin se funkkari
Code: Select all
nälkä = 100
Repeat
//Lisätään nälkää 500 millisekunnin välein.
If nälkä_time + 500 < Timer() Then
nälkä_time = Timer()
nälkä = nälkä + Rand( 2, 4 )
EndIf
//Kutsutaan nappula-funktiota. Annetaan arvot: Ruoki, 20 ja 20, joissa 20, 20 on koordinaatit mihin funktio piirretään.
If Nappula( "Ruoki", 20, 20 ) Then
nälkä = nälkä - 10
EndIf
Color cbWhite
Text 200, 20, "Nälkä: " + nälkä
DrawScreen
Forever
//NAPPULA-FUNKTIO. Funktio tekee seuraavat asiat: Piirtää laatikon ja kirjoittaa annetun sanan keskelle laatikkoa.
//Laatikko muuttaa väriä sen mukaan onko hiiri laatikon päällä ja onko hiiren 1-nappula pohjassa.
//Funktio myös tarkastaa päästetäänkö hiiren nappula pohjasta. Jos päästetään, funktio PALAUTTAA PÄÄOHJELMAAN arvon 1.
Function Nappula( _txt$, _x, _y, _width = 0, _height = 0 )
_tWidth = TextWidth( _txt$ )
_tHeight = TextHeight( _txt$ )
If _width < _tWidth Then _width = _tWidth + 20
If _height < _tHeight Then _height = _tHeight + 10
If MouseX() > _x And MouseX() < _x + _width Then
If MouseY() > _y And MouseY() < _y + _height Then
bMouseOn = True
EndIf
EndIf
If bMouseOn = True Then
If MouseDown( 1 ) Then
Color 100, 100, 100
Else
Color 220, 220, 220
EndIf
Else
Color 180, 180, 180
EndIf
Box _x, _y, _width, _height
Color 100, 100, 100
Box _x, _y, _width, _height, 0
Color cbBlack
Text _x + _width / 2 - _tWidth / 2, _y + _height / 2 - _tHeight / 2, _txt$
//Tässä funtkio palauttaa arvon True, eli yksi, JOS hiiren 1-nappula päästetään pohjasta.
//JOS funktio palauttaa arvon 1, niin rivillä 11 oleva ehtolauseke toteutuu ja nälkä = nälkä - 10.
If MouseUp( 1 ) Then Return True
End Function
-
- Member
- Posts: 91
- Joined: Thu Dec 20, 2007 11:11 am
- Location: Espoo
Re: Tyhmät kysymykset
Miten saisin tehtyä sellaisen tilekartan goto(tai jtn muuta) että kun tässä kartassani menee alas josta pääsisi ulos, kun on ovella, menee kaupunkiin.
En osaa tätä, oon noobi
En osaa tätä, oon noobi
Code: Select all
labra:
FrameLimit 40 'rajoita nopeutta
kartta = LoadMap("Media\firetownlab.til","Media\tileset.bmp")
ukko = LoadObject ("Media\guy.bmp",72)
Repeat
SetupCollision ukko, kartta, 1,4,2
'Ukon ohjaus
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,7
If DownKey() Then MoveObject ukko,-7
DrawGame
CloneCameraPosition ukko
DrawScreen
Forever
kaupunki:
FrameLimit 40 'rajoita nopeutta
kartta = LoadMap("Media\firetown.til","Media\tileset.bmp")
ukko = LoadObject ("Media\guy.bmp",72)
Repeat
SetupCollision ukko, kartta, 1,4,2
'Ukon ohjaus
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,7
If DownKey() Then MoveObject ukko,-7
DrawGame
CloneCameraPosition ukko
DrawScreen
Forever
+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+
|T|u|r|t|l|e| |P|r|o|d|u|c|t|i|o|n|s|
+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+
|T|u|r|t|l|e| |P|r|o|d|u|c|t|i|o|n|s|
+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+
-
- Active Member
- Posts: 126
- Joined: Wed Aug 29, 2007 3:55 pm
Re: Tyhmät kysymykset
Vaihtoehto 1: Laita karttaan oven kohdalle dataa ja luet sitä ohjelmassa GetMapilla. Jos ukon kohdalla on dataa siirrytään vaikka gotolla toiseen koohtaan koodissa.
Vaihtoehto 2: Laita oven kohdalle ovi-objekti ja tarkasta koodissa Objectsoverlapilla onko ukko oven kohdalla.
Vaihtoehto 2: Laita oven kohdalle ovi-objekti ja tarkasta koodissa Objectsoverlapilla onko ukko oven kohdalla.
Tiimit ja tuotokset:
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit
-
- Member
- Posts: 91
- Joined: Thu Dec 20, 2007 11:11 am
- Location: Espoo
Re: Tyhmät kysymykset
Ok kiitos
+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+
|T|u|r|t|l|e| |P|r|o|d|u|c|t|i|o|n|s|
+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+
|T|u|r|t|l|e| |P|r|o|d|u|c|t|i|o|n|s|
+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+