Kuinka tehdä törmäys tunnistus tetris-palikalle

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
......

Kuinka tehdä törmäys tunnistus tetris-palikalle

Post by ...... »

miten sen vois tehä?Kun saan törmäyksen vaan laatikkona
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Kuinka tehdä törmäys tunnistus tetris-palikalle

Post by esa94 »

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.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Kuinka tehdä törmäys tunnistus tetris-palikalle

Post by Koodiapina »

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.

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
Olen huono selittämään, mutta kiva jos ymmärsit :)
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Kuinka tehdä törmäys tunnistus tetris-palikalle

Post by valscion »

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.

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
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Kuinka tehdä törmäys tunnistus tetris-palikalle

Post by Koodiapina »

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
Post Reply