Sisukord:
- Samm: materjalid
- 2. samm: tutvuge programmiga - juhatus
- 3. samm: tutvuge programmiga - Tile
- 4. samm: tutvuge programmiga - mäng
- 5. samm: olulised meetodid - liikumine
Video: Programmeerige oma 2048 mäng W/Java !: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:45
Autor: PranP1My (mittetäielik) sait
Ma armastan mängu 2048. Ja nii otsustasin ma oma versiooni programmeerida.
See on väga sarnane tegeliku mänguga, kuid selle ise programmeerimine annab mulle vabaduse muuta kõike, mida tahan, millal tahan. Kui soovin tüüpilise 4x4 asemel 5x5 mängu, võimaldab seda lihtsasti teha „Board” konstruktori abil. Ütle, et tahan mängu keerulisemaks muuta, lisades tükke positsioonidele, mis muudavad selle mängija jaoks kõige keerukamaks, mitte juhuslikult. Lihtsa algoritmi abil saan seda teha. Kuigi ma ei hõlma kõiki neid selles juhendis tehtud muudatusi, kavatsen ma neid lisada.
Praegu aga programmeerime teie tüüpilise mängu 2048.
Alustame!
(Kõrvalmärkus: see juhend sisaldab nõutavaid programmeerimisalaseid teadmisi - eriti Java puhul)
Samm: materjalid
Selle projekti jaoks pole teil palju vaja, kuna see on lihtsalt programmeerimise ülevaade.
Materjalid:
- Sülearvuti
- Eclipse (või mõni teie valitud IDE)
Jep. See on kõik.
2. samm: tutvuge programmiga - juhatus
Laadisin kogu oma koodi GitHubi üles - vaadake seda siit:
Jagasin mängu kolme klassi: lauaplaat, plaat ja mäng.
Juhatus:
Kirjeldus: Lauaklass tegeleb mängulauaga, paneb paika 'Tile' elementide massiivi, kogub praeguse punktisumma ja kõrgeima plaadi ning paneb massiivi stringiks (kasutatakse hiljem 'Mängus'). Suurem osa loogikast on ka siin - klass pakub meetodeid 2 -de ja 4 -de kudemiseks juhuslikes kohtades, liikudes üles, alla, vasakule ja paremale ning andes mängijatele teada, kui mäng on lõppenud.
Konstruktorid:
/ * Tahvli vaikekonstruktor - seab üles 4x4 maatriksi */
avalik juhatus () {…}
/ * Tahvli konstruktor - määrab kindlaks määratud ruudustiku suurusega maatriksi */
avalik juhatus (int ruudustikud) {…}
Meetodid:
/ * Getteri meetod, mis tagastab tahvli */
avalik plaat getBoard () {…}
/ * Getteri meetod, mis tagastab skoori */
avalik int getScore () {…}
/ * Leiab tahvlilt kõrgeima plaadi ja tagastab selle */
public int getHighTile () {…}
/ * Prindib tahvli konsoolile - testimiseks */
public void print () {…}
/ * Tagastab tahvli stringina - kasutatakse GUI -s */
public String toString () {…}
/ * Kudub 2 (või 4) tühjale kohale kohe, kui käik on tehtud */
public void spawn () {…}
/ * Kontrollib, kas plaat on täielikult pimendatud ja kui see on nii, siis kutsub see mängijaid taaskäivitama */
public boolean blackOut () {…}
/ * Kontrollib, kas mäng on läbi - kui laud on pimendatud ja ükski plaat ei saa kombineerida */
public boolean gameOver () {…}
/ * Helistatakse, kui vajutatakse nuppu „w” või ülesnool - kutsub „verticalMove” iga plaadi plaadil parameetriga „üles” */
avalik tühistamine () {…}
/ * Helistatakse, kui vajutatakse nuppu „s” või allanoolt - kutsub „verticalMove” iga tahvli plaati parameetriga „alla” */public void down () {…}
/ * Helistatakse, kui vajutatakse nuppu „d” või paremat noolt - kutsub nuppu „horizontalMove” iga plaadi plaadil parameetriga „right” */public void right () {…}
/ * Helistatakse, kui vajutatakse a- või vasaknoolt - kutsub 'horizontalMove' iga tahvli plaadi kohta parameetriga 'left' */
public void left () {…}
/* Võrdleb kahe plaadi väärtusi koos ja kui need on samad või kui üks on võrdne 0 -ga (tavaline plaat) - nende väärtused lisatakse (eeldusel, et võrdlusplaadid on kaks erinevat plaati ja nad liiguvad sobivas suunas) - liigub rekursiivselt läbi rea */
public void horizontalMove (int rida, int col, stringi suund) {…}
/* Võrdleb kahe plaadi väärtusi koos ja kui need on samad või kui üks on võrdne 0 -ga (tavaline plaat) - nende väärtused lisatakse (eeldusel, et võrdlusplaadid on kaks erinevat plaati ja nad liiguvad sobivas suunas) - liigub rekursiivselt läbi veeru */
public void verticalMove (int rida, int col, stringi suund) {…}
Jah, neid meetodeid on palju - aga ärge muretsege, enamik neist on äärmiselt kergesti mõistetavad. Lisaks on „Board” klass kõige keerulisem, nii et pärast seda on kõik suhteliselt lihtne.
3. samm: tutvuge programmiga - Tile
Plaat:
Kirjeldus: Tile klass käsitleb üksikuid plaate ja on kõigi klasside väikseim. Igal plaadil on täisarv ja värv. Sellel on kaks konstruktorit, mis loovad plaadid väärtusega 0 (vaikimisi) või #. Meetodid on enamasti iseenesestmõistetavad, „getter” ja „setter” meetodid moodustavad suurema osa koguarvust.
Konstruktorid:
/ * Ehitab põhiplaadi väärtusega 0 */
avalik plaat () {…}
/ * Ehitab paani väärtusega number */
avalik plaat (int number) {…}
Meetodid:
/ * Saab plaadi väärtuse */
public int getValue () {…}
/ * Määrab paani väärtuse - kasutatakse kahe plaadi lisamisel */
public void setValue (int väärtus) {…}
/ * Esitab paani stringina - kasutatakse GUI -s */
public String toString () {…}
/ * Määrab plaadi värvi selle väärtuse alusel */
public void setColor () {…}
/ * Saab plaadi värvi */
public void getColor () {…}
4. samm: tutvuge programmiga - mäng
Mäng
Kirjeldus: Mänguklass sisaldab peamist meetodit, enamikku GUI -meetodeid ja peamisi interaktsioone. See võtab nii plaatide kui ka lauatunde ning võimaldab neil koostööd teha.
Konstruktorid:
Puudub
Meetodid:
/ * seadistab sobiva suurusega GUI ja lisab võtme kuulaja */
public staatiline tühine setUpGUI () {…}
/ * Kontrollib, kas wasd- või nooleklahve on vajutatud, ja teeb sobivaid toiminguid - värskendab JFrame'i iga liigutusega */
public void keyVajutatud (KeyEvent e) {…}
/ * Värvib graafilise kasutajaliidese rea stringide, tahvli ja plaatidega ning tagab, et need värvitakse uuesti pärast mängu lõppu */
public void paint (graafika g) {…}
/ * joonistab üksiku paani - kutsutud värvimismeetodilt */
public void drawTiles (Graafika g, Tile tile, int x, int y) {…}
/ * Peamine meetod - seadistab GUI ja käivitab mängu */
public static void main (String args) {…}
5. samm: olulised meetodid - liikumine
Liigutusmeetoditest on kõige olulisem aru saada, kuid hea uudis on see, et kui olete vertikaalsetest liikumistest aru saanud, saate seda arusaama horisontaalsete liikumiste puhul rakendada. Tegelikult on kolm vertikaalset liikumismeetodit täpselt samad, mis kolm horisontaalmeetodi liigutust, välja arvatud üks liigub üle ridade ja teine üle veergude. Sel põhjusel keskendume ainult vertikaalsete liikumiste meetoditele.
private void verticalMove (int rida, int col, stringi suund)
{Plaatide initsiaal = laud [piir] [col]; Plaatide võrdlus = plaat [rida] [col]; if (initial.getValue () == 0 || initial.getValue () == võrdle.getVäärtus ()) {if (rida> piir || (direction.equals ("alla") && (rida <äär))) {int addScore = initial.getValue () + võrrelda.getValue (); if (initial.getValue ()! = 0) {score += addScore; } initial.setValue (addScore); võrrelda.setValue (0); }} else {if (direction.equals ("down")) {border--; } muu {piir ++; } verticalMove (rida, veerg, suund); }}
Ülaltoodud meetodit verticalMove kutsutakse üles ja alla meetoditega. Vaatame "üles" meetodit.
avalik tühistamine ()
{jaoks (int i = 0; i <grids; i ++) {border = 0; jaoks (int j = 0; j <grids; j ++) {if (board [j] .getValue ()! = 0) {if (border <= j) {verticalMove (j, i, "up"); }}}}}
See meetod läbib kogu tahvli ja kutsub vertikaalselt liikuma iga plaadi jaoks parameetriga "üles". verticalMove võrdleb seejärel plaati positsioonil 'j' ja 'i plaadiga positsioonil' border 'ja' i '. Kui need kaks on võrdsed, ühendatakse need. Kui neid pole, suurendatakse äärisetahvlit 1 võrra (kuna kehtiv parameeter on „üleval”) ja uuesti kutsutakse vertikaalset liikumist.
Soovitan:
Programmeerige ükskõik milline ESP8266 tahvel/moodul koos AT -käskudega Püsivara: 5 sammu
Programmeerige mis tahes ESP8266 tahvel/moodul koos AT -käskudega Püsivara: Iga ESP8266 moodulit ja tahvlit saab programmeerida mitmel viisil: Arduino, python, Lua, AT käsud, palju muud … Tõenäoliselt on esimesed kolm neist parimad iseseisvaks kasutamiseks, AT püsivara on mõeldud ESP8266 kasutamiseks moodulina või kiirtestimiseks TTL RS232 c -ga
Programmeerige oma Arduino Android -seadmega Bluetoothi kaudu: 6 sammu (piltidega)
Programmeerige oma Arduino Android -seadmega Bluetoothi kaudu: Tere maailm, selles juhendis tahan teile näidata, kuidas oma Arduino Unot oma Android -seadmega Bluetoothi kaudu programmeerida. See on väga lihtne ja nii odav. Samuti võimaldab see meil juhtmevaba Bluetoothi kaudu oma Arduino programmeerida kuhu iganes me tahame … Nii et
Kirjutage Java -s oma Tic Tac Toe mäng: 6 sammu
Kirjutage Java -s oma Tic Tac Toe mäng: Olen kindel, et kõik teavad Tic Tic Toe klassikalisest mängust. Juba põhikooliaastatest peale oli Tic Tac Toe populaarne mäng, mida mängisin koos sõpradega. Mängu lihtsus on mind alati lummanud. Uuel aastal oli minu
Programmeerige Arduino nutitelefoni abil: 6 sammu (piltidega)
Arduino programmeerimine nutitelefoni abil: selles juhendis olen teile näidanud, kuidas oma nutitelefoni abil oma Arduino plaati programmeerida
Programmeerige oma arvuti automaatselt välja lülituma, määrates, millal soovite seda teha: 4 sammu
Programmeerige oma arvuti automaatselt välja lülituma, määrates, millal soovite seda teha: hei, see on teine juhis, mis on võetud minu igapäevaelust … viimati pidin arvutisse palju tarkvara alla laadima ja lasin sellel alla laadida üleöö, ma ei tahtnud pärast allalaadimise lõpetamist ja öösel oma arvutit kogu öö sisse lülitada