Java mengimplementasikan mini game backgammon
paket Gomoku; import java.awt.Toolkit; import javax.swing.JFrame; public class GomokuFrame extends JFrame {//Tentukan panel operasi OperatorPane op=null; " ); //Atur ukuran jendela this.setSize(510,510); //Atur posisi jendela //Dapatkan ukuran layar komputer int computer_width=Toolkit.getDefaultToolkit().getScreenSize().width; int computer_height=Toolkit.getDefaultToolkit().getScreenSize().height; ntinggi layar komputer:/n"+tinggi_komputer); //Pusatkan this.setLocation((computer_width-510)/2, (computer_height-510)/2); //Membuat instance tirai op=new OperatorPane(); //Impor tirai this.add(op); Tambahkan Mouse mendengarkan this.addMouseListener(op); //Atur tampilan jendela this.setVisible(true); //Atur penutupan normal jendela this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) } //Jalankan pengujian public static void main(String[] args) { new GomokuFrame();
paket Gomoku; impor java.awt.Color;impor java.awt.Font;impor java.awt.Graphics;impor java.awt.Image;impor java.awt.event.MouseEvent;impor java.awt.event.MouseListener; java.awt.image.BufferedImage;impor java.awt.image.BufferedImageFilter; javax.swing.ImageIcon;import javax.swing.JOptionPane;import javax.swing.JPanel; public class OperatorPane extends JPanel mengimplementasikan MouseListener,Runnable{ //Tentukan objek gambar latar belakang Image imageBackground = null; //Tentukan jumlah baris kotak kotak-kotak int boardrows=18; //menentukan jumlah kolom kotak papan catur int boardcols=18; //menetapkan ukuran kotak papan catur int boardsize=20; //Simpan koordinat bidak catur ke dalam x=0,y=0; //Simpan koordinat semua bidak catur yang dimainkan sebelumnya//Isi data 0: berarti tidak ada bidak catur di sini titik, 1: berarti titik ini adalah bidak hitam, 2: Menandakan bahwa titik ini adalah bidak putih int allchess[][]=new int [19][19];//Tandai apakah langkah selanjutnya berwarna hitam atau boolean putih isBlack=true; //Menilai apakah permainan dapat dilanjutkan boolean canPlay=true ; //Simpan informasi yang ditampilkan String message="Hitam didahulukan"; //Simpan waktu maksimum (detik) int maxTime = 0; //Kelas thread untuk hitung mundur Thread t = new Thread(ini); dengan White int blackTime = 0; int whiteTime = 0; // Menyimpan informasi tampilan sisa waktu kedua belah pihak String blackMessage = "Tidak Terbatas String whiteMessage = "Tidak Terbatas"; @SuppressWarnings("penghentian") public OperatorPane() { t.start(); t.suspend(); imageBackground=new ImageIcon("image/background.jpg").getImage(); { //Teknologi buffering ganda BufferedImage b1=baru BufferedImage(495,475,BufferedImage.TYPE_INT_ARGB); Grafik g2=b1.createGraphics(); //Gambar gambar latar belakang g2.drawImage(imageBackground, 0, 0,495,475,null); ); g2.setColor(Warna.HITAM); untuk(int i=0;i<=boardrows;i++) { g2.drawLine(10,50+boardsize*i,10+boardsize*boardrows,50+boardsize*i } for(int i=0;i<=boardcols; i++) { g2.drawLine(10+ukuran papan*i,50,10+ukuran papan*i,50+ukuran papan*ukuran papan } //Gambarkan posisi tiga-tiga g2.fillOval(67, 107, 6, 6); g2.fillOval(67, 347, 6, 6); g2.fillOval(307, 107, 6, 6); ( 307, 347, 6, 6); //Gambarkan poin tambahan g2.fillOval(67, 227, 6, 6); g2.fillOval(307, 227, 6, 6); g2.fillOval(187, 107, 6, 6); g2.fillOval(187, 347, 6, 6); fillOval(187, 227, 6, 6); //Gambar teks prompt/*Font f=baru Font("黑体", Font.BOLD, 24); g.setFont(f);*/ g2.setFont(Font baru("黑体", Font.BOLD, 20)); g2.drawString("Informasi permainan:"+pesan, 130, 40); g2.setFont(Font baru("宋体", Font.ITALIC, 15)); g2.drawString("Waktu hitam:"+blackMessage,25, 445); g2.drawString("Waktu putih:"+whiteMessage,245, 445); ;i<=boardrows;i++) { for(int j=0;j<=boardcols;j++) { //Penyimpanan catur hitam if(allchess[i][j]==1) { int tempX=i*20-10; int tempY=j*20+30; //Gambar hitam g2.setColor(Warna.HITAM); g2.fillOval(tempX+12, tempY+13, 15, 15) ; //Penyimpanan catur putih if(allchess[i][j]==2) { int tempX=i*20-10; tempY=j*20+30; //Gambarlah potongan putih g2.setColor(Color.BLACK); g2.drawOval(tempX+12, tempY+13, 15, 15); .fillOval(tempX+12, tempY+13, 15, 15); g2.setColor(c); g.drawImage(b1,0,0,this); } private boolean checkWin() { boolean flag=false; int color = allchess[x][y]; sama Berapa banyak bidak catur berwarna yang dihubungkan int count1=1; int count2=1; int count3=1; // Tentukan apakah ada 5 bidak catur yang dihubungkan dalam arah mendatar karakteristiknya sama. Artinya, nilai y di allChess[x][y] sama // Gunakan loop untuk menentukan apakah bidak catur terhubung int i = 1 while (color == allchess[x+i][y ]) { hitungan1++; i++ } / /Setel ulang nilai saya i = 1; sementara (warna == semua catur[xi][y]) { hitungan1++; //Menilai arah vertikal, yaitu nilai x pada allChess[x][y] sama int j = 1; while (color == allchess[x][y+j]) { count2++; ; } //Reset nilai j j = 1; while (color == allchess[x][yj]) { count2++; } if(count2>= 5) { flag = true; "/" masuk m1=1; int n1=1; sementara (warna == semua catur[x+m1][y+n1]) { hitungan3++; m1++; -m1][y-n1]) { count3++; m1++; n1++; } if(count3>= 5) { flag = true; int m2=1; int n2=1; sementara (warna == semua catur[x+m2][y-n2]) { hitungan4++; m2++; x-m2][y+n2]) { hitungan4++; m2++; //Jumlah penilaian horizontal=ini.checkCount(1, 0, warna); if(hitungan>=5) { flag = true; } else { //Jumlah penilaian vertikal=ini.checkCount(0, 1, warna jika (hitung>=5) { bendera = benar } else { //Miring "/" hitung=ini.checkCount(1, 1, warna); miring "/" count=ini.checkCount(1, -1, warna); if(count>=5) { bendera = benar; } } } } bendera kembali; } int pribadi checkCount(int xChange,int yChange,int warna) { int hitungan =1; int tempX=xUbah; int tempY=yUbah; sementara (warna==semua catur[x+xUbah][y+yUbah]) { hitungan++; if(xChange!=0) { xChange++; } if(yChange!=0) { if(yChange<0) { yChange--; } else { yChange++; (warna==semua catur[x-xUbah][y-yUbah]) { hitungan++; jika(xUbah!=0) { xUbah++; } if(yChange!=0) { if(yChange<0) { yChange--; } else { yChange++; } } } jumlah pengembalian; } public void mouseClicked(MouseEvent e) { System.out.println("x:" +e.getX()+"y:"+e.getY()); x=e.getX(); if(x>=10&&x<=(10+boardsize*boardrows+20)&&y>=50&&y<=(50+boardsize*boardcols+40)) { //System.out.println("Intinya ada di papan. "); ==0) { if(isBlack==true) { allchess[x][y]=1; isBlack=false; message="Giliran putih"; } else { allchess[x][y]=2; isBlack =benar; message="Giliran Hitam"; } // Tentukan apakah bidak catur ini terhubung dengan bidak catur lainnya dalam 5 koneksi, yaitu apakah permainan telah selesai benar) { JOptionPane.showMessageDialog (ini,"Permainan berakhir!"+ (semua catur[x][y]==1?"Hitam":"Putih")+"Menang."); JOptionPane.showMessageDialog(ini, "Sudah ada bidak catur di posisi saat ini, silakan letakkan kembali!"); } } this.repaint() } //Klik, tombol mulai permainan //Mulai ulang permainan baru jika( e.getX() >=400&&e.getX()<=470&&e.getY()>=80&&e.getY()<=110) { int result=JOptionPane.showConfirmDialog(ini, "Pengaturan selesai, apakah Anda ingin memulai ulang permainan?"); if(result==0) { //Mulai ulang operasi, semua informasi dalam array allchess[][] adalah 0 // Kosongkan papan catur untuk (int i = 0; i < 19; i++) { for (int j = 0; j < 19; j++) { semua catur[i][j] = 0; //Cara lain allChess = new int[19][19]; blackTime = maxTime; whiteTime = maxTime; if (maxTime > 0) { blackMessage = maxTime / 3600 + ":" + (maxTime / 60 - maxTime / 3600 * 60) + ":" + (maxTime - maxTime / 60 * 60); (maxTime / 60 - maxTime / 3600 * 60) + ":" + (maxTime - maxTime / 60 * 60); t.resume(); else { blackMessage = "Tidak terbatas"; whiteMessage = "Tidak terbatas"; "Hitam didahulukan"; isBlack = true; this.canPlay = true; //Klik tombol pengaturan game if(e.getX()>=400&&e.getX()<=470&&e.getY()>=130&&e.getY()<=160) { String input = JOptionPane .showInputDialog("Silahkan masukkan permainan Waktu maksimum (satuan: menit), jika dimasukkan 0 berarti tidak ada batasan waktu: "); coba { maxTime = Integer.parseInt(input) * 60; if (maxTime < 0) { JOptionPane.showMessageDialog(ini, "Silakan masukkan informasi yang benar, angka negatif tidak diperbolehkan!" } if (maxTime == 0) { int result = JOptionPane.showConfirmDialog(ini, "Pengaturan selesai ,Mulai ulang permainan?"); if (hasil == 0) { for (int i = 0; i < 19; i++) { for (int j = 0; j < 19; j++) { allchess[i][j] = 0; } } // Cara lain allChess = new int[19][19]; blackTime = maxTime; whiteTime = maxTime; blackMessage = "Tanpa batas"; whiteMessage = "Tanpa batas"; this.canPlay = true; ini.repaint(); 0) { int result = JOptionPane.showConfirmDialog(ini, "Pengaturan selesai, apakah Anda ingin memulai ulang permainan?"); if (hasil == 0) { for (int i = 0; i < 19; i++) { for (int j = 0; j < 19; j++) { allchess[i][j] = 0; } } // Cara lain allChess = baru int[19][19]; pesan = "Hitam didahulukan"; isBlack = true; blackTime = maxTime; whiteTime = maxTime = maxTime / 3600 + ":" + (maxTime / 60 - maxTime / 3600 * 60 ) + ":" + (maxTime - maxTime / 60 * 60); whiteMessage = maxTime / 3600 + ":" + (maxTime / 60 - maxTime / 3600 * 60) + ":" + (maxTime - maxTime / 60 * 60); t.resume(); this.canPlay = true this.repaint(); / TODO Blok tangkapan yang dibuat secara otomatis JOptionPane.showMessageDialog(ini, "Silakan masukkan informasi dengan benar!"); //Klik tombol deskripsi game if(e.getX()>=400&&e.getX()<=470&&e.getY()>=180&&e.getY()<=210) { JOptionPane.showMessageDialog(this, "Ini adalah Program permainan backgammon, pihak hitam dan putih bergiliran bermain catur. Ketika salah satu pihak mencapai lima buah berturut-turut, permainan berakhir. "); } //Klik tombol akui kekalahan if(e.getX()>=400&&e.getX()<=470&&e.getY()>=280&&e.getY()<=310) { int result=JOptionPane.showConfirmDialog (ini ,"Apakah Anda yakin ingin mengaku kalah?"); if (hasil == 0) { if (isBlack) { JOptionPane.showMessageDialog(ini, "Hitam menyerah, permainan selesai!" } else { JOptionPane.showMessageDialog(ini, "Putih menyerah, permainan selesai!" } canPlay = false; //Klik tombol Tentang if(e.getX()>=400&&e.getX()<=470&&e.getY()>=330&&e.getY()<=360) { JOptionPane.showMessageDialog(this,"Game ini disediakan oleh Nanmu Diproduksi oleh studio, jika Anda memiliki pertanyaan terkait, silakan kunjungi www.yiyiinformation.com"); } //Klik tombol keluar if(e.getX()>=400&&e.getX()<=470&&e.getY()>=380&&e.getY()<=410) { JOptionPane.showMessageDialog(ini, "Game Over") ; Sistem.keluar(0); } } //************************// @Override public void mouseEntered(MouseEvent arg0) {// TODO Stub metode yang dibuat secara otomatis } @Override public void mouseExited(MouseEvent arg0) { // TODO Stub metode yang dibuat secara otomatis } @Override public void mousePressed(MouseEvent arg0) { // TODO Stub metode yang dibuat secara otomatis } @Override public void mouseReleased (MouseEvent arg0) { // TODO Stub metode yang dibuat secara otomatis } @Override public void run() { if (maxTime > 0) { while (true) { if (isBlack) { blackTime--; if (blackTime == 0) { JOptionPane.showMessageDialog(ini, "Hitam telah habis waktunya, permainan selesai! "); } } else { whiteTime--; if (whiteTime == 0) { JOptionPane.showMessageDialog(ini, "Waktu putih telah habis, permainan selesai!"); } } blackMessage = blackTime / 3600 + ":" + (blackTime / 60 - blackTime / 3600 * 60) + ":" + (blackTime - blackTime / 60 * 60 - whiteTime = whiteTime / 3600 + ":" + (whiteTime / 60 - whiteTime); / 3600 * 60) + ":" + (waktu putih - waktu putih / 60 * 60); this.repaint(); coba { Thread.sleep(1000); catch (InterruptedException e) { // TODO Blok tangkapan yang dibuat secara otomatis e.printStackTrace(); waktu putih);
Gambar demo:
Di atas adalah keseluruhan isi artikel ini, semoga bermanfaat bagi semua orang untuk menguasai Java dengan mahir.