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.
Tyhmät kysymykset (I/2011)
Re: Tyhmät kysymykset (I/2011)
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:
Last edited by Tuxi on Wed Nov 30, 2011 11:39 am, edited 1 time in total.
Projektit:
Jotain pientä (Ehkä vähän suurempaakin)
-Tuxi- (myös Tuxi4321)
Jotain pientä (Ehkä vähän suurempaakin)
-Tuxi- (myös Tuxi4321)
Re: Tyhmät kysymykset (I/2011)
Kiihtyvyyksiäkin (eli myös ns. gravitaatiovakio) pitää muuttaa, kun nopeudet muuttuu frametimen mukaan. En nyt muista miten päin asia piti hoitaaTuxi 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.
Re: Tyhmät kysymykset (I/2011)
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ä:
Tai:
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.
Code: Select all
If newTile\tile_x = newTile\tile_x And newTile\tile_y = newTile\tile_y Then newTile\tile_x=Rand(1,9)...
Code: Select all
If newTile\tile_x = iTile\tile_x And newTile\tile_y = iTile\tile_y Then newTile\tile_x=Rand(1,9)...
Re: Tyhmät kysymykset (I/2011)
Tee tähän tyyliin: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ä:Tai:Code: Select all
If newTile\tile_x = newTile\tile_x And newTile\tile_y = newTile\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.Code: Select all
If newTile\tile_x = iTile\tile_x And newTile\tile_y = iTile\tile_y Then newTile\tile_x=Rand(1,9)...
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)
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
kuoleman koodi
Code: Select all
If Health <1 Then Goto kuolit
Re: Tyhmät kysymykset (I/2011)
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.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 koodiCode: Select all
If Health <1 Then Goto kuolit
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: Tyhmät kysymykset (I/2011)
Huomasin juuri että jos saan scorea niin tuo kuoleminen ei toimi, jos alussa vaan seison ja annan zombin tappaa mua niin kuolen.VesQ wrote: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.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 koodiCode: Select all
If Health <1 Then Goto kuolit
Re: Tyhmät kysymykset (I/2011)
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.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.
Re: Tyhmät kysymykset (I/2011)
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)
Varmaankin käytät ihan tilekarttasysteemiä? Sinun pitää laittaa katto tilekartan päälliskerrokseen pohjakerroksen sijaan. Objektit piirretään tilekartassa pohja- ja pintakerrosten väliin.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.
Re: Tyhmät kysymykset (I/2011)
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)
Code: Select all
pis1=47
ott1=26
tulos=pis1/ott1
AddText ""+tulos+""
DrawScreen
WaitKey
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Tyhmät kysymykset (I/2011)
gfhgiregre: Lasket kokonaisluvuilla. Laittamalla #-merkin muuttujien nimien perään (pis1#, ott1# ja tulos#) saat liukulukuvastauksen.
Re: Tyhmät kysymykset (I/2011)
Koska lasket kokonaisluvuilla.gfhgiregre wrote:Miksi vastaus on 1, eikä 1,80769....?Code: Select all
pis1=47 ott1=26 tulos=pis1/ott1 AddText ""+tulos+"" DrawScreen WaitKey
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)
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.
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.
endif
drawscreen
until virtanappi ()
drawscreen
until virtanappi ()
Re: Tyhmät kysymykset (I/2011)
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)
Kahden sisäkkäin olevan for-each silmukan tekeminen onnistuu näin: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.
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
Re: Tyhmät kysymykset (I/2011)
Kiitos avusta! Paneudun huomenna tutoriaaliin ja koodiin.
endif
drawscreen
until virtanappi ()
drawscreen
until virtanappi ()
- Konstaduck
- Advanced Member
- Posts: 267
- Joined: Sat Dec 17, 2011 3:09 pm
- Location: Nurmijärvi, Finland
- Contact:
Re: Tyhmät kysymykset (I/2011)
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.
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
Last edited by Konstaduck on Tue Dec 20, 2011 9:46 pm, edited 1 time in total.
Re: Tyhmät kysymykset (I/2011)
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.
tai tämmöstäkin kokeillut.
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
Code: Select all
tile=GetMap2(3,ObjectX(pelihahmo),ObjectY(pelihahmo))If ObjectsOverlap (tile+1,pelihahmo) And KeyDown(cbKeyW)Then
yPlus#=0.5
EndIf