Sadržaj:
- Korak 1: Materijali
- Korak 2: Upoznajte program - odbor
- Korak 3: Upoznajte program - pločica
- Korak 4: Upoznajte program - igru
- Korak 5: Važne metode - kretanje
Video: Programirajte svoju igru 2048 W/Java !: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:04
Autor PranP1My (Nepotpuno) SiteFollow Više od autora:
Obožavam igru 2048. I tako sam odlučio programirati svoju verziju.
Vrlo je slična stvarnoj igri, ali sama programiranje daje mi slobodu da promijenim šta god poželim kad god to poželim. Ako želim igru 5x5 umjesto tipičnih 4x4, jednostavna promjena pomoću konstruktora 'Board' će mi to omogućiti. Recimo da želim otežati igru, dodajući figure na položaje koji će je učiniti složenijom za igrača, a ne nasumično. Koristeći jednostavan algoritam, mogu to učiniti. Iako neću pokriti sve ove izmjene u ovom Instructable -u, planiram ih dodavati u nastavku.
Za sada ćemo, međutim, programirati vašu tipičnu igru 2048.
Hajde da počnemo!
(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:
- Laptop
- Eclipse (ili bilo koji IDE po vašem izboru)
Da. To je to.
Korak 2: Upoznajte program - odbor
Postavio sam sav svoj kôd na GitHub - provjerite ovdje:
Podijelio sam igru u 3 klase: tabla, pločica i igra.
Board:
Opis: Klasa Board se bavi gameboard -om, postavljanjem niza elemenata 'Tile', dobijanjem trenutnog rezultata i najvećom pločicom i stavljanjem niza u niz (kasnije će se koristiti u 'Game'). Većina logike je također ovdje, klasa nudi metode za mrijest 2 i 4 na nasumičnim lokacijama, pomicanje 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 tabla (unutrašnje mreže) {…}
Metode:
/ * Getter metoda koja vraća ploču */
javna pločica getBoard () {…}
/ * Metoda Getter koja vraća rezultat */
public int getScore () {…}
/ * Pronalazi najvišu pločicu na ploči i vraća je */
public int getHighTile () {…}
/ * Štampa ploču na konzoli - 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 zatamnjena i ako jest, gurnut će igrače da se ponovo pokrenu */
javni boolean blackOut () {…}
/ * Provjerava je li igra završena - kada je ploča zatamnjena i nijedna pločica ne može kombinirati */
javna logička igraOver () {…}
/ * Poziva se kada se pritisne 'w' ili strelica gore - poziva 'verticalMove' za svaku pločicu na ploči sa parametrom 'gore' */
public void up () {…}
/ * Poziva se kada se pritisne 's' ili strelica prema dolje - poziva 'verticalMove' za svaku pločicu na ploči sa parametrom 'down' */public void down () {…}
/ * Poziva se kada se pritisne 'd' ili strelica udesno - poziva 'horizontalMove' za svaku pločicu na ploči sa parametrom 'desno' */public void right () {…}
/ * Poziva se kada se pritisne 'a' ili strelica ulijevo - poziva 'horizontalMove' za svaku pločicu na ploči sa parametrom 'left' */
javna praznina lijevo () {…}
/* Upoređuje vrednosti dve pločice zajedno i ako su iste ili ako je jednaka 0 (obična pločica) - njihove vrednosti se dodaju (pod uslovom da su pločice koje upoređujemo dve različite pločice i da se kreću u odgovarajućem smeru) - rekurzivno se kreće kroz red */
public void horizontalMove (int red, int col, smjer niza) {…}
/* Upoređuje vrednosti dve pločice zajedno i ako su iste ili ako je jednaka 0 (obična pločica) - njihove vrednosti se dodaju (pod uslovom da su pločice koje upoređujemo dve različite pločice i da se kreću u odgovarajućem smeru) - 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 se bavi 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 jasne same po sebi, s tim da metode 'dobijanja' 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 GUI -u */
javni niz toString () {…}
/ * Postavlja boju pločice na osnovu njene vrednosti */
javna void setColor () {…}
/ * Dobiva boju pločice */
public 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ćava im zajednički rad.
Konstruktori:
Nema
Metode:
/ * postavlja grafičko sučelje odgovarajućih veličina i dodaje slušatelja ključeva */
javna statička praznina setUpGUI () {…}
/ * Provjerava da li su pritisnuti wasd ili tipke 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 da se prefarbaju 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) {…}
/ * Glavni način - 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 vijest je da kada shvatite vertikalne pokrete, to razumijevanje možete primijeniti na horizontalna kretanja. U stvari, tri vertikalne metode kretanja potpuno su iste kao tri horizontalne metode, osim što se jedna pomiče niz redova, a druga preko stupaca. Iz tog razloga, fokusirajmo se samo na vertikalne metode kretanja.
private void verticalMove (int red, int col, smjer niza)
{Pločica početna = ploča [granica] [kolona]; Uporedi pločice = ploča [red] [kolona]; if (initial.getValue () == 0 || initial.getValue () == compare.getValue ()) {if (row> border || (direction.equals ("dolje") && (red <granica))) {int addScore = initial.getValue () + compare.getValue (); if (initial.getValue ()! = 0) {rezultat += addScore; } initial.setValue (addScore); compare.setValue (0); }} else {if (direction.equals ("dolje")) {border--; } else {granica ++; } verticalMove (red, kolo, smjer); }}
Gornja metoda, verticalMove, poziva se metodama 'gore' i 'dolje'. Pogledajmo 'gore' metodu.
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 ponovo poziva.
Preporučuje se:
Programirajte bilo koju ploču/modul ESP8266 sa AT komandama firmver: 5 koraka
Programirajte bilo koju ploču/modul ESP8266 sa firmverima AT naredbi: Svaki modul i ploča ESP8266 mogu se programirati na više načina: Arduino, python, Lua, AT naredbe, još mnogo vjerovatno … Prva tri 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 radili na Arduinu. Ovo je super jer je ATtiny sićušan i - pa - to omogućava
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 s vašim Android uređajem putem Bluetootha. Vrlo je jednostavno, a tako jeftino. Također nam omogućava da programiramo naš Arduino 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 mladosti, a budući da web ima ogromnu količinu web stranica na kojima možete igrati šah protiv računara ili živih protivnika, nikada nisam našao web stranicu koji prati vašu šahovsku partiju u kojoj zapravo igrate
Napišite svoju igru Tic Tac Toe na Javi: 6 koraka
Napišite svoju igru Tic Tac Toe na Javi: Siguran sam da svi znate o klasičnoj igri Tic Tic Toe. Još od osnovnih škola Tic Tac Toe je bila popularna igra koju sam igrao sa svojim prijateljima. Uvijek sam bio fasciniran jednostavnošću igre. Na prvoj godini moje