Tetris kezdőknek)
Mi volt az oka az írás ezt a cikket?
1. A feltett kérdések a felhasználók számára az oldal, hogyan kell írni a Tetris.
2 Nemrég írtam nem világos, milyen okból és milyen célból Tetris. Mint egy gyerek nebyli kísérletet, hogy írjon Tetris. Bit érett döntött megvalósítani egy gyermekkori álom :)
3 banális vágy, hogy megmutassák magukat, és hogy a világnak, amit én csodálatos programozó, és ezért vagyok képes írni Tetris cool :)
Minden jó gab munkához.
Először azt kell elképzelni, hogy milyen részei lesznek a játékban. Tetris számadatok (osztály ábra) és egy (osztály Field). Mégis meg kell béke (osztály World) is tartalmaz majd egy olyan területen, 2 darab (baleset és az azt követő), poharak, szint és még valamilyen információt.
Gondoljuk, hogy mi lesz a szám. Számos módja van. Fogjuk választani az egyszerűbb. Vegyük alapul, hogy a szám valamilyen mátrix N M tartalmazó üres és tele sejteket. Most meg kell meghatározni, hogy mi a sejtet. Valójában belőle tudnunk kell, hogy tele van-e vagy sem. Ez azt jelenti, a sejtek akkor kell csak típus «BOOL». Csak a szám információkat tartalmaz a szín és a helyzetét a játékteret. ez az, amit a szerkezet a fenti, megkapjuk:
Itt mi nem tetszik? Először is maga a mátrix. Mivel ez a megközelítés azt kell, hogy egy ilyen méretű, amely illeszkedik bele a legnagyobb alakja. A legnagyobb szám leszünk hossza 4 sejtek és szélessége 1 Tetris lehetséges fejtetőre számok itt kapunk egy négyzetes mátrix dimenziója 4-4 Hátránya a mátrix a „komplexitás” ellenőrizze vízszintes és függőleges mozgások. Ez annak a ténynek köszönhető, hogy része a szám megy túl a területen. Ennek alapján a remake a mátrix a statikus és dinamikus.
Ebben a megvalósításban már felváltotta a típus BOOL hogy unsigned int Ezt azért tettük, mert STL valósítja konkrét STD :: VECTOR
Minden. Mi lehet ismét működni a mátrix egy kétdimenziós tömbben.
Az osztályban ábrán valami mást történt, ami változik. Elfújta a színe a számok. Ez lesz szó egy másik szakaszban.
És így van! A mező dimenziója M N on, mint a tényleges szám. Ahogy az ábra is tartalmaznia kell információt az üres cellákat, vagy sem. Csakúgy, mint a szín a cellában. sejt szín fogjuk kódolni unsigned int (0xAARRGGBB). Most sejt niche tárolására és egy színt, és információk az üres vagy nem. Ha a cella értéke nem nulla, akkor tele van nulla, ha az üres. Itt van, amit mi területen:
Azt mondják, hogy ez nem sokban különbözik a szám. És akkor teljesen igaza van. Azt javaslom, hogy minden a mi általános osztályok 2 egyesíteni egyetlen egység:
Most azt látjuk, hogy a területen, és a szám örökölt GameObj. Ábrán osztályok és Field csak azokat a dolgokat, hogy gyökeresen eltér egymástól. Az utolsó osztály hirdetések ábra, Field nyilvánvaló, hogy „varázslatosan” adtunk további részletekért. Most beszéljünk róluk.
Részletes elemzése ábra
Szerintem semmi különös, hogy itt magyarázzuk és minden világos. Csak azt akarom tudni, hogy ez a szám osztály tartalmaz egy mutatót az osztály a területen. Ez a mutató azt kapja a kivitelező. Ezzel a megközelítéssel, akkor könnyen okozhat a szükséges class Field funkciók, amelyek valóban sikeresen és csinál.
RotateLeft funkció fordul meg a bal oldali ábrán.
Hogyan működik. Készítsen egy új ábra ábra newFigure (field_, height_, width_). Kerül egy új formája a mi adatmátrix- képest elfordulás. Telepítése és ellenőrizze a pozícióját a konfliktus a területen. Ha volt egy konfliktus, akkor forog a szám nem lehetséges. Ha nem, jó lelkiismerettel megváltoztatjuk a részleteket a számok adatait megérintette.
Frissítse itt haladunk a figura vízszintesen és függőlegesen, valamint ellenőrzés lehetőségét annak további csökkenése. Ha van hová esik, akkor az adatok továbbítása a számok a területen, és ez a szám van címkézve, mint egy bukott «fly_ = false;»
Részletes elemzés Field
Ebben az osztályban beszélni konkrétan szól. Csak listához a legérdekesebb funkciók és megmondja, hogy mit csinálnak.
Hit - ellenőrzi, hogy van egy szám alá tartozó, vagy a már elfoglalt hely
Ütközés - ellenőrzése keresztezi a területen már sejtek által elfoglalt és figurák.
SetFigure - adatátviteli számok a területen.
KillLine - ellenőrzésének lehetőségét eltávolítja a sorban. Ha van egy aktuális eltávolítja vonal zuhanyozás felső sejteket le, egyre pontokat és lépésekben eltávolított sorokat.
Valójában még mindig nem érintette a World Class. Itt is van:
Nem érdekes ebben az osztályban nem. GenerateNext kivétel funkciót.
Tanulmányozása után ez a funkció akkor veszi észre, hogy véletlenül létre, és inicializálni 5 osztály az emlékezés, amely nem volt sehol. Nézzük meg, hogy milyen osztályok. Itt van egy:
Látjuk, hogy örököl ábra, amivel már jól ismerik, és áll egy tervező. Ez történik a kivitelező:
Ebben a kivitelező, és a mi a szám jön létre. Azok a sejtek, amelyek tele vannak a nulla lesz a többit jelenik meg a képernyőn. Azáltal ilyen osztályokat hozunk létre különböző alakzatokat. Ez van, srácok!
Tetris van írva itt nem egy kész termék. Tartalmaz néhány hibákat és hiányosságokat. Azt biztosan lehet megjavítani, de úgy gondoltam, hogy nem lenne olyan unalmas az olvasó, és tudta szórakoztatni magát bízta a feladatot rá, hacsak nem szükséges :) Szóval hajrá!
Nehéz megmondani, hogy a folyamat létrehozása a játék egyértelműen ezt a cikket, de ha nem érti a forráskódot csatolt ebben az esetben.
Minden köszönhetően az olvasási, hogy itt, és sok sikert a nehéz területen;)