zaklucna seminarska - PACMAN

Vse kar se tiče programiranja iger.
Odgovori
salamandra
Prispevkov: 6
Pridružen: 04.03.2008 19:22:42

zaklucna seminarska - PACMAN

Odgovor Napisal/-a salamandra » 10.05.2008 13:53:47

Imam en problem, ki pa se verjetno samo meni zdi gromozanski :) Za zakljucno nalogo programiram pacman-a. Imam pa sledec problem.
Slika
Rad bi, da bi se mi krogec premikal po zaslonu tako, kot se v pravem pacmanu. Jaz imam sprogramirano tako, da se premakne glede na pritisnjeno tipko. Pozicijo mi preverja vsako 1ms. Vendar pa recimo da bi rad zavil na levo, bi moral pritisniti tipko levo tocno na poziciji, kjer gre pot v levo. To me moti, zato bi vas prosil, ce imate kaksno idejo, kako bi mi na dolocenih delih poti dovolil samo tipke npr. levo in desno. In da bi se mi pritisnjena tipka shranila v neko spremenljivko in potem na ''kriziscu'' bi mi pogledalo kaj sem pritisnil, in potem ustrezno reagiralo. Rad bi torej, da bi recimo za zaviti levo pritisnil ze prej, in bi mi potem samo na ''kriziscu'' zavilo levo.Mogoce sem slabo razlozil problem, a upam, da mi boste znali pomagati.

zippo
Prispevkov: 264
Pridružen: 14.07.2002 12:11:29

zaklucna seminarska - PACMAN

Odgovor Napisal/-a zippo » 10.05.2008 23:24:13

Par idej...

- Shrani zadnjo pritisnjeno tipko in pač ob vsakem naslednjem premiku vzami za privzeto to tipko.
- Namesto da neprekinjeno kontroliraš stanje tipk, raje preverjaj stanje sosednjih zidov glede na rumenčka. Če je na poti zid, potem je tipka NULL (to je simbolično povedano).

Na ta način boš samo nakazal smer in ob "trku" samo preveriš, če je kaka druga tipka pritisnjena.


Upam, da kaj pomaga...

odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

zaklucna seminarska - PACMAN

Odgovor Napisal/-a odisej » 11.05.2008 18:56:03

Mogoče vsako milisekundo pokličeš funkcijo GetKeyboardState in preveriš, če se je v uno smer možno premakniti.

Silver_War
Prispevkov: 664
Pridružen: 01.06.2004 14:50:41

zaklucna seminarska - PACMAN

Odgovor Napisal/-a Silver_War » 12.05.2008 08:35:14

Jaz bi naredil tako.
- za smer premikanja določiš eno spremenljivko (anpr. tipa integer, 0=stoji, 1=gre desno, 2=gre dol, 3=gre levo, 4=gre gor)
- za spremembo smeri pa imaš lahko še eno spremenljivko (željena smer), ki jo nastaviš ob OnKeyDown eventu in jo resetiraš ob OnKeyUp eventu. Ti pa potem samo preverjaš, če je tvoj packman na mestu, kjer bi lahko spremenil na željeno smer (križišče). Tako bo za spremembo smeri igralaec tipko pritisnil malo pred križiščem in jo samo dovolj dolgo držal. Poleg tega, pa se boš s tem izognil milisekundnega preverjanja stanja tipk na tipkovnici.

Odgovori