Isi kandungan:
- Langkah 1: Bahan
- Langkah 2: Kenali Program - Papan
- Langkah 3: Kenali Program - Jubin
- Langkah 4: Kenali Program - Permainan
- Langkah 5: Kaedah Penting - Pergerakan
Video: Program 2048 Permainan Sendiri W / Java !: 8 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:06
Oleh Laman Web PranP1My (Tidak Lengkap) Ikuti Lagi oleh pengarang:
Saya suka permainan 2048. Oleh itu, saya memutuskan untuk memprogram versi saya sendiri.
Ia sangat mirip dengan permainan yang sebenarnya, tetapi memprogramnya sendiri memberi saya kebebasan untuk mengubah apa sahaja yang saya mahukan kapan pun saya mahu. Sekiranya saya mahukan permainan 5x5 dan bukannya 4x4 biasa, perubahan sederhana menggunakan pembina 'Board' akan membolehkan saya melakukannya. Katakanlah saya mahu menjadikan permainan lebih sukar, menambah potongan pada kedudukan yang akan menjadikannya paling rumit untuk pemain dan bukannya secara rawak. Dengan menggunakan algoritma yang mudah, saya boleh melakukannya. Walaupun saya tidak akan merangkumi semua pengubahsuaian ini dalam Instructable ini, saya merancang untuk menambahkan lagi semasa saya pergi.
Namun, buat masa ini, kami akan memprogram permainan khas tahun 2048 anda.
Mari kita mulakan!
(Catatan sampingan: Instructable ini memerlukan pengetahuan pengaturcaraan yang sederhana - khusus dengan Java)
Langkah 1: Bahan
Anda tidak akan memerlukan banyak projek ini kerana ini hanyalah panduan pengaturcaraan.
Bahan:
- Komputer riba
- Gerhana (atau IDE pilihan anda)
Yup. Itu sahaja.
Langkah 2: Kenali Program - Papan
Saya memuat naik semua kod saya ke GitHub - lihat di sini:
Saya membahagikan permainan kepada 3 kelas: Board, Tile dan Game.
Papan:
Penerangan: Kelas Papan berurusan dengan papan permainan, mengatur susunan elemen 'Tile', mendapatkan skor semasa dan jubin tertinggi, dan meletakkan array dalam rentetan (akan digunakan kemudian di 'Game'). Sebilangan besar logiknya juga ada di sini, kelas menyediakan kaedah untuk melahirkan 2 dan 4 di lokasi rawak, bergerak ke atas, bawah, kiri dan kanan, dan memberi tahu pemain apabila permainan sudah berakhir.
Pembina:
/ * Pembina lalai untuk Board - menyediakan matriks 4x4 * /
Lembaga awam () {…}
/ * Konstruktor untuk Papan - siapkan matriks dengan ukuran grid yang ditentukan * /
Lembaga awam (int grid) {…}
Kaedah:
/ * Kaedah getter yang mengembalikan papan * /
jubin awam getBoard () {…}
/ * Kaedah mendapatkan yang mengembalikan skor * /
penilaian int awam () {…}
/ * Mencari jubin tertinggi di papan dan mengembalikannya * /
public int getHighTile () {…}
/ * Mencetak papan ke konsol - untuk tujuan ujian * /
cetakan tidak sah awam () {…}
/ * Mengembalikan papan sebagai String - digunakan dalam GUI * /
String toString awam () {…}
/ * Menelurkan 2 (atau 4) di tempat kosong pada masa gerakan dibuat * /
kekosongan awam () {…}
/ * Memeriksa untuk memastikan sama ada papan hitam sepenuhnya dan jika ada, ia akan mendorong pemain untuk memulakan semula * /
blackOut awam boolean () {…}
/ * Memeriksa untuk mengetahui apakah permainan sudah berakhir - ketika papan dihitamkan dan tidak ada jubin yang dapat bergabung * /
permainan boolean awamLebih () {…}
/ * Dipanggil ketika 'w' atau panah atas ditekan - memanggil 'verticalMove' untuk setiap jubin di papan dengan parameter 'up' * /
kekosongan awam () {…}
/ * Dipanggil ketika panah 's' atau panah bawah ditekan - memanggil 'verticalMove' untuk setiap jubin di papan dengan parameter 'down' * / public void down () {…}
/ * Dipanggil ketika 'd' atau anak panah kanan ditekan - memanggil 'horizontalMove' untuk setiap jubin di papan dengan parameter 'right' * / public void right () {…}
/ * Dipanggil ketika 'a' atau anak panah kiri ditekan - memanggil 'horizontalMove' untuk setiap jubin di papan dengan parameter 'kiri' * /
kekosongan awam kiri () {…}
/ * Membandingkan dua nilai jubin bersama-sama dan jika ia sama atau jika satu sama dengan 0 (jubin biasa) - nilainya ditambahkan (dengan syarat jubin yang kita bandingkan adalah dua jubin yang berbeza dan mereka bergerak ke arah yang sesuai) - bergerak secara berulang secara berturut-turut * /
public void horizontalMove (int baris, int col, String direction) {…}
/ * Membandingkan dua nilai jubin bersama-sama dan jika ia sama atau jika satu sama dengan 0 (jubin biasa) - nilainya ditambahkan (dengan syarat jubin yang kita bandingkan adalah dua jubin yang berbeza dan mereka bergerak ke arah yang sesuai) - bergerak secara berkala melalui lajur * /
public void verticalMove (int baris, int col, String direction) {…}
Ya, itu banyak kaedah - tetapi jangan risau, kebanyakan sangat mudah difahami. Selain itu, kelas 'Board' adalah yang paling kompleks, jadi segala sesuatu selepas ini akan menjadi agak mudah.
Langkah 3: Kenali Program - Jubin
Jubin:
Penerangan: Kelas Tile berkaitan dengan jubin individu, dan merupakan kelas terkecil dari semua kelas. Setiap jubin mempunyai nilai integer dan warna. Ia mempunyai dua pembina yang membuat Tiles dengan nilai 0 (default) atau nilai #. Kaedah ini kebanyakannya dapat dijelaskan sendiri, dengan kaedah 'getter' dan 'setter' membentuk sebahagian besar daripada jumlah keseluruhan.
Pembina:
/ * Membina jubin asas dengan nilai 0 * /
Jubin awam () {…}
/ * Membina jubin dengan nilai nombor * /
jubin awam (nombor int) {…}
Kaedah:
/ * Mendapat nilai jubin * /
public int getValue () {…}
/ * Menetapkan nilai jubin - digunakan semasa menambahkan dua jubin bersama * /
public void setValue (nilai int) {…}
/ * Mewakili jubin sebagai String - digunakan dalam GUI * /
String toString awam () {…}
/ * Menetapkan warna jubin berdasarkan nilainya * /
public void setColor () {…}
/ * Mendapatkan warna jubin * /
getColor tidak sah awam () {…}
Langkah 4: Kenali Program - Permainan
Permainan
Penerangan: Kelas Permainan merangkumi kaedah utama, kebanyakan kaedah GUI dan interaksi Utama. Ia memerlukan kelas Tile dan Board, dan membolehkan mereka bekerjasama.
Pembina:
Tiada
Kaedah:
/ * menyiapkan GUI dengan ukuran yang sesuai dan menambahkan Pendengar Utama * /
himpunan kekosongan statik awamUpGUI () {…}
/ * Memeriksa untuk melihat sama ada tombol wasd atau anak panah ditekan dan melakukan tindakan yang sesuai - mengemas kini JFrame dengan setiap pergerakan * /
kekunci kekosongan awam Ditekan (KeyEvent e) {…}
/ * Warnakan GUI dengan rangkaian rentetan, papan, jubin dan pastikan ia dicat semula ketika permainan berakhir * /
cat kosong awam (Grafik g) {…}
/ * melukis jubin individu - dipanggil dari kaedah cat * /
undian kekosongan awam (Grafik g, Jubin jubin, int x, int y) {…}
/ * Kaedah utama - menyiapkan GUI dan memulakan permainan * /
utama kekosongan statik awam (String args) {…}
Langkah 5: Kaedah Penting - Pergerakan
Kaedah pergerakan adalah yang paling penting untuk difahami, tetapi berita baiknya adalah apabila anda memahami pergerakan menegak, anda dapat menerapkan pemahaman itu pada pergerakan mendatar. Sebenarnya, tiga kaedah pergerakan menegak sama persis dengan tiga pergerakan kaedah mendatar, kecuali satu bergerak melintasi baris dan yang lain merentasi lajur. Untuk itu, mari kita fokus hanya pada kaedah pergerakan menegak.
private void verticalMove (int baris, int col, String arah)
{Permulaan jubin = papan [sempadan] [col]; Jubin membandingkan = papan [baris] [col]; if (initial.getValue () == 0 || initial.getValue () == membandingkan.getValue ()) {if (baris> sempadan || (arah.sama ("bawah") && (baris <sempadan))) {int addScore = initial.getValue () + membandingkan.getValue (); if (initial.getValue ()! = 0) {skor + = addScore; } permulaan.setValue (addScore); membandingkan.setValue (0); }} lain {if (direction.equals ("down")) {border--; } lain {sempadan ++; } verticalMove (baris, kol, arah); }}
Kaedah di atas, verticalMove, dipanggil dengan kaedah 'up' dan 'down'. Mari kita lihat kaedah 'up'.
kekosongan awam ()
{untuk (int i = 0; i <grids; i ++) {border = 0; untuk (int j = 0; j <grids; j ++) {if (papan [j] .getValue ()! = 0) {if (sempadan <= j) {verticalMove (j, i, "atas"); }}}}}
Kaedah ini melalui seluruh papan dan memanggil verticalMove untuk setiap jubin dengan parameter "naik". verticalMove kemudian membandingkan jubin pada kedudukan 'j' dan 'i' dengan jubin di kedudukan 'border' dan 'i'. Sekiranya keduanya sama, mereka digabungkan. Sekiranya tidak, jubin sempadan dinaikkan sebanyak 1 (kerana parameter di tempatnya 'naik'), dan verticalMove dipanggil lagi.
Disyorkan:
Permainan Dinosaur Hack Permainan Google Chrome: 9 Langkah
Permainan Dinosaur Hack Google Chrome Games: chrome t-rex run adalah permainan yang sangat menyeronokkan. Di sini kita akan menjadikannya lebih menghiburkan dengan menggunakan Arduino. Permainan dino ini tidak akan muncul di laman sambungan internet. Anda juga boleh melakukannya dengan menggunakan raspberry pi di sini kita membandingkan kedua papan secara terperinci Arduino
Pengawal Permainan DIY Berasaskan Arduino - Pengawal Permainan Arduino PS2 - Bermain Tekken Dengan Gamepad Arduino DIY: 7 Langkah
Pengawal Permainan DIY Berasaskan Arduino | Pengawal Permainan Arduino PS2 | Bermain Tekken Dengan Gamepad Arduino DIY: Hai kawan-kawan, bermain permainan selalu menyeronokkan tetapi bermain dengan permainan peribadi DIY Controller anda lebih menggembirakan. Oleh itu, kami akan menjadikan Pengawal permainan menggunakan arduino pro micro dalam arahan ini
Cara Memuat Naik Permainan ke Arduboy dan 500 Permainan ke Flash-cart: 8 Langkah
Cara Memuat naik Permainan ke Arduboy dan 500 Permainan ke Flash-cart: Saya membuat beberapa Arduboy buatan sendiri dengan memori Serial Flash yang dapat menyimpan maksimum 500 permainan untuk dimainkan di jalan raya. Saya berharap dapat berkongsi cara memuat permainan ke dalamnya, termasuk bagaimana menyimpan permainan ke dalam memori kilat bersiri dan membuat pakej permainan gabungan anda sendiri
Konsol Permainan Mini Ardubaby Dengan 500 Permainan: 10 Langkah
Ardubaby Mini Game Console Dengan 500 Permainan: Kredit kepada pencipta (Kevin Bates), Arduboy adalah konsol permainan 8 bit yang sangat berjaya. Terdapat beribu-ribu permainan yang ditulis oleh penggemar yang membagikannya secara bebas di forum komuniti Arduboy sehingga lebih banyak orang dapat belajar bagaimana membuat kod. Perisian
Tulis Permainan Tic Tac Toe Anda Sendiri di Java: 6 Langkah
Tulis Permainan Tic Tac Toe Anda Sendiri di Java: Saya pasti anda semua tahu mengenai permainan klasik Tic Tic Toe. Sejak zaman sekolah rendah, Tic Tac Toe adalah permainan popular yang biasa saya mainkan dengan rakan-rakan saya. Saya selalu terpesona dengan kesederhanaan permainan. Pada tahun pertama saya