Daftar Isi:
- Langkah 1: Bahan
- Langkah 2: Kenali Programnya - Papan
- Langkah 3: Kenali Programnya - Tile
- Langkah 4: Kenali Programnya - Game
- Langkah 5: Metode Penting - Gerakan
Video: Program Game 2048 Anda Sendiri dengan Java!: 8 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:53
Oleh PranP1My (Tidak Lengkap) SiteFollow More by the author:
Saya suka game 2048. Jadi saya memutuskan untuk memprogram versi saya sendiri.
Ini sangat mirip dengan permainan yang sebenarnya, tetapi memprogramnya sendiri memberi saya kebebasan untuk mengubah apa pun yang saya inginkan kapan pun saya mau. Jika saya menginginkan game 5x5 alih-alih 4x4, perubahan sederhana menggunakan konstruktor 'Papan' akan memungkinkan saya melakukannya. Katakanlah saya ingin membuat permainan lebih sulit, menambahkan potongan pada posisi yang akan membuatnya paling rumit bagi pemain daripada secara acak. Menggunakan algoritma sederhana, saya bisa melakukan hal itu. Meskipun saya tidak akan membahas semua modifikasi ini di Instructable ini, saya berencana untuk menambahkan lebih banyak saat saya pergi.
Namun, untuk saat ini, kami akan memprogram game khas Anda di tahun 2048.
Mari kita mulai!
(Catatan tambahan: Instruksi ini membutuhkan pengetahuan pemrograman yang moderat - khususnya dengan Java)
Langkah 1: Bahan
Anda tidak perlu banyak untuk proyek ini karena ini hanya panduan pemrograman.
Bahan:
- Laptop
- Eclipse (atau IDE apa pun pilihan Anda)
Ya. Itu dia.
Langkah 2: Kenali Programnya - Papan
Saya mengunggah semua kode saya ke GitHub - lihat di sini:
Saya membagi game menjadi 3 kelas: Board, Tile, dan Game.
Papan:
Deskripsi: Kelas Board berurusan dengan gameboard, menyiapkan larik elemen 'Ubin', mendapatkan skor saat ini dan ubin tertinggi, dan menempatkan larik dalam string (untuk digunakan nanti di 'Game'). Sebagian besar logika juga ada di sini, kelas menyediakan metode untuk memunculkan 2 dan 4 di lokasi acak, bergerak ke atas, bawah, kiri dan kanan, dan memberi tahu pemain saat permainan selesai.
Konstruktor:
/* Konstruktor default untuk Board - menyiapkan matriks 4x4 */
Dewan publik() {…}
/* Konstruktor untuk Board - menyiapkan matriks dengan ukuran grid yang ditentukan */
Papan publik (int grid) {…}
Metode:
/* Metode pengambil yang mengembalikan papan */
Ubin publik getBoard() {…}
/* Metode pengambil yang mengembalikan skor */
publik int getScore() {…}
/* Menemukan ubin tertinggi di papan dan mengembalikannya */
publik int getHighTile() {…}
/* Mencetak papan ke konsol - untuk tujuan pengujian */
cetak batal publik() {…}
/* Mengembalikan papan sebagai String - digunakan dalam GUI */
String publik toString() {…}
/* Memunculkan 2 (atau 4) di ruang kosong saat gerakan dilakukan */
kekosongan publik spawn() {…}
/* Memeriksa untuk melihat apakah papan benar-benar gelap dan jika ya, itu akan mendorong pemain untuk memulai kembali */
blackOut boolean publik() {…}
/* Memeriksa apakah permainan sudah selesai - saat papan menjadi gelap dan tidak ada ubin yang dapat digabungkan */
gameOver boolean publik() {…}
/* Dipanggil saat 'w' atau panah atas ditekan - memanggil 'vertikalMove' untuk setiap ubin di papan dengan parameter 'naik' */
kekosongan publik atas() {…}
/* Dipanggil saat 's' atau panah bawah ditekan - memanggil 'verticalMove' untuk setiap ubin di papan dengan parameter 'down' */public void down() {…}
/* Dipanggil saat 'd' atau panah kanan ditekan - memanggil 'horizontalMove' untuk setiap ubin di papan dengan parameter 'kanan' */public void right() {…}
/* Dipanggil ketika 'a' atau panah kiri ditekan - memanggil 'horizontalMove' untuk setiap ubin di papan dengan parameter 'kiri' */
kekosongan publik kiri() {…}
/* Membandingkan dua nilai ubin bersama-sama dan jika keduanya sama atau jika satu sama dengan 0 (ubin polos) - nilainya ditambahkan (asalkan ubin yang kita bandingkan adalah dua ubin berbeda dan bergerak ke arah yang sesuai) - bergerak secara rekursif melalui baris */
public void horizontalMove (int baris, int col, arah String) {…}
/* Membandingkan dua nilai ubin bersama-sama dan jika keduanya sama atau jika satu sama dengan 0 (ubin polos) - nilainya ditambahkan (asalkan ubin yang kita bandingkan adalah dua ubin berbeda dan bergerak ke arah yang sesuai) - bergerak secara rekursif melalui kolom */
public void verticalMove (int baris, int col, Arah string) {…}
Ya, itu banyak metode - tapi jangan khawatir, sebagian besar sangat mudah dimengerti. Selain itu, kelas 'Papan' adalah yang paling kompleks, jadi semuanya setelah ini akan relatif sederhana.
Langkah 3: Kenali Programnya - Tile
Ubin:
Deskripsi: Kelas Tile berhubungan dengan ubin individu, dan merupakan yang terkecil dari semua kelas. Setiap ubin memiliki nilai integer dan warna. Ini memiliki dua konstruktor yang membuat Ubin nilai 0 (default) atau nilai #. Metode-metodenya sebagian besar cukup jelas, dengan metode 'pengambil' dan 'penyetel' merupakan sebagian besar dari total.
Konstruktor:
/* Membangun ubin dasar dengan nilai 0 */
Ubin publik() {…}
/* Membuat petak dengan nilai angka */
Ubin publik (nomor int) {…}
Metode:
/* Mendapatkan nilai ubin */
publik int getValue() {…}
/* Menetapkan nilai ubin - digunakan saat menambahkan dua ubin bersama */
public void setValue (nilai int) {…}
/* Mewakili ubin sebagai String - digunakan dalam GUI */
String publik toString() {…}
/* Mengatur warna ubin berdasarkan nilainya */
public void setColor() {…}
/* Mendapatkan warna ubin */
public void getColor() {…}
Langkah 4: Kenali Programnya - Game
Permainan
Deskripsi: Kelas Game menampung metode utama, sebagian besar metode GUI, dan interaksi Kunci. Dibutuhkan kelas Tile dan Board, dan memungkinkan mereka untuk bekerja bersama.
Konstruktor:
Tidak ada
Metode:
/* mengatur GUI dengan ukuran yang sesuai dan menambahkan Pendengar Kunci */
public static void setUpGUI() {…}
/* Memeriksa untuk melihat apakah tombol wasd atau panah ditekan dan melakukan tindakan yang sesuai - memperbarui JFrame dengan setiap gerakan */
public void keyPressed (KeyEvent e) {…}
/* Melukis GUI dengan serangkaian string, papan, ubin dan memastikan mereka dicat ulang saat permainan selesai */
cat kekosongan publik (Grafik g) {…}
/* menggambar ubin individu - dipanggil dari metode cat */
public void drawTiles (Grafik g, Tile tile, int x, int y) {…}
/* Metode utama - mengatur GUI dan memulai permainan */
public static void main(String args) {…}
Langkah 5: Metode Penting - Gerakan
Metode gerakan adalah yang paling penting untuk dipahami, tetapi kabar baiknya adalah setelah Anda memahami gerakan vertikal, Anda dapat menerapkan pemahaman itu pada gerakan horizontal. Sebenarnya, ketiga metode gerakan vertikal ini sama persis dengan ketiga metode gerakan horizontal, kecuali satu gerakan melintasi baris dan yang lainnya melintasi kolom. Untuk alasan itu, mari kita fokus pada metode gerakan vertikal saja.
private void verticalMove(int baris, int col, Arah string)
{ Ubin awal = papan[batas][kol]; Perbandingan ubin = papan[baris][kol]; if (initial.getValue() == 0 || initial.getValue() == compare.getValue()) { if (row > border || (direction.equals("down") && (row < border))) { int addScore = initial.getValue() + compare.getValue(); if (initial.getValue() != 0) { skor += addScore; } initial.setValue(addScore); bandingkan.setValue(0); } } else { if (direction.equals("down")) { border--; } else { batas++; } verticalMove(baris, kolom, arah); } }
Metode di atas, verticalMove, disebut dengan metode 'naik' dan 'turun'. Mari kita lihat metode 'naik'.
publik batal ()
{ for (int i = 0; i < grid; i++) { batas = 0; for (int j = 0; j < grid; j++) { if (board[j].getValue() != 0) { if (border <= j) { verticalMove(j, i, "up"); } } } } }
Metode ini melewati seluruh papan dan memanggil verticalMove untuk setiap ubin dengan parameter "naik". verticalMove kemudian membandingkan tile pada posisi 'j' dan 'i' dengan tile pada posisi 'border' dan 'i'. Jika keduanya sama, mereka digabungkan. Jika tidak, ubin batas akan bertambah 1 (karena parameter yang ada adalah 'naik'), dan verticalMove dipanggil lagi.
Direkomendasikan:
Buat Konsol Game Retro Portabel Anda Sendiri!yang Juga merupakan Tablet Win10!: 6 Langkah (dengan Gambar)
Buat Konsol Game Retro Portabel Sendiri!……yang Juga merupakan Tablet Win10!: Dalam proyek ini saya akan menunjukkan cara membuat konsol game retro portabel yang juga dapat digunakan sebagai tablet Windows 10. Ini akan terdiri dari 7" LCD HDMI dengan layar sentuh, LattePanda SBC, PCB daya USB Tipe C PD, dan beberapa
Cara Membuat Gateway WIFI Anda Sendiri untuk Menghubungkan Arduino Anda ke Jaringan IP ?: 11 Langkah (dengan Gambar)
Bagaimana Membuat Gateway WIFI Anda Sendiri untuk Menghubungkan Arduino Anda ke Jaringan IP?: Seperti yang banyak orang pikirkan, Arduino adalah solusi yang sangat baik untuk melakukan otomatisasi rumah dan robot! Tetapi dalam hal komunikasi, Arduino hanya datang dengan tautan serial. Saya sedang mengerjakan robot yang harus terhubung secara permanen dengan server yang
Tulis Game Tic Tac Toe Anda Sendiri di Java: 6 Langkah
Tulis Sendiri Game Tic Tac Toe di Jawa: Saya yakin Anda semua tahu tentang game klasik Tic Tic Toe. Sejak SD, Tic Tac Toe adalah permainan populer yang biasa saya mainkan bersama teman-teman. Saya selalu terpesona dengan kesederhanaan permainan. Di tahun pertama saya, saya
CityCoaster - Bangun Augmented Reality Coaster Anda Sendiri untuk Bisnis Anda (TfCD): 6 Langkah (dengan Gambar)
CityCoaster - Bangun Augmented Reality Coaster Anda Sendiri untuk Bisnis Anda (TfCD): Sebuah kota di bawah piala Anda! CityCoaster adalah proyek yang lahir dengan pemikiran tentang produk untuk Bandara Rotterdam Den Haag, yang dapat mengekspresikan identitas kota, menghibur klien di area lounge dengan augmented reality. Dalam lingkungan seperti
Cara Memeriksa Apakah Game Akan Berjalan di Komputer Anda Sebelum Anda Membeli Game: 4 Langkah
Cara Memeriksa Apakah Game Akan Berjalan di Komputer Anda Sebelum Anda Membeli Game tersebut.: Saya baru-baru ini memperoleh Call of Duty 4 dari seorang teman (bisa saya tambahkan secara gratis) karena tidak dapat berjalan di komputernya. Yah, komputernya cukup baru, dan saya bingung mengapa komputer itu tidak bisa dijalankan. Jadi setelah beberapa jam mencari di internet, saya menemukan