Tartalomjegyzék:
- 1. lépés: Anyagok
- 2. lépés: Ismerje meg a programot - tábla
- 3. lépés: Ismerje meg a programot - Csempe
- 4. lépés: Ismerje meg a programot - játék
- 5. lépés: Fontos módszerek - Mozgás
Videó: Programozza be saját 2048 játékát Java/Java !: 8 lépésben
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Szerző: PranP1My (Incomplete) SiteFollow More by the author:
Imádom a 2048 -as játékot. Ezért úgy döntöttem, hogy saját verziómat programozom.
Nagyon hasonlít a valódi játékhoz, de saját magam programozásával szabadon megváltoztathatom, amit akarok, amikor csak akarok. Ha 5x5 -ös játékot akarok a tipikus 4x4 helyett, akkor a „Board” konstruktor használatával végzett egyszerű változtatás lehetővé teszi ezt. Tegyük fel, hogy meg akarom nehezíteni a játékot, és olyan helyeken adok hozzá darabokat, amelyek a játékos számára a legösszetettebbé teszik, nem pedig véletlenszerűen. Egy egyszerű algoritmus segítségével ezt meg tudom tenni. Bár nem fogom lefedni mindezeket a módosításokat ebben az utasításban, tervezem, hogy közben hozzáadok többet.
Egyelőre azonban a tipikus 2048 -as játékot programozzuk.
Lássunk neki!
(Mellékhelyzetben: Ez az Instructable mérsékelt programozási ismereteket igényel - különösen Java -val)
1. lépés: Anyagok
Nem lesz sok szüksége erre a projektre, mivel ez csak egy programozási bemutató.
Anyagok:
- Laptop
- Eclipse (vagy tetszőleges IDE)
Aha. Ez az.
2. lépés: Ismerje meg a programot - tábla
Feltöltöttem az összes kódomat a GitHubra - nézd meg itt:
A játékot 3 osztályra osztottam: Board, Tile és Game.
Tábla:
Leírás: A Board osztály foglalkozik a játéktáblával, felállít egy „Tile” elemekből álló tömböt, megkapja az aktuális pontszámot és a legmagasabb lapkát, és a tömböt karakterláncba helyezi (később használni kell a „Game” -ben). A logika nagy része is itt van, az osztály módszereket kínál a 2 -es és 4 -es ívására véletlenszerű helyeken, felfelé, lefelé, balra és jobbra mozogva, és értesíti a játékosokat, amikor a játéknak vége.
Konstruktorok:
/ * Alapértelmezett konstruktor a táblához - beállít egy 4x4 -es mátrixot */
nyilvános tanács () {…}
/ * Konstruktor a táblához - beállít egy mátrixot a megadott rácsmérettel */
nyilvános tanács (int rácsok) {…}
Mód:
/ * Getter módszer, amely visszaadja a táblát */
nyilvános csempe getBoard () {…}
/ * Getter módszer, amely visszaadja a pontszámot */
public int getScore () {…}
/ * Megtalálja a legmagasabb lapkát a táblán, és visszaadja */
public int getHighTile () {…}
/ * Kinyomtatja a táblát a konzolra - tesztelés céljából */
public void print () {…}
/ * A táblát karakterláncként adja vissza - a GUI -ban használják */
public String toString () {…}
/ * 2 -t (vagy 4 -et) hoz létre egy üres helyen, amikor a lépést végrehajtják */
public void spawn () {…}
/ * Ellenőrzi, hogy a tábla teljesen elsötétült -e, és ha igen, akkor arra ösztönzi a játékosokat, hogy induljanak újra */
public boolean blackOut () {…}
/ * Ellenőrzi, hogy véget ért -e a játék - amikor a tábla elsötétült, és egyik lapka sem kombinálható */
public boolean gameOver () {…}
/ * A "w" vagy a felfelé mutató nyíl megnyomásakor hívják - a "verticalMove" meghívja a táblán lévő összes lapot az "up" paraméterrel */
public void up () {…}
/ * Az „s” vagy a lefelé mutató nyíl megnyomásakor hívják - a „verticalMove” parancsot hívja meg a táblán minden lefelé, a „le” paraméterrel */public void down () {…}
/ * A „d” vagy a jobbra mutató nyíl megnyomásakor hívják - hívja a „horizontalMove” parancsot a táblán a „right” */public void right paraméterrel () {…}
/ * Az "a" vagy a bal nyíl megnyomásakor hívják - a "horizontalMove" meghívja a táblán lévő összes lapot a "left" paraméterrel */
public void left () {…}
/* Összehasonlítja két csempe értékeit, és ha azonosak, vagy ha az egyik egyenlő 0 -val (sima csempe), akkor hozzáadjuk az értékeiket (feltéve, hogy az összehasonlítandó lapok két különböző lapka, és a megfelelő irányba haladnak) - rekurzívan mozog a sorban */
public void horizontalMove (int sor, int col, String irány) {…}
/* Összehasonlítja két csempe értékeit, és ha azonosak, vagy ha az egyik egyenlő 0 -val (sima csempe), akkor hozzáadjuk az értékeiket (feltéve, hogy az összehasonlítandó lapok két különböző lapka, és a megfelelő irányba haladnak) - rekurzívan mozog az oszlopon */
public void verticalMove (sor, int oszlop, karakterlánc iránya) {…}
Igen, ez sok módszer - de ne aggódjon, a legtöbb rendkívül könnyen érthető. Ezen felül a „Board” osztály a legösszetettebb, így ezután minden viszonylag egyszerű lesz.
3. lépés: Ismerje meg a programot - Csempe
Csempe:
Leírás: A Csempe osztály az egyes lapokkal foglalkozik, és az összes osztály közül a legkisebb. Minden csempe egész értékkel és színnel rendelkezik. Két konstruktorral rendelkezik, amelyek 0 (alapértelmezett) vagy #értékű csempéket hoznak létre. A módszerek többnyire magától értetődőek, a „getter” és „setter” módszerek teszik ki a teljes tömeget.
Konstruktorok:
/ * Egy alaplapkát készít, amelynek értéke 0 */
nyilvános csempe () {…}
/ * Csempét készít egy szám értékkel */
nyilvános csempe (int szám) {…}
Mód:
/ * Megkapja a csempe értékét */
public int getValue () {…}
/ * Beállítja a csempe értékét - két lap összeillesztésekor használatos */
public void setValue (int érték) {…}
/ * A csempét karakterláncként jelöli - a GUI -ban használják */
public String toString () {…}
/ * Beállítja a csempe színét az értéke alapján */
public void setColor () {…}
/ * Megkapja a csempe színét */
public void getColor () {…}
4. lépés: Ismerje meg a programot - játék
Játszma, meccs
Leírás: A Game Class tartalmazza a fő módszert, a legtöbb GUI módszert és a legfontosabb interakciókat. A csempe és a tábla osztályokat is igénybe veszi, és lehetővé teszi számukra, hogy együtt dolgozzanak.
Konstruktorok:
Egyik sem
Mód:
/ * beállítja a megfelelő méretű GUI -t, és hozzáad egy kulcsfigyelőt */
public static void setUpGUI () {…}
/ * Ellenőrzi, hogy megnyomták -e a wasd vagy a nyíl billentyűket, és elvégzi a megfelelő műveleteket - minden mozdulattal frissíti a JFrame -et */
public void keyNyomva (KeyEvent e) {…}
/ * Festi a GUI -t egy sor karakterlánccal, a táblával és a lapokkal, és biztosítja, hogy a játék végeztével átfestik őket */
public void paint (grafika g) {…}
/ * rajzol egy egyedi lapkát - a festési módszerből hívják */
public void drawTiles (Graphics G, Tile tile, int x, int y) {…}
/ * Fő módszer - beállítja a GUI -t és elindítja a játékot */
public static void main (String args) {…}
5. lépés: Fontos módszerek - Mozgás
A mozgásmódszerek megértése a legfontosabb, de a jó hír az, hogy ha megérti a függőleges mozgásokat, akkor ezt a megértést alkalmazhatja a vízszintes mozgásokra is. Valójában a három függőleges mozgási módszer pontosan megegyezik a három vízszintes módszermozgással, kivéve az egyiket a sorokon, a másikat az oszlopokon. Ezért csak a függőleges mozgási módszerekre koncentráljunk.
private void verticalMove (int sor, int col, String irány)
{Csempe kezdőbetű = tábla [szegély] [col]; Csempe összehasonlítása = tábla [sor] [oszlop]; if (initial.getValue () == 0 || kezdeti.getValue () == összehasonlítás.getValue ()) {if (sor> szegmens || (direction.equals ("le") && (sor <szegély))) {int addScore = kezdő.getValue () + összehasonlítás.getValue (); if (initial.getValue ()! = 0) {score += addScore; } initial.setValue (addScore); compa.setValue (0); }} else {if (direction.equals ("down")) {border--; } else {border ++; } verticalMove (sor, oszlop, irány); }}
A fenti vertikális mozgatási módot a „fel” és „le” metódusok hívják. Nézzük a „fel” módszert.
nyilvános érvénytelenítés ()
{for (int i = 0; i <rácsok; i ++) {border = 0; for (int j = 0; j <rácsok; j ++) {if (board [j] .getValue ()! = 0) {if (border <= j) {verticalMove (j, i, "up"); }}}}}
Ez a módszer végigmegy a táblán, és a „up” paraméterrel minden csempe függvényében hívja a verticalMove -t. verticalMove ezután összehasonlítja a „j” és „i” helyzetű csempét a „border” és „i” pozícióban lévő csempével. Ha a kettő egyenlő, akkor egyesítik. Ha nem, akkor a szegélylapkát 1 -gyel növeli (mivel a helyén lévő paraméter „fel”), és a verticalMove újra meghívásra kerül.
Ajánlott:
Arcfelismerés a Raspberry Pi 4B készüléken 3 lépésben: 3 lépésben
Arcfelismerés a Raspberry Pi 4B készüléken 3 lépésben: Ebben az utasításban az arcfelismerést fogjuk elvégezni a Raspberry Pi 4 rendszeren Shunya O/S alkalmazással a Shunyaface Library segítségével. A Shunyaface egy arcfelismerő/felismerő könyvtár. A projekt célja a leggyorsabb észlelési és felismerési sebesség elérése a
Futtassa Steam játékát a Retro Arcade Kit -en a Raspberry Pi segítségével: 7 lépés
Futtassa Steam játékát a Retro Arcade Kit -en a Raspberry Pi segítségével: Van Steam -fiókja a legújabb játékokkal? Mit szólnál egy árkádszekrényhez? Ha igen, miért nem kombinálja mindkettőt egy csodálatos Steam Streaming játékgépbe. A Steam embereinek köszönhetően mostantól streamelheti a legújabb játékokat számítógépről vagy Ma -ról
Programozza Arduino -ját Android -eszközzel Bluetooth -on keresztül: 6 lépés (képekkel)
Programozza Arduino -ját Android -eszközzel Bluetooth -on keresztül: Helló világ! Nagyon egyszerű és annyira olcsó. Ezenkívül lehetővé teszi számunkra, hogy vezeték nélküli Bluetooth -on keresztül programozzuk Arduino -t, ahol csak akarjuk … Tehát
Írja meg saját Tic Tac Toe játékát Java nyelven: 6 lépés
Írja meg saját Tic Tac Toe játékát Java nyelven: Biztos vagyok benne, hogy mindenki ismeri a Tic Tic Toe klasszikus játékát. Általános iskolás korom óta a Tic Tac Toe népszerű játék volt, amelyet a barátaimmal játszottam. Engem mindig is lenyűgözött a játék egyszerűsége. Az első évben az én
A NODEMcu USB port nem működik? Töltse fel a kódot USB használatával TTL (FTDI) modulba mindössze 2 lépésben: 3 lépésben
A NODEMcu USB port nem működik? Töltse fel a kódot az USB to TTL (FTDI) modul használatával mindössze 2 lépésben: Elege van abból, hogy sok vezetéket csatlakoztat USB -ről TTL modulra a NODEMcu -hoz, kövesse ezt az utasítást, és csak két lépésben töltse fel a kódot. Ha a A NODEMcu nem működik, akkor ne essen pánikba. Csak az USB -illesztőprogram -chip vagy az USB -csatlakozó