Kuinka tehdä törmäys tunnistus tetris-palikalle
Kuinka tehdä törmäys tunnistus tetris-palikalle
miten sen vois tehä?Kun saan törmäyksen vaan laatikkona
Re: Kuinka tehdä törmäys tunnistus tetris-palikalle
Hmm... Jos vaikka käytät neljää objektia jokaiselle palikalle? (Huono idea) Toinen vaihtoehto voisi olla vaikkapa olla käyttämättä objekteja. Jos käytät niiden sijasta kuvia, on mahdollista käyttää pikselintarkkaa törmäystarkistusta funktiolla ImagesCollide(kuva1, x1, y1, frame1, kuva2, x2, y2, frame2). Vaatii vähän kikkailua mutta ei mielettömän vaikeaa. Koitan väsätä esimerkin huomenna, koska tänään ei enää jaksa.
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: Kuinka tehdä törmäys tunnistus tetris-palikalle
No tälläsessä pelissä ei kannata ehkä objekteja ajatella, jos ei ole aivan rakastunut niihin. Itselleni tuli mieleen luoda sopivan kokoinen kaksiuloitteinen taulukko, jonka jokainen solu kuvaa yhtä pelin palikkaa, jotka ovat jo törmänneet. Sitten vain laskemme, missä kohtaa nyt tippumassa olevan palikkamuodostelman palikat ovat. Näin voimme tarkistaa, onko taulukossa sellaisessa kohtaa palikoita, että se aiheuttaisi törmäyksen palikkamuodostelman kanssa. Jos näin käy, muodostelman palikat lisätään äsken laskettuihin paikkoihin, ja nyt peli voi luoda uuden palikkamuodostelman.
Olen huono selittämään, mutta kiva jos ymmärsit :)
Code: Select all
Taulukko; 0 = ei mitään
0,0,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0
Tippuva palikkamuodostelma
lukee taulukosta, onko mahdollista
törmätä. P = tippuvat palikat,
t = tarkistettavat solut. Kun tarkistus
palauttaa jossain muuta kuin 0,
ollaan törmätty. Tässä tapauksessa
kaikki on 0, joten jatketaan:
pp
pp
tt
Palikkarykelmän alaosa on y akselilla
viimeisessä etapissa. Näin ollen tieto
siirretään taulukkoon. Numero 1
kuvaa taulukossa olevia palikoita.
0,0,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0
0,1,1,0,0,0
0,1,1,0,0,0
Sitten tulee toinen palikkamuodostelma.
Se lukee taas taulukkoa, ja mitään
törmättävää ei huomata:
pp
pt
p
t
11
11
Mutta kun mennään yksi pykälä alemmas, huomataan,
että seuraavassa solussa y akselilla olisikin muuta kuin
0, eli siinä on pakko olla palikka. Näin ollen törmätään,
ja palikkapino laitetaan myös taulukkoon. Tällöin
taulukon sisältö olisi:
0,0,0,0,0,0
0,1,1,0,0,0
0,1,0,0,0,0
0,1,0,0,0,0
0,1,1,0,0,0
0,1,1,0,0,0
Re: Kuinka tehdä törmäys tunnistus tetris-palikalle
Tuossa Grandin esimerkissä on vain se heikkous, että palikka "törmää" heti kun alla on joku toinen palikka, eikä sitä voida siirtää sivulle päin niin tarvittaessa.
esim.
esim.
Code: Select all
x
x
xx
tuo pala pitäisi saada sovitettua tälläiseen koloon (huutomerkkien paikalle):
!XX
!XX
!!X
XXX
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
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: Kuinka tehdä törmäys tunnistus tetris-palikalle
Se ei ole mikään heikkous. Sen saa korjattua laittamalla tarkistuksen viime hetkeen. Ei luulisi olevan mahdoton tehtävä. Esimerkki;
Code: Select all
if timer()>ajastus+taso*100 then
if törmäysmahdollinen() then
' blaa blaa
else
' blaa blaa
palikkapinoy = palikkapinoy + 1
endif
ajastus = timer()
endif