Page 48 of 50
Re: Tyhmät kysymykset (I/2011)
Posted: Tue Nov 29, 2011 10:06 pm
by Tuxi
Miten saan hypyn korkeuden pysymään vakiona FPS-riippumattomassa tasoloikassa? Hypyn korkeus nimittäin näyttää kasvavan FPS:n laskiessa, milloin nopeuskerroin on suurempi.
EDIT:Löysin vian eri paikasta, kun missä luulin sen olevan. Olin nimittäin tehnyt hypyn sillä tavalla, että mitä kauemmin hyppynappia painetaan, sitä korkeampi hyppy. En tietenkään ollut muistanut muuttaa sitä viritelmää FPS-riippumattomaksi.
Re: Tyhmät kysymykset (I/2011)
Posted: Wed Nov 30, 2011 9:04 am
by axu
Tuxi wrote:Miten saan hypyn korkeuden pysymään vakiona FPS-riippumattomassa tasoloikassa? Hypyn korkeus nimittäin näyttää kasvavan FPS:n laskiessa, milloin nopeuskerroin on suurempi.
Kiihtyvyyksiäkin (eli myös ns. gravitaatiovakio) pitää muuttaa, kun nopeudet muuttuu frametimen mukaan. En nyt muista miten päin asia piti hoitaa
Re: Tyhmät kysymykset (I/2011)
Posted: Wed Nov 30, 2011 6:18 pm
by FIN_MetsaSusi
Yritin luoda Field Tyypin
tileBld johon on määritetty muuttujat
tile_X ja
tile_Y. Arvon
newTile\tile_x:lle ja
newTile\tile_y:lle sijainnin käyttämällä randia. Esim.
newTile\tile_x=Rand(1,9) (piirtovaiheessa heitellään tileruudukon oikeaan kohtaan). Mutta sitten on sellainen ongelma että tiilit tuppaavat menemään päällekkäin enkä onnistunut tekemään tarkistusta jolla tämän välttäisi täydellisesti. Ensiksi tuli mieleen että nehän pitää tarkistaa jotenkin seuraavanlaisella pätkällä:
Code: Select all
If newTile\tile_x = newTile\tile_x And newTile\tile_y = newTile\tile_y Then newTile\tile_x=Rand(1,9)...
Tai:
Code: Select all
If newTile\tile_x = iTile\tile_x And newTile\tile_y = iTile\tile_y Then newTile\tile_x=Rand(1,9)...
Ilmeisesti tarkistus toimii - kerran - mutta jos tilet sattuvat menemään uudestaan päällekkäin niin siinäpä sitä sitten ollaan. Mitään ideoita pomminvarmasta tarkistuksesta? Piirtovaihe ei saisi alkaa ellei kenttä ole vielä valmis.
Re: Tyhmät kysymykset (I/2011)
Posted: Wed Nov 30, 2011 6:53 pm
by Awaclus
FIN_MetsaSusi wrote:Yritin luoda Field Tyypin
tileBld johon on määritetty muuttujat
tile_X ja
tile_Y. Arvon
newTile\tile_x:lle ja
newTile\tile_y:lle sijainnin käyttämällä randia. Esim.
newTile\tile_x=Rand(1,9) (piirtovaiheessa heitellään tileruudukon oikeaan kohtaan). Mutta sitten on sellainen ongelma että tiilit tuppaavat menemään päällekkäin enkä onnistunut tekemään tarkistusta jolla tämän välttäisi täydellisesti. Ensiksi tuli mieleen että nehän pitää tarkistaa jotenkin seuraavanlaisella pätkällä:
Code: Select all
If newTile\tile_x = newTile\tile_x And newTile\tile_y = newTile\tile_y Then newTile\tile_x=Rand(1,9)...
Tai:
Code: Select all
If newTile\tile_x = iTile\tile_x And newTile\tile_y = iTile\tile_y Then newTile\tile_x=Rand(1,9)...
Ilmeisesti tarkistus toimii - kerran - mutta jos tilet sattuvat menemään uudestaan päällekkäin niin siinäpä sitä sitten ollaan. Mitään ideoita pomminvarmasta tarkistuksesta? Piirtovaihe ei saisi alkaa ellei kenttä ole vielä valmis.
Tee tähän tyyliin:
Code: Select all
newTile.tiles = New (tiles)
asdasdad:
lolol = False
newTile\tile_x = Rand (1,9)
newTile\tile_y = Rand (1,9)
For itile.tiles = Each tiles
If <tässä kohtaa tarkastetaan, onko yhdenkään kanssa samassa paikassa mutta en nyt jaksa selaimella koodata> Then lolol = True
Next itile
If lolol Then Goto asdasdad
Re: Tyhmät kysymykset (I/2011)
Posted: Wed Nov 30, 2011 8:11 pm
by jätkä
tuli tämmönen ongelma kun teen zombipeliä eli kun tyypin pitäisi kuolla niin se ei kuole. kuolema on tehty if lausekkeella
kuoleman koodi
Re: Tyhmät kysymykset (I/2011)
Posted: Wed Nov 30, 2011 8:31 pm
by valscion
jätkä wrote:tuli tämmönen ongelma kun teen zombipeliä eli kun tyypin pitäisi kuolla niin se ei kuole. kuolema on tehty if lausekkeella
kuoleman koodi
Jos Health-muuttujan arvo on oikeasti pienempi kuin yksi ja tuo If-lauseke käydään pelissä läpi, sekä "kuolit"-kohdassa tehdään kuoloon liittyvät hommat niin tyypin pitäisi kuolla. Eli olet tehnyt jotain edellä olevista väärin. Enempää en osaa sanoa, ellet anna hyvin tarkkaa selitystä siitä että miten olet toteuttanut pelimekaniikan koodillisesti. Helpoiten tämän saat jaettua vilauttamalla lähdekoodiasi.
Re: Tyhmät kysymykset (I/2011)
Posted: Wed Nov 30, 2011 8:50 pm
by jätkä
VesQ wrote:jätkä wrote:tuli tämmönen ongelma kun teen zombipeliä eli kun tyypin pitäisi kuolla niin se ei kuole. kuolema on tehty if lausekkeella
kuoleman koodi
Jos Health-muuttujan arvo on oikeasti pienempi kuin yksi ja tuo If-lauseke käydään pelissä läpi, sekä "kuolit"-kohdassa tehdään kuoloon liittyvät hommat niin tyypin pitäisi kuolla. Eli olet tehnyt jotain edellä olevista väärin. Enempää en osaa sanoa, ellet anna hyvin tarkkaa selitystä siitä että miten olet toteuttanut pelimekaniikan koodillisesti. Helpoiten tämän saat jaettua vilauttamalla lähdekoodiasi.
Huomasin juuri että jos saan scorea niin tuo kuoleminen ei toimi, jos alussa vaan seison ja annan zombin tappaa mua niin kuolen.
Re: Tyhmät kysymykset (I/2011)
Posted: Wed Nov 30, 2011 9:07 pm
by Latexi95
jätkä wrote:
Huomasin juuri että jos saan scorea niin tuo kuoleminen ei toimi, jos alussa vaan seison ja annan zombin tappaa mua niin kuolen.
Kristallipalloni on valitettavasti hieman vanhentunutta mallia ja on kovin sumuinen, joten en oikein näe mitään muuta kuin että todennäköisesti olet pisteiden laskentannassa muutat jossain vaiheessa epähuomiossa elkkuja, tai sitten pisteiden määrä sotkee jotenkin kuolemista. Suosittelen laittamaan koodia esille, niin ei tarvitse käyttää kristallipalloa.
Re: Tyhmät kysymykset (I/2011)
Posted: Thu Dec 01, 2011 3:35 pm
by tilehemmo
Tuli ongelma vastaan fantasia pelissä. Eli miten saan tyypin kävelemään katon alla kartassa. Eli kun kävelen niin se tyyppi on siinä päällä eikä alla.
Re: Tyhmät kysymykset (I/2011)
Posted: Thu Dec 01, 2011 3:54 pm
by Latexi95
tilehemmo wrote:Tuli ongelma vastaan fantasia pelissä. Eli miten saan tyypin kävelemään katon alla kartassa. Eli kun kävelen niin se tyyppi on siinä päällä eikä alla.
Varmaankin käytät ihan tilekarttasysteemiä? Sinun pitää laittaa katto tilekartan päälliskerrokseen pohjakerroksen sijaan. Objektit piirretään tilekartassa pohja- ja pintakerrosten väliin.
Re: Tyhmät kysymykset (I/2011)
Posted: Fri Dec 02, 2011 11:31 pm
by temu92
Pelaaja liikkuu nuolista. Tasossa x=seinä, .=lattia ja p=pelaajan aloituspaikka. Tosta tota voi sit lähtee kehittämään pistämällä useempia tiletyyppejä ja yksiväristen laatikoiden sijasta käyttää tilejä. Tuossa ny ei oo kyl tiedostosta lukemista mutta sen tekeminen onnistuu tuohon päälle ihan helposti, vaan lataat taulukkoon tiedon tiedostosta sen sijaan että kirjoitat koodieditorissa.
Code: Select all
SCREEN 800, 600
// Leveli taulukkoon
Dim level(6) As String
level(0) = "xxxxxxx"
level(1) = "x.....x"
level(2) = "x.....x"
level(3) = "xxx...x"
level(4) = "x...p.x"
level(5) = "x.....x"
level(6) = "xxxxxxx"
// Pelaajan koordinaatit
px = 0
py = 0
Dim c As String
// Etsitään pelaajan aloituspaikka tasosta
For y=0 To 6
For x=1 To Len(level(y))
c = Mid(Str(level(y)), x, 1)
// Jos pelaajan aloituspaikka löydetään niin alustetaan pelaajan koordinaatit siihen paikkaan
If c = "p" Then
px = x
py = y
EndIf
Next x
Next y
// Päälooppi
Repeat
// Mennään levelitaso läpi ja tarkistetaan mitä ON missäkin
For y=0 To 6
For x=1 To Len(level(y))
c = Mid(Str(level(y)), x, 1)
// Katsotaan mikä osa ON mapissa
Select c
Case "x" // Seinä
Color 255, 255, 255
Box 20+x*40, 60+y*40, 38, 38, True
Case "." // Lattia
Color 40, 40, 40
Box 20+x*40, 60+y*40, 38, 38, True
Case "p" // Pelaajan aloituspaikka (lattia)
Color 60, 40, 40
Box 20+x*40, 60+y*40, 38, 38, True
EndSelect
Next x
Next y
// Liikkuminen nuolilla
If KeyHit(203) Then // Left
If Mid(Str(level(py)), px-1, 1) <> "x" Then
px-1
EndIf
ElseIf KeyHit(205) Then // Right
If Mid(Str(level(py)), px+1, 1) <> "x" Then
px+1
EndIf
ElseIf KeyHit(200) Then // Up
If Mid(Str(level(py-1)), px, 1) <> "x" Then
py-1
EndIf
ElseIf KeyHit(208) Then // Down
If Mid(Str(level(py+1)), px, 1) <> "x" Then
py+1
EndIf
EndIf
// Piirretään pelaaja
Color 255, 0, 0
Box 20+px*40+10, 60+py*40+10, 20, 20, True
DrawScreen
Forever
Re: Tyhmät kysymykset (I/2011)
Posted: Sun Dec 04, 2011 4:56 pm
by gfhgiregre
Code: Select all
pis1=47
ott1=26
tulos=pis1/ott1
AddText ""+tulos+""
DrawScreen
WaitKey
Miksi vastaus on 1, eikä 1,80769....?
Re: Tyhmät kysymykset (I/2011)
Posted: Sun Dec 04, 2011 5:11 pm
by koodaaja
gfhgiregre: Lasket kokonaisluvuilla. Laittamalla #-merkin muuttujien nimien perään (pis1#, ott1# ja tulos#) saat liukulukuvastauksen.
Re: Tyhmät kysymykset (I/2011)
Posted: Sun Dec 04, 2011 5:15 pm
by Latexi95
gfhgiregre wrote:Code: Select all
pis1=47
ott1=26
tulos=pis1/ott1
AddText ""+tulos+""
DrawScreen
WaitKey
Miksi vastaus on 1, eikä 1,80769....?
Koska lasket kokonaisluvuilla.
Ainakin toinen luvuista täytyy olla liukuluku, että käytettäisiin liukulukulaskentaa ja sitten myös muuttuja johon vastaus tallennetaan on kokonaislukumuuttuja. Laita muuttujan perään # -merkki jos haluat siitä desimaaliluvun tai sitten vaihtoehtoisesti laita muuttujan nimen jälkeen "As Float".
Code: Select all
pis1#=47
ott1 As Float=26
tulos#=pis1/ott1
AddText ""+tulos+""
DrawScreen
WaitKey
EDIT:Koodaaja ehti ensin...
Re: Tyhmät kysymykset (I/2011)
Posted: Tue Dec 06, 2011 8:25 pm
by Smulitron
Hei!
Minulla olisi kehitteillä sellainen bullet hell-tyyppinen peli. Olen koodannut siihen jo vihuja ja aseita käyttäen typejä, mutta typet ovat olleet aina eräänlainen musta kohta koodaustietoudessani, joten selittäkää nyt tietämättömälle kuinka eri typet pystyvät olemaan samassa. Joka kerta kun yritän laittaa komentoja joissa on kahta eri typeä, tulee MAV.
Tarkemmin pelistäni: yritän tällä hetkellä saada pelaajan panokset tekemään damagea ja häviämään osuessaan viholliseen. Noh, hain ratkaisua pulmaani siirtämällä "Next Vihu":n ja "Next Attack":n kauemmaksi, mikä toimi välillä, mutta välillä taas ei. Tietääkseni ns. viitteet eivät ole globaaleja, joten ainoa ratkaisu tuntui olevan Next:in siirtäminen. Sitten kuitenkin MAVia pukkaa vissiin jos se on huonossa paikassa.
Eli jos saisin vaikka jonkinlaisen esimerkin miten kaksi typeä voivat olla "sisäkkäin"/ kahden typen käyttö esimerkiksi objectsoverlap():ssa mahdollisimman toimivasti ja selityksen kera, olisin kiitollinen.
Re: Tyhmät kysymykset (I/2011)
Posted: Tue Dec 06, 2011 8:55 pm
by MrMonday
Tyypit ovat olleet itsellenikin aina vaikeita sisäistää, mutta sen verran osaan neuvoa, että ezben aikoinaan kirjoittama
Type-tutoriaali on erinomaista matskua selventävien esimerkkien kera. 2. osassa käytiin läpi mainitsemiasi asioita, joten sieltä saattaisit löytää ratkaisun ongelmaasi
Re: Tyhmät kysymykset (I/2011)
Posted: Tue Dec 06, 2011 8:57 pm
by Latexi95
Smulitron wrote:Hei!
Minulla olisi kehitteillä sellainen bullet hell-tyyppinen peli. Olen koodannut siihen jo vihuja ja aseita käyttäen typejä, mutta typet ovat olleet aina eräänlainen musta kohta koodaustietoudessani, joten selittäkää nyt tietämättömälle kuinka eri typet pystyvät olemaan samassa. Joka kerta kun yritän laittaa komentoja joissa on kahta eri typeä, tulee MAV.
Tarkemmin pelistäni: yritän tällä hetkellä saada pelaajan panokset tekemään damagea ja häviämään osuessaan viholliseen. Noh, hain ratkaisua pulmaani siirtämällä "Next Vihu":n ja "Next Attack":n kauemmaksi, mikä toimi välillä, mutta välillä taas ei. Tietääkseni ns. viitteet eivät ole globaaleja, joten ainoa ratkaisu tuntui olevan Next:in siirtäminen. Sitten kuitenkin MAVia pukkaa vissiin jos se on huonossa paikassa.
Eli jos saisin vaikka jonkinlaisen esimerkin miten kaksi typeä voivat olla "sisäkkäin"/ kahden typen käyttö esimerkiksi objectsoverlap():ssa mahdollisimman toimivasti ja selityksen kera, olisin kiitollinen.
Kahden sisäkkäin olevan for-each silmukan tekeminen onnistuu näin:
Code: Select all
Type panokset
Field obj // Panoksen objekti
EndType
Type vihut
Field obj //Vihollisen objekti
EndType
For vihu.vihut = Each vihut //Kelataan kaikki viholliset jotka ovat
//vihut typessä läpi. Tämän hetkinen vihollinen on vihu muuttujassa
For panos.panokset = Each panokset //Käydään läpi kaikki panokset.
//Tämän hetkinen panos on muuttujassa panos
If ObjectsOverlap(vihu\obj,panos\obj) Then //Tarkistetaan onko tällä hetkellä
//käsittelyssä oleva vihollinen panoksen päällä
//...
EndIf
Next panos
Next vihu
Ja niin kuin MrMondaykin mainitsi, niin kannattaa lukea Ezben Type-tutoriaali.
Re: Tyhmät kysymykset (I/2011)
Posted: Wed Dec 07, 2011 12:28 am
by Smulitron
Kiitos avusta! Paneudun huomenna tutoriaaliin ja koodiin.
Re: Tyhmät kysymykset (I/2011)
Posted: Sat Dec 17, 2011 4:23 pm
by Konstaduck
No niin, tuli rekisteröidyttyä foorumeille.
Mutta Asiaan
on sellainen pulma, että haluaisin liukuvan valintaikkunan ohjelmaani. on siis cbSDK:n list - komennosta kyse.
Kun jotain "itemiä" listassa kaksoisnapsautetaan, ohjelma aloittaa videon. En siis vaan osaa tätä tehdä.
Kiitos jo etukäteen kaikille, jotka auttavat.
EDIT:niin ja asia oli kiireinen
EDIT:Jäin sitten ilman vastausta
Re: Tyhmät kysymykset (I/2011)
Posted: Mon Dec 19, 2011 6:34 pm
by onkelma
Hei!
Kyseessä on tasohyppely ja pelihahmon pitäisi tikkaitten kohdalla liikkua ylöspäin. Olen asiaa yrittänyt toteuttaa datakerroksella. Numero 1 laitoin tikkaitten kohdalle. Enkä nyt ole oikein saanut sitä toimimaan.
Code: Select all
If GetMap2(3,x,y)=1 And ObjectsOverlap (3,x,y=1,pelihahmo) Then
yPlus#=0.5
EndIf
tai tämmöstäkin kokeillut.
Code: Select all
tile=GetMap2(3,ObjectX(pelihahmo),ObjectY(pelihahmo))If ObjectsOverlap (tile+1,pelihahmo) And KeyDown(cbKeyW)Then
yPlus#=0.5
EndIf