Kazalo:
- 1. korak: Materiali
- 2. korak: Spoznajte program - odbor
- 3. korak: Spoznajte program - ploščice
- 4. korak: Spoznajte program - igro
- 5. korak: Pomembne metode - gibanje
Video: Programirajte svojo igro 2048 W/Java !: 8 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:02
Avtor PranP1My (nepopolno) Sledite Več avtorja:
Všeč mi je igra 2048. Zato sem se odločil, da programiram svojo različico.
Je zelo podobna dejanski igri, vendar mi programiranje sam daje svobodo, da kadar koli želim spremeniti karkoli želim. Če želim igro 5x5 namesto tipičnih 4x4, mi bo to omogočila preprosta sprememba s konstruktorjem 'Board'. Recimo, da želim otežiti igro in dodati kose na položaje, zaradi katerih bo igralcu bolj zapleteno in ne naključno. Z enostavnim algoritmom lahko naredim prav to. Čeprav v tem navodilu ne bom obravnaval vseh teh sprememb, nameravam v prihodnje dodati še več.
Za zdaj pa bomo programirali vašo tipično igro leta 2048.
Začnimo!
(Opomba: Ta Instructable zahteva zmerno znanje programiranja - zlasti z Javo)
1. korak: Materiali
Za ta projekt ne boste potrebovali veliko, saj je to le koraki v programiranju.
Materiali:
- Prenosni računalnik
- Eclipse (ali kateri koli IDE po vaši izbiri)
Ja. To je to.
2. korak: Spoznajte program - odbor
Vso kodo sem naložil na GitHub - preverite tukaj:
Igro sem razdelil v tri razrede: deska, ploščice in igra.
Plošča:
Opis: Razred Board se ukvarja z igralno ploščo, nastavlja niz elementov »Ploščice«, pridobi trenutni rezultat in najvišjo ploščico ter matriko postavi v niz (ki bo uporabljen kasneje v »Igra«). Večina logike je tudi tukaj, razred, ki ponuja metode za drstenje dveh in štirih na naključnih lokacijah, premikanje navzgor, navzdol, levo in desno ter obveščanje igralcev, ko je igre konec.
Konstruktorji:
/ * Privzeti konstruktor za ploščo - nastavi matriko 4x4 */
javni odbor () {…}
/ * Konstruktor za ploščo - nastavi matriko z določeno velikostjo mreže */
javna tabla (int mreže) {…}
Metode:
/ * Metoda Getter, ki vrne ploščo */
javna ploščica getBoard () {…}
/ * Metoda Getter, ki vrne rezultat */
public int getScore () {…}
/ * Poišče najvišjo ploščico na plošči in jo vrne */
public int getHighTile () {…}
/ * Natisne ploščo na konzolo - za namene testiranja */
public void print () {…}
/ * Vrne ploščo kot niz - uporabljeno v grafičnem vmesniku */
javni niz toString () {…}
/ * Ustvari 2 (ali 4) na praznem prostoru zelo hitro, ko se izvede poteza */
javna praznina spawn () {…}
/ * Preveri, ali je deska popolnoma zatemnjena in če je, bo igralce spodbudil k ponovnemu zagonu */
public boolean blackOut () {…}
/ * Preveri, ali je igre konec - ko je plošča zatemnjena in nobena ploščica ne more združiti */
javna logična igraOver () {…}
/ * Pokliče se, ko pritisnete puščico 'w' ali gor - pokliče 'verticalMove' za vsako ploščico na plošči s parametrom 'gor' */
public void up () {…}
/ * Pokliče se, ko pritisnete puščico 's' ali puščico navzdol - kliče 'verticalMove' za vsako ploščico na plošči s parametrom 'dol' */public void down () {…}
/ * Pokliče se, ko pritisnete 'd' ali puščico desno - pokliče 'horizontalMove' za vsako ploščico na plošči s parametrom 'right' */public void right () {…}
/ * Pokliče se, ko pritisnete 'a' ali puščico levo - kliče 'horizontalMove' za vsako ploščico na plošči s parametrom 'left' */
javna praznina levo () {…}
/* Primerja vrednosti dveh ploščic skupaj in če sta enaki ali če je enaka 0 (navadna ploščica) - se njune vrednosti dodajo (pod pogojem, da sta ploščici, ki jo primerjamo, dve različni ploščici in se premikata v ustrezno smer) - rekurzivno se premika po vrstici */
public void horizontalnoMove (vrstica int, int col, smer niza) {…}
/* Primerja vrednosti dveh ploščic skupaj in če sta enaki ali če je enaka 0 (navadna ploščica) - se njune vrednosti dodajo (pod pogojem, da sta ploščici, ki jo primerjamo, dve različni ploščici in se premikata v ustrezno smer) - rekurzivno se premika skozi stolpec */
public void verticalMove (int vrstica, int col, smer niza) {…}
Ja, to je veliko metod - vendar ne skrbite, večino je zelo enostavno razumeti. Poleg tega je razred 'Board' najbolj zapleten, zato bo vse po tem razmeroma preprosto.
3. korak: Spoznajte program - ploščice
Ploščica:
Opis: Razred Tile obravnava posamezne ploščice in je najmanjši od vseh razredov. Vsaka ploščica ima celoštevilčno vrednost in barvo. Ima dva konstruktorja, ki ustvarjata ploščice vrednosti 0 (privzeto) ali vrednosti #. Metode so večinoma samoumevne, pri čemer metode „getter“in „setter“predstavljajo večino vseh.
Konstruktorji:
/ * Konstruira osnovno ploščico z vrednostjo 0 */
javna ploščica () {…}
/ * Ustvari ploščico z vrednostjo številke */
javna ploščica (int številka) {…}
Metode:
/ * Dobi vrednost ploščice */
public int getValue () {…}
/ * Nastavi vrednost ploščice - uporablja se pri sestavljanju dveh ploščic skupaj */
public void setValue (int vrednost) {…}
/ * Predstavlja ploščico kot niz - uporablja se v grafičnem vmesniku */
javni niz toString () {…}
/ * Nastavi barvo ploščice glede na njeno vrednost */
public void setColor () {…}
/ * Dobi barvo ploščice */
public void getColor () {…}
4. korak: Spoznajte program - igro
Igra
Opis: Razred iger vsebuje glavno metodo, večino metod grafičnega vmesnika in ključne interakcije. Potrebuje tako razrede Tile kot Board in jim omogoča skupno delo.
Konstruktorji:
Nobena
Metode:
/ * nastavi grafični vmesnik z ustreznimi velikostmi in doda poslušalca ključev */
javna statična praznina setUpGUI () {…}
/ * Preveri, ali so pritisnjene tipke wasd ali puščice in izvede ustrezna dejanja - ob vsakem premiku posodobi okvir JFrame */
public void keyPressed (KeyEvent e) {…}
/ * Barva grafični vmesnik z nizom nizov, ploščo, ploščicami in zagotavlja, da so prebarvani, ko je igre konec */
barva za javno praznino (grafika g) {…}
/ * nariše posamezno ploščico - poklicano z metodo barvanja */
public void drawTiles (grafika g, ploščice, int x, int y) {…}
/ * Glavna metoda - nastavi grafični vmesnik in zažene igro */
javna statična void main (String args) {…}
5. korak: Pomembne metode - gibanje
Metode gibanja so najpomembnejše za razumevanje, toda dobra novica je, da ko razumete navpična gibanja, lahko to razumevanje uporabite za vodoravna gibanja. Dejansko so tri vertikalne metode premikanja popolnoma enake kot tri horizontalne metode premikanja, le da se ena premika po vrsticah, druga pa po stolpcih. Zato se osredotočimo le na metode navpičnega gibanja.
private void verticalMove (vrstica int, int col, smer niza)
{Tile začetnica = deska [obroba] [stolpec]; Primerjaj ploščice = deska [vrstica] [stolpec]; if (initial.getValue () == 0 || initial.getValue () == compare.getValue ()) {if (vrstica> meja || (smer.equals ("dol") && (vrstica <meja))) {int addScore = initial.getValue () + compare.getValue (); if (initial.getValue ()! = 0) {rezultat += addScore; } initial.setValue (addScore); compare.setValue (0); }} else {if (direction.equals ("dol")) {border--; } else {meja ++; } verticalMove (vrstica, stolpec, smer); }}
Zgornjo metodo, verticalMove, kličemo po metodah 'gor' in 'dol'. Oglejmo si metodo "gor".
javna praznina ()
{for (int i = 0; i <rešetke; i ++) {border = 0; for (int j = 0; j <grids; j ++) {if (board [j] .getValue ()! = 0) {if (border <= j) {verticalMove (j, i, "gor"); }}}}}
Ta metoda gre skozi celotno ploščo in kliče verticalMove za vsako ploščico s parametrom "gor". verticalMove nato ploščico na položaju 'j' in 'i' primerja s ploščico na položaju 'border' in 'i'. Če sta oba enaka, se združita. Če niso, se obrobna ploščica poveča za 1 (ker je veljavni parameter 'gor'), in verticalMove se ponovno pokliče.
Priporočena:
Programirajte katero koli ploščo/modul ESP8266 z vdelano programsko opremo ukazov AT: 5 korakov
Programirajte katero koli ploščo/modul ESP8266 z vdelano programsko opremo ukazov AT: Vsak modul in ploščo ESP8266 lahko programirate na več načinov: Arduino, python, Lua, ukazi AT, veliko več verjetno … Prvi trije so najboljši za samostojno delovanje, vdelana programska oprema AT je za uporabo ESP8266 kot modula ali za hitro testiranje s TTL RS232 c
Programirajte ATtiny z Arduinom: 7 korakov (s slikami)
Programiranje ATtinyja z Arduinom: Sledijo navodila za programiranje mikrokrmilnikov ATtiny z uporabo Arduino IDE. V preprosti angleščini je to način programiranja 8-polnih čipov Atmel kot običajno pri Arduinu. To je kul, ker je ATtiny majhen in - no - to omogoča
Naredite svojo 1D pong igro: 5 korakov (s slikami)
Naredite svojo 1D pong igro: Za ta projekt vam bom pokazal, kako sem združil ploščo MDF z gumbi za zvonjenje, LED in Arduino Nano, da bi ustvaril 1D pong igro, ki jo je res zabavno igrati. Med potjo vam bom pokazal, kako ustvariti elektronsko vezje in kako se razlikuje
Ustvarite svojo prvo dirkaško igro: 10 korakov
Ustvarite svojo prvo dirkalno igro: če ste naredili nekaj Python kodiranja in ste želeli napisati igro, ki bi jo lahko imeli v Pygame Zero. V tej vadnici bomo pisali preprosto dirkalno igro
Napišite svojo igro Tic Tac Toe v Javi: 6 korakov
Napišite svojo igro Tic Tac Toe v Javi: Prepričan sem, da vsi veste o klasični igri Tic Tic Toe. Tic Tac Toe je bil že od osnovnošolskih let priljubljena igra, s katero sem se igral s prijatelji. Vedno sem bil navdušen nad preprostostjo igre. V prvem letniku sem