Obsah:
- Krok 1: Materiály
- Krok 2: Zoznámte sa s programom - rada
- Krok 3: Zoznámte sa s programom - dlaždica
- Krok 4: Zoznámte sa s programom - hrou
- Krok 5: Dôležité metódy - pohyb
Video: Naprogramujte si vlastnú hru 2048 W/Java !: 8 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:55
Od PranP1My (neúplné) stránky Nasledovať viac od autora:
Milujem hru 2048. A tak som sa rozhodol naprogramovať vlastnú verziu.
Je to veľmi podobné skutočnej hre, ale samotné programovanie mi dáva slobodu zmeniť čokoľvek chcem, kedykoľvek chcem. Ak chcem namiesto typického 4x4 hru 5x5, jednoduchá zmena pomocou konštruktéra „Board“mi to umožní. Povedzme, že chcem hru sťažiť a pridať figúrky na pozície, ktoré budú pre hráča najkomplexnejšie, a nie náhodne. Pomocou jednoduchého algoritmu to môžem urobiť. Aj keď nebudem pokrývať všetky tieto úpravy v tomto návode, mám v pláne postupne pridávať ďalšie.
Zatiaľ však naprogramujeme vašu typickú hru na rok 2048.
Začnime!
(Poznámka na stranu: Tento návod vyžaduje mierne znalosti programovania - konkrétne s jazykom Java)
Krok 1: Materiály
Na tento projekt nebudete potrebovať veľa, pretože je to len návod na programovanie.
Materiály:
- Prenosný počítač
- Eclipse (alebo akékoľvek IDE podľa vášho výberu)
Áno. To je všetko.
Krok 2: Zoznámte sa s programom - rada
Nahral som celý svoj kód na GitHub - pozrite sa sem:
Hru som rozdelil do 3 tried: doska, dlaždica a hra.
Doska:
Popis: Trieda Board sa zaoberá hracou doskou, nastavením radu prvkov „dlaždíc“, získaním aktuálneho skóre a najvyššej dlaždice a umiestnením poľa do reťazca (bude sa neskôr používať v „hre“). Väčšina logiky je tu tiež. Táto trieda poskytuje metódy na spawnovanie dvojiek a štvoriek na náhodných miestach, pohyb hore, dole, doľava a doprava a informovanie hráčov, keď sa hra skončí.
Konštruktéri:
/ * Predvolený konštruktér pre tabuľu - nastavuje maticu 4x4 */
verejná rada () {…}
/ * Constructor for the Board - nastaví maticu so zadanou veľkosťou mriežky */
public Board (int grids) {…}
Metódy:
/ * Metóda getra, ktorá vráti tabuľu */
verejná dlaždica getBoard () {…}
/ * Metóda getra, ktorá vracia skóre */
public int getScore () {…}
/ * Nájde najvyššiu dlaždicu na doske a vráti ju */
public int getHighTile () {…}
/ * Vytlačí dosku na konzolu - na testovacie účely */
verejná prázdna tlač () {…}
/ * Vráti dosku ako reťazec - používa sa v GUI */
public String toString () {…}
/ * Ukáže 2 (alebo 4) na prázdnom mieste, hneď ako je urobený ťah */
spawn public void () {…}
/ * Skontroluje, či je doska úplne začiernená a ak áno, prinúti hráčov reštartovať */
public boolean blackOut () {…}
/ * Skontroluje, či sa hra skončila - keď je doska stmavená a žiadna z dlaždíc sa nedá kombinovať */
public boolean gameOver () {…}
/ * Volá sa, keď je stlačené 'w' alebo šípka hore - volá 'verticalMove' pre každú dlaždicu na doske s parametrom 'hore' */
verejná neplatnosť () {…}
/ * Volá sa, keď stlačíte šípku 's' alebo nadol - volá 'verticalMove' pre každú dlaždicu na doske s parametrom 'dole' */public void down () {…}
/ * Volá sa, keď je stlačené 'd' alebo šípka doprava - volá 'horizontalMove' pre každú dlaždicu na doske s parametrom 'vpravo' */public void right () {…}
/ * Volá sa, keď je stlačené 'a' alebo šípka doľava - volá 'horizontalMove' pre každú dlaždicu na doske s parametrom 'left' */
verejná prázdnota vľavo () {…}
/* Porovnáva hodnoty dvoch dlaždíc dohromady a ak sú rovnaké alebo ak sa jedna rovná 0 (obyčajná dlaždica) - ich hodnoty sa sčítajú (za predpokladu, že dlaždice, ktoré porovnávame, sú dve rôzne dlaždice a pohybujú sa príslušným smerom) - rekurzívne sa pohybuje v riadku */
public void horizontalMove (int rad, int col, smer strunu) {…}
/* Porovnáva hodnoty dvoch dlaždíc dohromady a ak sú rovnaké alebo ak sa jedna rovná 0 (obyčajná dlaždica) - ich hodnoty sa sčítajú (za predpokladu, že dlaždice, ktoré porovnávame, sú dve rôzne dlaždice a pohybujú sa príslušným smerom) - rekurzívne sa pohybuje v stĺpci */
public void verticalMove (int rad, int col, smer reťazca) {…}
Áno, je to veľa metód - ale nebojte sa, väčšina je veľmi ľahko zrozumiteľná. Okrem toho je trieda „Board“najkomplexnejšia, takže všetko potom bude relatívne jednoduché.
Krok 3: Zoznámte sa s programom - dlaždica
Dlaždica:
Popis: Trieda Tile sa zaoberá jednotlivými dlaždicami a je najmenšia zo všetkých tried. Každá dlaždica má celočíselnú hodnotu a farbu. Má dva konštruktory, ktoré vytvárajú dlaždice hodnoty 0 (predvolené) alebo hodnoty #. Metódy sú väčšinou samovysvetľujúce a väčšinu z nich tvoria metódy „getter“a „setter“.
Konštruktéri:
/ * Zostaví základnú dlaždicu s hodnotou 0 */
verejná dlaždica () {…}
/ * Zostaví dlaždicu s hodnotou čísla */
public Tile (int number) {…}
Metódy:
/ * Získa hodnotu dlaždice */
public int getValue () {…}
/ * Nastaví hodnotu dlaždice - používa sa pri sčítaní dvoch dlaždíc dohromady */
public void setValue (int value) {…}
/ * Predstavuje dlaždicu ako reťazec - používa sa v GUI */
public String toString () {…}
/ * Nastaví farbu dlaždice na základe jej hodnoty */
public void setColor () {…}
/ * Získa farbu dlaždice */
public void getColor () {…}
Krok 4: Zoznámte sa s programom - hrou
Hra
Popis: Herná trieda obsahuje hlavnú metódu, väčšinu metód GUI a interakcie s kľúčmi. Preberá triedy Tile a Board a umožňuje im spolupracovať.
Konštruktéri:
Žiadny
Metódy:
/ * nastaví GUI s vhodnými veľkosťami a pridá poslucháč kľúčov */
verejná statická prázdnota setUpGUI () {…}
/ * Skontroluje, či sú stlačené klávesy wasd alebo šípky a vykonáva príslušné akcie - aktualizuje JFrame každým pohybom */
public void keyPressed (KeyEvent e) {…}
/ * GUI namaľuje sériou strún, dosky, dlaždíc a zaistí, aby boli po skončení hry prefarbené */
public void paint (grafika g) {…}
/ * nakreslí jednotlivú dlaždicu - volá sa metódou maľovania */
public void drawTiles (grafika g, dlaždica, int x, int y) {…}
/ * Hlavná metóda - nastaví GUI a spustí hru */
public static void main (reťazce args) {…}
Krok 5: Dôležité metódy - pohyb
Metódy pohybu sú najdôležitejšie na pochopenie, ale dobrou správou je, že akonáhle porozumiete vertikálnym pohybom, môžete ich porozumenie použiť na horizontálne pohyby. V skutočnosti sú tri metódy vertikálneho pohybu úplne rovnaké ako tri pohyby horizontálnou metódou, ibaže jeden sa pohybuje cez riadky a druhý cez stĺpce. Z tohto dôvodu sa zamerajme iba na metódy vertikálneho pohybu.
súkromná prázdna vertikálaPohyb (int rad, int col, smer reťazca)
{Tile initial = board [border] [col]; Porovnanie dlaždíc = doska [riadok] [stĺpec]; if (initial.getValue () == 0 || initial.getValue () == compare.getValue ()) {if (row> border || (direction.equals ("down") && (row <border))) {int addScore = initial.getValue () + compare.getValue (); if (initial.getValue ()! = 0) {score += addScore; } initial.setValue (addScore); porovnať.setValue (0); }} else {if (direction.equals ("down")) {border--; } else {border ++; } verticalMove (riadok, stĺpček, smer); }}
Vyššie uvedená metóda, verticalMove, sa nazýva metódami „hore“a „dole“. Pozrime sa na metódu „hore“.
verejná neplatnosť ()
{for (int i = 0; i <grids; i ++) {border = 0; for (int j = 0; j <grids; j ++) {if (board [j] .getValue ()! = 0) {if (border <= j) {verticalMove (j, i, "up"); }}}}}
Táto metóda prechádza celou doskou a volá verticalMove pre každú dlaždicu s parametrom „hore“. verticalMove potom porovná dlaždicu v polohe „j“a „i“s dlaždicou v polohe „hranica“a „i“. Ak sú tieto dve rovnaké, spoja sa. Ak nie sú, dlaždica orámovania sa zvýši o 1 (pretože nastavený parameter je „hore“) a zavolá sa znova verticalMove.
Odporúča:
Naprogramujte akúkoľvek dosku/modul ESP8266 pomocou firmvéru s príkazmi AT: 5 krokov
Naprogramujte akúkoľvek dosku/modul ESP8266 s príkazmi AT Firmware: Každý modul a dosku ESP8266 je možné naprogramovať mnohými spôsobmi: Arduino, python, Lua, AT príkazy, mnoho ďalších pravdepodobne … Prvé tri z nich sú najlepšie pre samostatnú prevádzku, AT firmvér je na použitie ESP8266 ako modulu alebo na rýchle testovanie s TTL RS232 c
Naprogramujte ATtiny pomocou Arduina: 7 krokov (s obrázkami)
Programovanie ATtiny pomocou Arduina: Nasledujú pokyny pre programovanie mikrokontrolérov ATtiny pomocou Arduino IDE. V jednoduchej angličtine je možné takto programovať 8-kolíkové čipy Atmel ako obvykle Arduino. Je to skvelé, pretože ATtiny je malý, a - dobre - to umožňuje
Vytvorte si vlastnú hru 1D Pong: 5 krokov (s obrázkami)
Vytvorte si vlastnú hru 1D Pong: V tomto projekte vám ukážem, ako som skombinoval dosku MDF s tlačidlami bzučiaka, diódami LED a Arduino Nano, aby som vytvoril hru 1D Pong, ktorú je skutočne zábavné hrať. Po ceste vám ukážem, ako vytvoriť elektronický obvod a ako sa líšia
Ovládač hry Arduino Rhythm (pre moju vlastnú hru): 6 krokov
Arduino Rhythm Game Controller (pre moju vlastnú hru): V tomto návode vám ukážem, ako zostavím tento herný ovládač Rhythm od začiatku. Zahŕňa základné zručnosti pri práci s drevom, základné znalosti 3D tlače a základné zručnosti v oblasti spájkovania. Tento projekt môžete pravdepodobne úspešne vytvoriť, ak máte nulový ex
Napíšte svoju vlastnú hru Tic Tac Toe v Jave: 6 krokov
Napíšte vlastnú hru Tic Tac Toe v Jave: Som si istý, že všetci poznáte klasickú hru Tic Tic Toe. Tic Tac Toe bola populárna hra, ktorú som hrával so svojimi priateľmi už od základnej školy. Vždy ma fascinovala jednoduchosť hry. V prvom ročníku môj