Belajar Menciptakan Game Tic Tac Toe Mudah Dengan Java
Membuat game Tic Tac Toe dengan Java sanggup dilakukan dengan metode pemrograman berorientasi objek. Terkadang berguru Java bagi pemula sanggup menjadi hal yang sulit, terutama dalam penerapan algoritmanya. Oleh alasannya yakni itu dengan memahaminya melalui pembuatan game sederhana tanpa GUI ini, diperlukan sanggup menambah pemahaman anda mengenai Java programming.
Aturan dari permainan ini adalah:
Bila anda perhatikan, array dua dimensi ukuran 3 x 3 sanggup merepresentasikan data pada papan Tic tac toe tersebut, menyerupai gambar di bawah ini:
Permainan ini dimainkan oleh 2 pemain, masing-masing menentukan abjad x atau o. Karakter yang dimainkan itu disimpan dalam array dua dimensi.
Pada line 14-18, status game yaitu game ketika ada pemenang, draw ataupun sedang berjalan dikelompokkan dalam enum. Dalam agenda java, enum yakni list dari constant-constant.
Pada line 22 - 48 yakni konstruktor dari objek class MyTicTacToe. Konstruktor ini akan memastikan bahwa ketika objek itu dibuat, maka objek array dua dimensi yang terdiri dari 3 kolom dan 3 baris juga dibentuk (line 24). Kemudian pemain akan diminta menentukan abjad yang akan dimainkan (line 28 - 44) memakai do while loop.
Konstruktor ini juga akan menginisialisasi papan game (line 45). Inisialisasi ini sanggup diartikan dengan mengosongkan papan game, dalam hal ini area pada papan yang kosong diberi abjad '?'. Kemudian sesudah diinisilisasi papan akan ditampilkan (line 46).
Method untuk menginisialisasi papan yakni inisialisasiPapan() pada line 51 - 71.
Pada line 76 - 84 ada method cekPilihKarakter() dengan tipe boolean yang akan mengembalikan nilai true atau false. Method ini akan memastikan pemain hanya menentukan abjad dengan benar.
Untuk menampilkan papan Tic Tac Toe memakai method tampilkanPapan() pada line 88 - 98. Hal yang penting dalam method ini yakni harus sanggup mengaitkan array papanGame ketika papan ditampilkan, (perhatikan line 93).
Pergantian pemain dalam hal ini contohnya ketika pemain x telah menandai papan maka ia akan di ganti oleh pemain o, diatur oleh method gantiPemain pada line 102 - 109.
Lantas bagaimana jikalau kita mengetahui jikalau telah ada pemenang dalam permainan ini? Pada aba-aba agenda diatas pada line 113 - 155 terdapat method - method yang saling berkaitan, dan semuanya disimpulkan dalam method cekPemenang().
Game Tic Tac Toe juga sanggup berada dalam kondisi draw, artinya ketika semua area pada papan sudah terisi oleh karakter-karakter x dan o, dan tidak ada pemenang. Untuk mengecek draw ini memakai method cek draw (), (line 163 - 173).
Pada line 177 - 192 terdapat method statusSekarang() dan method tampilkanStatus(). Method statusSekarang() akan mengusut apakah sudah ada pemenang, draw atau permainan masih berjalan. Dan method ini akan mengembalikan constant dalam enum sesuai dengan status tersebut.
Ketika salah satu status tercapai dalam hal ini ada pemenang ataupun permainan berakhir draw, maka method tampilkanStatus() akan menampilkan pesan sesuai dengan kondisi tersebut.
Pada line 197 - 233 terdapat method inputKarakter() dan tandaiPapan(). Method inputKarakter() akan memvalidasi apakah user sudah menentukan baris dan kolom yang sesuai dan tidak menempatkannya pada area yang sudah terisi oleh abjad x atau o lainnya. Method ini akan memanggil method tandaiPapan() untuk menandai papan dengan karakter.
Pada line 236 - 241 terdapat method start(). Method ini akan terus memanggil method inputKarakter selama status game masih berjalan. Kemudian akan menampilkan pesan jikalau ada pemenang ataupun permainan berakhir draw.
Untuk mendemonstrasikannya, dengan class TestGame menyerupai di bawah ini:
Semoga berguru menciptakan game Tic Tac Toe mudah ini sanggup membantu anda dalam memhami pemrograman Java. Please feel free to comment, thanks.
Aturan dari permainan ini adalah:
- Terdiri dari dua player di mana masing-masing player memakai abjad x atau o.
- Papan Tic tac toe terdiri dari 9 kotak kosong dikala game dimulai
- Pemenangnya yakni player yang lebih dulu sanggup menempatkan abjad yang dipakai dalam posisi kotak vertikal, horizontal maupun diagonal.
- Jika tidak ada pemenang dan papan sudah terisi penuh maka permainan berakhir draw.
Bila anda perhatikan, array dua dimensi ukuran 3 x 3 sanggup merepresentasikan data pada papan Tic tac toe tersebut, menyerupai gambar di bawah ini:
Mulai Membuat Game Tic Tac Toe
Program game Tic Tac Toe yang dibentuk dengan agenda Java ini terdiri dari 2 class, yaitu class MyTicTacToe dan class TestGame untuk mendemonstrasikan.Permainan ini dimainkan oleh 2 pemain, masing-masing menentukan abjad x atau o. Karakter yang dimainkan itu disimpan dalam array dua dimensi.
Pada line 14-18, status game yaitu game ketika ada pemenang, draw ataupun sedang berjalan dikelompokkan dalam enum. Dalam agenda java, enum yakni list dari constant-constant.
Pada line 22 - 48 yakni konstruktor dari objek class MyTicTacToe. Konstruktor ini akan memastikan bahwa ketika objek itu dibuat, maka objek array dua dimensi yang terdiri dari 3 kolom dan 3 baris juga dibentuk (line 24). Kemudian pemain akan diminta menentukan abjad yang akan dimainkan (line 28 - 44) memakai do while loop.
Konstruktor ini juga akan menginisialisasi papan game (line 45). Inisialisasi ini sanggup diartikan dengan mengosongkan papan game, dalam hal ini area pada papan yang kosong diberi abjad '?'. Kemudian sesudah diinisilisasi papan akan ditampilkan (line 46).
Method untuk menginisialisasi papan yakni inisialisasiPapan() pada line 51 - 71.
Pada line 76 - 84 ada method cekPilihKarakter() dengan tipe boolean yang akan mengembalikan nilai true atau false. Method ini akan memastikan pemain hanya menentukan abjad dengan benar.
Untuk menampilkan papan Tic Tac Toe memakai method tampilkanPapan() pada line 88 - 98. Hal yang penting dalam method ini yakni harus sanggup mengaitkan array papanGame ketika papan ditampilkan, (perhatikan line 93).
Pergantian pemain dalam hal ini contohnya ketika pemain x telah menandai papan maka ia akan di ganti oleh pemain o, diatur oleh method gantiPemain pada line 102 - 109.
package com.bahasaJava.ticTacToe; import java.util.Scanner; public class MyTicTacToe { private char papanGame [][]; private final int JUMLAH_BARIS = 3; private final int JUMLAH_KOLOM = 3; private char giliranPemain; private enum statusGame{ WINNER, DRAW, PROCESS } private static Scanner input = new Scanner (System.in); public MyTicTacToe(){ papanGame = new char [JUMLAH_BARIS] [JUMLAH_KOLOM]; System.out.println("Welcome To Tic Tac Toe Game"); System.out.println("***************************"); do{ System.out.print("Silakan masukkan 1 untuk menentukan abjad x\n" + "atau 2 untuk menentukan abjad o\n" + "kemudian tekan Enter: "); int pilihKarakter = input.nextInt(); if(pilihKarakter == 1){ giliranPemain = 'x'; System.out.println("Papan telah diinisilisasi\n" + "**************************"); }else if(pilihKarakter == 2){ giliranPemain = 'o'; System.out.println("Papan telah diinisilisasi\n" + "**************************"); }else{System.out.println("Pilihan anda tidak valid!\n" + "*************************"); } } while (cekPilihKarakter(giliranPemain) == false); inisialisasiPapan(); tampilkanPapan(); } //**********************************INISIALISASI************************* //Method untuk inisialisasi private void inisialisasiPapan(){ for (int i = 0; i < JUMLAH_BARIS; i ++){ for (int j = 0; j < JUMLAH_KOLOM; j++){ papanGame [i][j] = '?'; } } char playerSatu; char playerDua; if(giliranPemain == 'x'){ playerSatu = 'x'; playerDua = 'o'; System.out.println("PLAYER SATU: " + playerSatu); System.out.println("PLAYER DUA: " + playerDua); }else if(giliranPemain == 'o'){ playerSatu = 'o'; playerDua = 'x'; System.out.println("PLAYER SATU: " + playerSatu); System.out.println("PLAYER DUA: " + playerDua); } }//Akhir method inisilaisasiPapan() //*************************CEK PILIH KARAKTER*****************************// //Method untuk mengecek pemain menentukan abjad //untuk dimainkan dengan valid private boolean cekPilihKarakter (char giliranPemain){ boolean pilihKarakter = false; if(giliranPemain == 'x' || giliranPemain =='o'){ pilihKarakter = true; }else{ pilihKarakter = false; } return pilihKarakter; }//Akhir method cekPilihKarakter //************************************TAMPILKAN PAPAN***********************// //Method untuk menampilkan papan tic tac toe private void tampilkanPapan(){ System.out.println("============="); for (int i = 0; i < JUMLAH_BARIS; i ++){ System.out.print("| "); for (int j = 0; j < JUMLAH_KOLOM; j++){ System.out.print(papanGame[i][j] + " | "); } System.out.println(); System.out.println("============="); } }//Akhir method tampilkan papan //*************************GANTI PEMAIN*************************************// //Method untuk mengecek giliran pemain private void gantiPemain(){ if(giliranPemain == 'x'){ giliranPemain = 'o'; }else{ giliranPemain = 'x'; } }//Akhir method gantiPemain //**************************CEK PEMENANG*************************************// //Method untuk mengecek jikalau ada pemenang private boolean cekPemenang(){ return(cekBarisPemenang() || cekKolomPemenang() || cekDiagonalPemenang()); }//Akhir method cekPemenang //Method untuk mengecek baris pemenang private boolean cekBarisPemenang(){ for(int i = 0; i < JUMLAH_BARIS; i++){ if(cekBarisKolom(papanGame[i][0], papanGame[i][1], papanGame[i][2]) == true){ return true; } } return false; }//Akhir method cekBarisPemenang //Method untuk mengecek kolom pemenang private boolean cekKolomPemenang(){ for(int i = 0; i < JUMLAH_KOLOM; i++){ if(cekBarisKolom(papanGame[0][i], papanGame[1][i], papanGame[2][i]) == true){ return true; } } return false; }//Akhir method cekKolomPemenang //Method untuk mengecek diagonal pemenang private boolean cekDiagonalPemenang(){ return((cekBarisKolom(papanGame[0][0], papanGame[1][1], papanGame[2][2]) == true) || (cekBarisKolom(papanGame[0][2], papanGame[1][1], papanGame[2][0]) == true) ); }//Akhir method cekDiagonalPemenang //Method untuk mengecek tiga nilai yakni sama //dan tidak kosong pada baris atau kolom private boolean cekBarisKolom(char a1, char a2, char a3){ return ((a1 != '?') && (a1 == a2) && (a2 == a3)); }//Akhir method cekBarisKolom //************************AKHIR CEK PEMENANG***********************************// //******************************CEK DRAW***************************************// //Method untuk mengecek kondisi papan game //sudah penuh atau belum private boolean cekDraw(){ boolean draw = true; for(int i = 0; i < JUMLAH_BARIS; i++){ for (int j = 0; j < JUMLAH_KOLOM; j++){ if(papanGame[i][j] == '?'){ draw = false; } } } return draw; }//Akhir method cekPapanPenuh //******************************AKHIR CEK DRAW**********************************// //************************CEk STATUS GAME************************************// private statusGame statusSekarang(){ if(cekPemenang() == true) return statusGame.WINNER; else if(cekDraw() == true) return statusGame.DRAW; else return statusGame.PROCESS; } private void tampilkanStatus(){ statusGame status = statusSekarang(); if (status == statusGame.WINNER) System.out.println("PEMAIN " + giliranPemain +" MENANG!!"); else if (status == statusGame.DRAW) System.out.println("PERMAINAN BERAKHIR DRAW!!"); } //******************************AKHIR CEK STATUS GAME*****************************// //***********************************INPUT KARAKTER******************************// //Method untuk menginput abjad private void inputKarakter(){ cekPemenang(); cekDraw(); statusSekarang(); System.out.print("Pemain " + giliranPemain + " silakan pilih baris (0-2): "); int row = input.nextInt(); System.out.print("Pemain " + giliranPemain + " silakan pilih kolom (0-2): "); int col = input.nextInt(); if ((row < 0) || (row > 2)) System.out.println("Baris tidak valid, coba lagi"); else if ((col < 0) || (col > 2)) System.out.println("Kolom tidak valid, coba lagi!"); else if (papanGame[row][col] != '?') System.out.println("Area ini sudah terisi, coba lagi!"); else { tandaiPapan(row, col, giliranPemain); tampilkanPapan(); if(statusSekarang() == statusGame.PROCESS){ gantiPemain(); } } }//Akhir method input abjad //***********************************MENANDAI PAPAN********************************// // Pemain menandai papan private void tandaiPapan(int baris, int kolom, char c) { papanGame[baris][kolom] = c; }//Akhir method tandaiPapan //************************************START GAME***********************************// public void start(){ do{ inputKarakter(); }while(statusSekarang() == statusGame.PROCESS); tampilkanStatus(); }//Akhir method start() }
Lantas bagaimana jikalau kita mengetahui jikalau telah ada pemenang dalam permainan ini? Pada aba-aba agenda diatas pada line 113 - 155 terdapat method - method yang saling berkaitan, dan semuanya disimpulkan dalam method cekPemenang().
Game Tic Tac Toe juga sanggup berada dalam kondisi draw, artinya ketika semua area pada papan sudah terisi oleh karakter-karakter x dan o, dan tidak ada pemenang. Untuk mengecek draw ini memakai method cek draw (), (line 163 - 173).
Pada line 177 - 192 terdapat method statusSekarang() dan method tampilkanStatus(). Method statusSekarang() akan mengusut apakah sudah ada pemenang, draw atau permainan masih berjalan. Dan method ini akan mengembalikan constant dalam enum sesuai dengan status tersebut.
Ketika salah satu status tercapai dalam hal ini ada pemenang ataupun permainan berakhir draw, maka method tampilkanStatus() akan menampilkan pesan sesuai dengan kondisi tersebut.
Pada line 197 - 233 terdapat method inputKarakter() dan tandaiPapan(). Method inputKarakter() akan memvalidasi apakah user sudah menentukan baris dan kolom yang sesuai dan tidak menempatkannya pada area yang sudah terisi oleh abjad x atau o lainnya. Method ini akan memanggil method tandaiPapan() untuk menandai papan dengan karakter.
Pada line 236 - 241 terdapat method start(). Method ini akan terus memanggil method inputKarakter selama status game masih berjalan. Kemudian akan menampilkan pesan jikalau ada pemenang ataupun permainan berakhir draw.
Untuk mendemonstrasikannya, dengan class TestGame menyerupai di bawah ini:
package com.bahasaJava.ticTacToe; public class TestGame { public static void main(String[] args) { MyTicTacToe ticTacToe = new MyTicTacToe(); ticTacToe.start(); } }Contoh output:
Contoh ouput game Tic tac Toe mudah dengan pemrograman Java |
Belum ada Komentar untuk "Belajar Menciptakan Game Tic Tac Toe Mudah Dengan Java"
Posting Komentar