Sadržaj:
- Korak 1: Materijali
- 2. korak: Upoznajte program - ploču
- Korak 3: Upoznajte program - pločica
- Korak 4: Upoznajte program - igru
- Korak 5: Važne metode - kretanje
Video: Programirajte svoju igru 2048 s Javom !: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:31
Napisao PranP1My (nepotpuno) SiteFollow Više od autora:
Volim igru 2048. I tako sam odlučio programirati svoju verziju.
Vrlo je slična stvarnoj igri, ali sama programiranje daje mi slobodu da promijenim što god poželim kad god to poželim. Ako želim igru 5x5 umjesto tipičnih 4x4, jednostavna promjena pomoću konstruktora 'Board' omogućit će mi to. Recimo da želim otežati igru, dodajući komade na položajima koji će učiniti igrača složenijim, a ne nasumičnim. Koristeći jednostavan algoritam, mogu učiniti upravo to. Iako neću pokriti sve ove izmjene u ovom Instructable -u, planiram ih dodavati u nastavku.
Za sada ćemo programirati vašu tipičnu igru 2048.
Započnimo!
(Napomena: Ovaj Instructable zahtijeva umjereno znanje programiranja - posebno s Javom)
Korak 1: Materijali
Za ovaj projekt nećete trebati mnogo jer je to samo vodič kroz programiranje.
Materijali:
- Prijenosno računalo
- Eclipse (ili bilo koji IDE po vašem izboru)
Da. To je to.
2. korak: Upoznajte program - ploču
Prenio sam sav svoj kôd na GitHub - provjerite ovdje:
Podijelio sam igru u 3 klase: ploču, pločicu i igru.
Odbor:
Opis: Klasa Board bavi se ploču za igru, postavljanjem niza elemenata 'Pločica', dobivanjem trenutnog rezultata i najvećom pločicom te stavljanjem niza u niz (kasnije će se koristiti u 'Igri'). Većina logike je također ovdje, klasa nudi metode za mrijest 2 i 4 na nasumičnim mjestima, kretanje gore, dolje, lijevo i desno, i davanje do znanja igračima kada igra završi.
Konstruktori:
/ * Zadani konstruktor za ploču - postavlja matricu 4x4 */
javni odbor () {…}
/ * Konstruktor za ploču - postavlja matricu s navedenom veličinom mreže */
javna ploča (unutarnje rešetke) {…}
Metode:
/ * Metoda Getter koja vraća ploču */
javna pločica getBoard () {…}
/ * Metoda dobivanja koja vraća rezultat */
public int getScore () {…}
/ * Pronalazi najvišu pločicu na ploči i vraća je */
public int getHighTile () {…}
/ * Ispisuje ploču na konzolu - radi testiranja */
public void print () {…}
/ * Vraća ploču kao niz - koristi se u grafičkom sučelju */
javni niz toString () {…}
/ * Pokreće 2 (ili 4) na praznom prostoru vrlo često kad se napravi potez */
javna praznina spawn () {…}
/ * Provjerava je li ploča potpuno zamračena i ako jest, potaknut će igrače na ponovno pokretanje */
javni boolean blackOut () {…}
/ * Provjerava je li igra gotova - kad je ploča zamračena i nijedna pločica se ne može kombinirati */
javna logička igraOver () {…}
/ * Poziva se kad se pritisne 'w' ili strelica prema gore - poziva 'verticalMove' za svaku pločicu na ploči s parametrom 'gore' */
public void up () {…}
/ * Poziva se kad se pritisne strelica 's' ili dolje - poziva 'verticalMove' za svaku pločicu na ploči s parametrom 'dolje' */public void down () {…}
/ * Poziva se kada se pritisne 'd' ili strelica udesno - poziva 'horizontalMove' za svaku pločicu na ploči s parametrom 'desno' */public void right () {…}
/ * Poziva se kada se pritisne 'a' ili strelica ulijevo - poziva 'horizontalMove' za svaku pločicu na ploči s parametrom 'lijevo' */
javna praznina left () {…}
/* Uspoređuje vrijednosti dviju pločica zajedno i ako su iste ili ako je jednaka 0 (obična pločica) - njihove se vrijednosti dodaju (pod uvjetom da su pločice koje uspoređujemo dvije različite pločice i da se kreću prema odgovarajućem smjeru) - rekurzivno se kreće kroz redak */
public void horizontalnoMove (int red, int col, smjer niza) {…}
/* Uspoređuje vrijednosti dviju pločica zajedno i ako su iste ili ako je jednaka 0 (obična pločica) - njihove se vrijednosti dodaju (pod uvjetom da su pločice koje uspoređujemo dvije različite pločice i da se kreću prema odgovarajućem smjeru) - rekurzivno se kreće kroz stupac */
public void verticalMove (int red, int col, smjer niza) {…}
Da, to je puno metoda - ali ne brinite, većinu je izuzetno lako razumjeti. Povrh toga, klasa 'Board' je najsloženija, pa će sve nakon ovoga biti relativno jednostavno.
Korak 3: Upoznajte program - pločica
Pločica:
Opis: Klasa Pločica bavi se pojedinačnim pločicama i najmanja je od svih klasa. Svaka pločica ima cijelu vrijednost i boju. Ima dva konstruktora koji stvaraju pločice vrijednosti 0 (zadano) ili vrijednosti #. Metode su uglavnom razumljive same od sebe, a metode 'dobivanja' i 'postavljanja' čine većinu ukupnog broja.
Konstruktori:
/ * Konstruira osnovnu pločicu s vrijednošću 0 */
javna pločica () {…}
/ * Konstruira pločicu s vrijednošću broja */
javna pločica (int broj) {…}
Metode:
/ * Dobiva vrijednost pločice */
public int getValue () {…}
/ * Postavlja vrijednost pločice - koristi se pri dodavanju dvije pločice zajedno */
public void setValue (int vrijednost) {…}
/ * Predstavlja pločicu kao niz - koristi se u grafičkom sučelju */
javni niz toString () {…}
/ * Postavlja boju pločice na temelju njezine vrijednosti */
javna void setColor () {…}
/ * Dobiva boju pločice */
javna void getColor () {…}
Korak 4: Upoznajte program - igru
igra
Opis: Klasa igre sadrži glavnu metodu, većinu GUI metoda i ključne interakcije. Potrebne su klase Pločica i Ploča i omogućuje im zajednički rad.
Konstruktori:
Nijedan
Metode:
/ * postavlja GUI odgovarajućih veličina i dodaje slušatelja ključeva */
javna statička praznina setUpGUI () {…}
/ * Provjerava je li pritisnuta tipka wasd ili sa strelicama i izvodi odgovarajuće radnje - ažurira JFrame svakim potezom */
public void keyPressed (KeyEvent e) {…}
/ * Boji GUI nizom žica, daskom, pločicama i osigurava njihovo ponovno bojanje kada igra završi */
java boja za praznine (grafika g) {…}
/ * crta pojedinačnu pločicu - poziva se metodom boje */
public void drawTiles (Grafika g, Pločice, int x, int y) {…}
/ * Glavna metoda - postavlja GUI i pokreće igru */
javna statička void main (String args) {…}
Korak 5: Važne metode - kretanje
Metode kretanja najvažnije su za razumijevanje, ali dobra je vijest da kad razumijete okomita kretanja, to razumijevanje možete primijeniti na vodoravna kretanja. Zapravo, tri vertikalne metode kretanja potpuno su iste kao tri horizontalne metode, osim što se jedna pomiče preko redaka, a druga preko stupaca. Iz tog razloga, usredotočimo se samo na vertikalne metode kretanja.
private void verticalMove (int red, int col, smjer niza)
{Pločica početna = ploča [obrub] [stup]; Usporedi pločice = ploča [red] [stup]; if (initial.getValue () == 0 || initial.getValue () == compare.getValue ()) {if (row> border || (direction.equals ("dolje") && (redak <granica))) {int addScore = initial.getValue () + compare.getValue (); if (initial.getValue ()! = 0) {rezultat += addScore; } initial.setValue (addScore); usporedi.setValue (0); }} else {if (direction.equals ("dolje")) {border--; } else {granica ++; } verticalMove (red, stup, smjer); }}
Gornja metoda, verticalMove, poziva se metodama 'gore' i 'dolje'. Pogledajmo metodu 'gore'.
javna praznina ()
{for (int i = 0; i <rešetke; i ++) {granica = 0; for (int j = 0; j <grids; j ++) {if (board [j] .getValue ()! = 0) {if (border <= j) {verticalMove (j, i, "gore"); }}}}}
Ova metoda prolazi kroz cijelu ploču i poziva verticalMove za svaku pločicu s parametrom "gore". verticalMove zatim uspoređuje pločicu na pozicijama 'j' i 'i' s pločicom na pozicijama 'border' i 'i'. Ako su dvije jednake, kombiniraju se. Ako nisu, rubna pločica se povećava za 1 (budući da je postavljeni parametar 'gore'), a verticalMove se ponovno poziva.
Preporučeni:
Programirajte bilo koju ploču/modul ESP8266 s AT naredbama Firmware: 5 koraka
Programirajte bilo koju ESP8266 ploču/modul s AT naredbama Firmware: Svaki ESP8266 modul i ploča mogu se programirati na mnogo načina: Arduino, python, Lua, AT naredbe, mnogo više vjerojatno … Prva tri od njih su najbolja za samostalni rad, AT firmver služi za korištenje ESP8266 kao modula ili za brzo testiranje s TTL RS232 c
Programirajte ATtiny s Arduinom: 7 koraka (sa slikama)
Programirajte ATtiny s Arduinom: Slijede upute za programiranje ATtiny mikrokontrolera pomoću Arduino IDE -a. Na običnom engleskom jeziku, ovo je način programiranja 8-pinskih Atmel čipova kao što biste inače Arduino. Ovo je super jer je ATtiny sićušan i - pa - to omogućuje
Programirajte svoj Arduino s Android uređajem putem Bluetootha: 6 koraka (sa slikama)
Programirajte svoj Arduino s Android uređajem putem Bluetootha: Pozdrav, u ovom uputstvu želim vam pokazati kako programirati svoj Arduino Uno sa svojim Android uređajem putem Bluetootha. Vrlo je jednostavno, a tako jeftino. Također nam omogućuje programiranje našeg Arduina gdje god poželimo preko bežičnog bluetootha … Dakle
Digitalni šah - Pratite svoju šahovsku igru na mreži: 5 koraka
Digitalni šah - Pratite svoju šahovsku igru na mreži: Igrao sam mnogo šaha od svoje mladosti, a budući da web ima ogromnu količinu web stranica za igranje šaha protiv računala ili živih protivnika, nikada nisam našao web stranicu koji prati vašu šahovsku partiju u kojoj zapravo igrate
Programirajte svoje računalo da se automatski isključi tako da odredite u koje vrijeme želite da to učini: 4 koraka
Programirajte svoje računalo da se automatski isključi tako da odredite u koje vrijeme želite preko noći nisam želio držati računalo uključeno cijelu noć nakon završetka preuzimanja i u