Përmbajtje:
- Hapi 1: Materialet
- Hapi 2: Njihuni me Programin - Bordi
- Hapi 3: Njihuni me Programin - Pllakë
- Hapi 4: Njihuni me Programin - Lojë
- Hapi 5: Metoda të rëndësishme - Lëvizja
Video: Programoni lojën tuaj 2048 Lojë W/Java !: 8 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:10
Nga PranP1My (Jo i plotë) SiteFollow More nga autori:
Më pëlqen loja 2048. Dhe kështu vendosa të programoj versionin tim.
Veryshtë shumë e ngjashme me lojën aktuale, por programimi i saj vetë më jep lirinë të ndryshoj çfarë të dua sa herë që dua. Nëse dua një lojë 5x5 në vend të 4x4 tipike, një ndryshim i thjeshtë duke përdorur konstruktorin 'Board' do të më lejojë ta bëj këtë. Thuaj që dua ta bëj lojën më të vështirë, duke shtuar pjesë në pozicione që do ta bëjnë atë më komplekse për lojtarin sesa në mënyrë të rastësishme. Duke përdorur një algoritëm të thjeshtë, unë mund ta bëj këtë. Ndërsa nuk do t'i mbuloj të gjitha këto modifikime në këtë Instructable, unë planifikoj të shtoj më shumë ndërsa shkoj.
Tani për tani, megjithatë, ne do të programojmë lojën tuaj tipike të vitit 2048.
Le të fillojmë!
(Një shënim anësor: Ky udhëzues kërkon njohuri të moderuara të programimit - veçanërisht me Java)
Hapi 1: Materialet
Ju nuk do të keni nevojë për shumë për këtë projekt pasi është vetëm një hap i programimit.
Materiale:
- Laptop
- Eklips (ose ndonjë IDE sipas dëshirës tuaj)
Po Kjo eshte.
Hapi 2: Njihuni me Programin - Bordi
Kam ngarkuar të gjithë kodin tim në GitHub - shikojeni këtu:
Unë e ndava lojën në 3 klasa: Bordi, Pllaka dhe Lojë.
Bordi:
Përshkrimi: Klasa e Bordit merret me tabelën e lojës, duke vendosur një grup elementësh 'Tile', duke marrë rezultatin aktual dhe pllakën më të lartë dhe duke e vendosur grupin në një varg (për t'u përdorur më vonë në 'Game'). Shumica e logjikës është gjithashtu këtu, klasa siguron metoda për pjelljen e 2 -ve dhe 4 -ve në vende të rastësishme, duke lëvizur lart, poshtë, majtas dhe djathtas dhe duke i bërë të ditur lojtarët kur loja ka mbaruar.
Ndërtuesit:
/ * Konstruktori i paracaktuar për Bordin - krijon një matricë 4x4 */
Bordi publik () {…}
/ * Ndërtuesi për Bordin - krijon një matricë me madhësi të caktuar të rrjetit */
Bordi publik (rrjetet int) {…}
Metodat:
/ * Metoda Getter që kthen tabelën */
Tile publike getBoard () {…}
/ * Metoda Getter që kthen rezultatin */
int int getScore () {…}
/ * Gjen pllakën më të lartë në tabelë dhe e kthen atë */
public int getHighTile () {…}
/ * Shtyp tabelën në tastierë - për qëllime testimi */
shtyp publik i pavlefshëm () {…}
/ * Kthen tabelën si një varg - përdoret në GUI */
publike String toString () {…}
/ * Hedh një 2 (ose 4) në një vend bosh shumë kohë kur bëhet një lëvizje */
pjellje publike e zbrazët () {…}
/ * Kontrollon për të parë nëse bordi është nxirë plotësisht dhe nëse është, do t'i shtyjë lojtarët të rinisin */
publike boolean blackOut () {…}
/ * Kontrollon për të parë nëse loja ka mbaruar - kur tabela është nxirë dhe asnjëra prej pllakave nuk mund të kombinohet */
lojë publike booleanOver () {…}
/ * Thirret kur shtypet "w" ose shigjeta lart - thërret "verticalMove" për çdo pllakë në tabelë me parametrin "lart" */
zbrazëti publike () {…}
/ * Thirret kur shtypet shigjeta "s" ose poshtë - thërret "verticalMove" për çdo pllakë në tabelë me parametrin "poshtë" */zbrazëti publike poshtë () {…}
/ * Thirret kur shtypet 'd' ose shigjeta e djathtë - thërret 'horizontalMove' për çdo pllakë në tabelë me parametrin 'right' */public void right () {…}
/ * Thirret kur shtypet 'a' ose shigjeta e majtë - thërret 'horizontalMove' për çdo pllakë në tabelë me parametrin 'majtas' */
zbrazëti publike majtas () {…}
/* Krahason dy vlerat e pllakave së bashku dhe nëse ato janë të njëjta ose nëse njëra është e barabartë me 0 (pllakë e thjeshtë) - vlerat e tyre shtohen (me kusht që pllakat që po krahasojmë të jenë dy pllaka të ndryshme dhe ato po lëvizin drejt drejtimit të duhur) - lëviz në mënyrë rekursive përmes rreshtit */
boshllëku publik horizontalMove (rreshti int, int kol, Drejtimi i vargut) {…}
/* Krahason dy vlerat e pllakave së bashku dhe nëse ato janë të njëjta ose nëse njëra është e barabartë me 0 (pllakë e thjeshtë) - vlerat e tyre shtohen (me kusht që pllakat që po krahasojmë të jenë dy pllaka të ndryshme dhe ato po lëvizin drejt drejtimit të duhur) - lëviz në mënyrë rekursive përmes kolonës */
boshllëku publik verticalMove (rreshti int, int kolona, Drejtimi i vargut) {…}
Po, këto janë shumë metoda - por mos u shqetësoni, shumica janë jashtëzakonisht të lehta për tu kuptuar. Për më tepër, klasa "Bordi" është më kompleksi, kështu që gjithçka pas kësaj do të jetë relativisht e thjeshtë.
Hapi 3: Njihuni me Programin - Pllakë
Tjegull:
Përshkrimi: Klasa Tile merret me pllakat individuale dhe është më e vogla nga të gjitha klasat. Çdo pllakë ka një vlerë të plotë dhe një ngjyrë. Ka dy konstruktorë që krijojnë Pllaka me vlerë 0 (parazgjedhje) ose vlerë #. Metodat janë kryesisht vetë -shpjeguese, me metodat 'marrëse' dhe 'vendosëse' që përbëjnë një pjesë të madhe të totalit.
Ndërtuesit:
/ * Ndërton një pllakë bazë me një vlerë prej 0 */
Tile publike () {…}
/ * Ndërton një pllakë me një vlerë të numrit */
Tjegull publike (numri int) {…}
Metodat:
/ * Merr vlerën e pllakës */
public int getValue () {…}
/ * Vendos vlerën e pllakës - përdoret kur shtoni dy pllaka së bashku */
void publik setValue (int value) {…}
/ * Përfaqëson pllakën si një varg - përdoret në GUI */
publike String toString () {…}
/ * Vendos ngjyrën e pllakës bazuar në vlerën e saj */
void publik setColor () {…}
/ * Merr ngjyrën e pllakës */
zbrazëti publike getColor () {…}
Hapi 4: Njihuni me Programin - Lojë
Lojë
Përshkrimi: Klasa e lojërave përmban metodën kryesore, shumicën e metodave GUI dhe ndërveprimet kryesore. Ajo merr të dyja klasat e Tileve dhe Bordit dhe u mundëson atyre të punojnë së bashku.
Ndërtuesit:
Asnje
Metodat:
/ * vendos GUI me madhësitë e përshtatshme dhe shton një Dëgjues Kyç */
publike statike void setUpGUI () {…}
/ * Kontrollon për të parë nëse tastet wasd ose shigjetat janë shtypur dhe kryen veprimet e duhura - përditëson JFrame me çdo lëvizje */
çelësi publik i zbrazëtPressed (KeyEvent e) {…}
/ * Ngjyros GUI me një varg telash, tabelë, pllaka dhe siguron që ato të lyhen kur loja të ketë mbaruar */
bojë publike e zbrazët (Grafika g) {…}
/ * vizaton një pllakë individuale - e quajtur nga metoda e bojës */
zbrazëti publike të zbrazëtTiles (Grafika g, pllaka e pllakave, int x, int y) {…}
/ * Metoda kryesore - vendos GUI dhe fillon lojën */
publiku statik i zbrazëtirës statike (String args) {…}
Hapi 5: Metoda të rëndësishme - Lëvizja
Metodat e lëvizjes janë më të rëndësishmet për t'u kuptuar, por lajmi i mirë është pasi të kuptoni lëvizjet vertikale, mund ta zbatoni atë kuptim në lëvizjet horizontale. Në fakt, tre metodat vertikale të lëvizjes janë të njëjta me tre lëvizjet e metodës horizontale, me përjashtim të njërës lëvizje nëpër rreshta dhe tjetrës nëpër kolona. Për këtë arsye, le të përqëndrohemi vetëm në metodat e lëvizjes vertikale.
private void verticalMove (rreshti int, int kol, Drejtimi i vargut)
{Pllaka fillestare = bordi [kufiri] [kol]; Krahasimi i pllakave = bordi [rreshti] [kol]; if (initial.getValue () == 0 || initial.getValue () == compare.getValue ()) {if (row> border || (drejtim.equals ("down") && (row <border))) {int addScore = initial.getValue () + compare.getValue (); if (initial.getValue ()! = 0) {score += addScore; } initial.setValue (addScore); krahaso.setValue (0); }} else {if (drejtimi.ekziston ("poshtë")) {kufiri--; } else {kufi ++; } verticalMove (rresht, kol, drejtim); }}
Metoda e mësipërme, verticalMove, quhet me metodat 'lart' dhe 'poshtë'. Le të hedhim një vështrim në metodën 'lart'.
zbrazëti publike ()
{për (int i = 0; i <rrjetet; i ++) {kufi = 0; për (int j = 0; j <rrjetet; j ++) {if (bordi [j] .getValue ()! = 0) {if (kufi <= j) {verticalMove (j, i, "lart"); }}}}}
Kjo metodë kalon nëpër të gjithë tabelën dhe thërret verticalMove për çdo pllakë me parametrin "lart". verticalMove pastaj krahason pllakën në pozicionin 'j' dhe 'i' me pllakën në pozicionin 'kufiri' dhe 'i'. Nëse të dy janë të barabartë, ato kombinohen. Nëse nuk janë, pllaka e kufirit rritet me 1 (pasi parametri në vend është 'lart'), dhe verticalMove thirret përsëri.
Recommended:
Bëni lojën tuaj 1D Pong: 5 hapa (me fotografi)
Bëni Lojën tuaj 1D Pong Lojë: Për këtë projekt do t'ju tregoj se si kombinova një tabelë MDF me butona zile, LED dhe një Arduino Nano në mënyrë që të krijoja një lojë 1D Pong që është vërtet argëtuese për tu luajtur. Gjatë rrugës unë do t'ju tregoj se si të krijoni qarkun elektronik dhe sa ndryshon
Luani lojën Simon në këmishën tuaj: 5 hapa
Luani lojën Simon në këmishën tuaj: A keni dashur gjithmonë të luani lojën Simon në këmishën tuaj? Edhe unë! Në këtë udhëzues, unë do t'ju tregoj se si të bëni një version të lojës Simon që mund të luani duke prekur këmishën tuaj, duke përdorur një Makey Makey
Shahu dixhital - Ndiqni lojën tuaj të shahut Online: 5 hapa
Shahu dixhital - Ndiqni lojën tuaj të shahut në internet: Unë kam luajtur shumë shah që kur isha i ri, dhe meqenëse uebi ka një sasi të madhe faqesh në internet për të luajtur shah kundër kompjuterëve ose kundërshtarëve të drejtpërdrejtë, kurrë nuk kam gjetur një faqe në internet e cila gjurmon lojën tuaj të shahut në të cilën jeni duke luajtur në të vërtetë
Shkruani lojën tuaj Tic Tac Toe në Java: 6 hapa
Shkruani lojën tuaj Tic Tac Toe në Java: Unë jam i sigurt që të gjithë ju e dini për lojën klasike të Tic Tic Toe. Që në vitet e shkollës fillore, Tic Tac Toe ishte një lojë popullore që e luaja me miqtë e mi. Unë kam qenë gjithmonë i hipnotizuar me thjeshtësinë e lojës. Në vitin tim të parë,
Si të kontrolloni nëse një lojë do të funksionojë në kompjuterin tuaj para se të blini lojën .: 4 hapa
Si të kontrolloni nëse një lojë do të funksionojë në kompjuterin tuaj para se të blini lojën: Kohët e fundit kam marrë Call of Duty 4 nga një mik (falas mund të shtoj) sepse nuk do të funksiononte në kompjuterin e tij. Epo, kompjuteri i tij është mjaft i ri dhe më hutoi pse nuk do të funksiononte. Kështu që pas disa orësh kërkimi në internet, hasa në