Keresés
Hírlevél
 
Kiemelt témák
»Hogy viszonyul ehhez a család?
»Legjobb metodika emberi relációk tárolására
»A programozó hibája, hogy törik a programját?
»Jogosultság kezelés mezőszinten
Állás/munka
»Wordpress szakértőt keresünk
»Kamu álláshirdetők listája
»Front-end fejlesztő / Sitebuilder
»DataStore Developer
»PHP programozó, webfejlesztő munkát keres
» több téma
Tudástár
Oldalon keresés 8x írja ki az eredményt
?XML-ből sok szövegmező
?Input mezőből visszakapott adat probléma
TinyMCE és az ékezetek
?Rengeteg hasonló kép betöltése gyorsan (PHP)
Ékezetes kar. nem minden táblában jól
?Shelltreeview gond
Grafikon rajzolás probléma
?Onclick= php függvény
?Egyenes megrajzolása
?Access-ből adott xml fájl kinyerése
Listázás időpont szerint
Exportálás változó könyvtárba
*Link eredményének kiolvasása
Imagemapre képet
» több téma
Társalgó
»A programozásból jól meg lehet élni?
»MFC tanulás
»Könyvet adok-veszek
»Hogy viszonyul ehhez a család?
»Nintendo wii
»Letölthető az új Rad Studio XE és Delphi XE
»Weblap véleményezés
»Játékmotor elmélet
»Informatikai bulvárlap
»Delphi-ről C++-ra váltás
» több téma
ASP  |  C#  |  C++  |  CSS  |  Delphi  |  Flash  |  HTML  |  Java  |  JavaScript  |  Pascal  |  Perl  |  PHP  |  Python  |  Visual Basic  |  Visual C++  |    »    

Társalgó

»

Játékfejlesztés és multimédia

»

"Márió" jellegű játék írása pascal nyelven

»

"Márió" jellegű játék írása pascal nyelven

nyitotta: Sunny_88, idő: 2010.03.10., moderátor: Árnyék
  Értesítés változás esetén Felvétel kedvencekhez Küldés emailben Nyomtatható verzió
Sorrend:
Időzóna:
Blokkméret:
Sziasztok!Szóval szeretnék egy Mario jellegű játékot írni. Úgy képzeltem el, hogy a pályát egy tömbben tárolnám. Különböző számokkal tölteném fel a tömböt.PL: ha tömb eleme 0 = szabad az út 1=fal. Ez eddig rendben van. Viszont ezekben a játékokban nem elég az "egy képernyőnyi" pálya . Szóval az lenne a kérdés h egy pályához több tömböt használjak vagy meg lehet oldani egy tömbbel is egy pályát. És hogy valósítanátok meg a képernyőváltást?Vagy egyáltalán jó ez az elképzelésem? Vagy ..
Ez egy klasszikus Mario játék:

http://www.wieringsoftware.nl/mario/download.html

és a forrás Pascal nyelven:

http://www.wieringsoftware.nl/mario/source.html

Kérdés mi a célod:
1-a figura álló képernyő előtt mozog, ha jobb oldalt kisétál a képből akkor új képernyő jelenik meg és besétál bal oldalon. Szóval álló képernyők vannak.
2-a figura a képernyő közepén van (vízszintesen), és a pálya gördül mögötte finoman balra, ha a figura jobbra halad.

Lehetne még "minden irányban" mozgó pálya is, de az már nehezebb.
Vegyük a második esetet, ez a klasszikus "Mario Bros".

A képernyő felbontása mondjuk 320x200 (vagy 640x400 vagy ami éppen van). Ezt felosztod egy négyzethálóra, legyen ez mondjuk 20x20 az egyszerűség kedvéért.
Tehát a képernyőre kirajzolsz vízszintesen 20 grafikai elemet, függőlegesen is 20-at. Ehhez ugye egy 20x20-as tömböt használhatsz.

Ha nagyobb pályát akarsz, akkor készítesz mondjuk egy 200x20-as tömböt. Így 10 képernyő széles lehet a pálya. Kirajzolásnál tárolod (kiszámolod), hogy az aktuálisan kirajzolandó 20x20-as képernyő terület a "nagy" pályán hol helyezkedik el. Na az elemeket ettől a ponttól kezded venni.
Nagyából:
XK:=XMAP-10;
for j:=0 to 9 do
 for i:=0 to 9 do
  begin
  elem:=[XK+i][j];
  --elem kirajzolása (i*16 és j*10 koordinátákra)
  end;

Persze ha nem "ugrálni" akar a főszereplő akkor X irányba el is kell tolni a képet (főszereplőt) folyamatosan. Mondjuk a főszereplő koordinátáit számolod "pixelben", akkor XMAP=X/16, ha 16 pixel egy elem szélessége. Az osztás maradéka meg az az érték, amivel a hátteret balra kell tolni. (Emiatt vízszintesen nemis 20 hanem 21 elemet kell rajzolni.)

Így "tetszőleges" méretű pályát készíthetsz. Vigyázz, nehogy kifuss a tömbből írás/olvasás közben, mindíg ellenőrizd a koordinátákat.

ui: itt egy "tutorial" Mario játékok készítéséhez Pascalban:
Mariós tutorial Turbo Pascalhoz -fájl letöltése

Turbo Pascal kell hozzá, eléletileg benne van minden ami kell. Nincs befejezve a játék, de 16 lépésben bemutatja, hogy hogyan készül a játék, az egyszerű "tömb kirajzolás"-tól kezdve. Lehet másként is, de biztos van benne pár hasznos dolog. előzmény
Tilemap... hasznald a google-t :)
Figyi, adj neki egy "favágó modszert", régen én is igy csintam és sokat tanultam belőle!

Nah szal remélem érthető lesz:

hozd létre az egyes pályaelemeket, legyen a példa kedvéért mindegyik 40x40-es persze kül kinézetű

aztán fogj egy x*y méretű struktura mátrixot, amiben olyan strukturákat pakolsz hogy:
-x (int)
-y (int)
-tipus ( ez a te modszeredtől függ de azt jelölje h milyen pályaelem pl.:fal)

nah ez a mátrix legyen annyi oszlopos ahány kirajzolható elemed lesz a pálya széltében, és annyi soros amilyen magas lesz a pályád.

Ezt feltöltöd és renderelésnél mindegyiket kihányod a kijelzőre :D

Nah amikor a kis márió megy jobbra, akkor csind azt, hogy a mátrix összes elemének az x koordinátáját egységnyivel csökkented igy azok egyre-egyre balra lépnek ahogy megjelenited öket.

Marioval meg lekezeled, hogy ha a mátrixban vhol fal van akkor oda ö nem tud menni, vagyis "collision" lép fel!

Ha valami érthető belőle akkor örülök!

Ui.: ez nem jó megoldás, de sokat lehet belőle tanulni és szórakoztató is :)
Olyat nem lehetne, hogy dinamikus listába betöltöd a pályát és egyszerűen scrolloztatod? Ami nem látszik a képernyőn azt nem rajzolod ki és kész. Lenne egy kamera, aminek van egy pozíciója, meg egy képernyőnyi mérete és ehhez képest rajzolódnának ki az elemek. A kamera követné a figura mozgását és így úgy nézne ki, mintha a pálya mozogna és a figura egyhelyben szaladgálna.
Sziasztok!Szóval szeretnék egy Mario jellegű játékot írni. Úgy képzeltem el, hogy a pályát egy tömbben tárolnám. Különböző számokkal tölteném fel a tömböt.PL: ha tömb eleme 0 = szabad az út 1=fal. Ez eddig rendben van. Viszont ezekben a játékokban nem elég az "egy képernyőnyi" pálya . Szóval az lenne a kérdés h egy pályához több tömböt használjak vagy meg lehet oldani egy tömbbel is egy pályát. És hogy valósítanátok meg a képernyőváltást?Vagy egyáltalán jó ez az elképzelésem? Vagy más módszerrel szokták ezeket a játékokat írni?
Előre is köszönök minden érdemleges hozzászólást.
Belépés
E-mail cím:
Jelszó:

RSS források
-Hírek
-Cikkek
-Fórumok
-Állás/munka
Top pontgyűjtők
»Micu1.030
»Interlock280
»mezofi150
»Pitta_100
»Frostech0100
»szbzs.2100
»Riha60
»Akhiles50
»mrchandra50
»Bakter50
Top wikieditorok
»Sting
»Doi
»FlamingClaw
»Argathron
»Csaboka2
»Vodka
»Joexy
»Ivn
»Balucinho
»Kelemzol
» ugrás a wikire
A nap kifejezései
»Algoritmus
»Hogyan kezdjem el
»Perl
» ugrás a wikire
Hírek
»Megérkezett a PostgreSQL 9.0 kiadásra jelölt változata
»Letölthető az új Rad Studio XE és Delphi XE
»Function-X digitális művészeti találkozó és demoscene party
»Webfejlesztőknek szóló közösségi oldalt indított a Microsoft
»Letölthető a hardvergyorsított Chrome 7 első fejlesztői kiadása
» több hír
PC Fórum hírek
»Itt az első kép az AMD nyolcmagos processzoráról
»"Szuperdizájnos" érintő-egeret mutatott be a Microsoft
»Szabadalmaztatta a számítógép kikapcsolását a Microsoft
»Vírusriadót váltott ki a webezőknél a Google
»Ingyen iWiW-ezhetnek mobiljaikról a T-Mobile-osok
»Automatikusan kiválogatja legfontosabb leveleink a Google
»OOo4Kids - ingyenes Office csomag gyerekeknek
»Új, gyorsabb Core i3 és Pentium processzorokat jelentett be az Intel
Tagi blogok
»PSP
»Első Programozó
»USB
»PHP, mint sablonmotor egyszerűen