Game kecil ini adalah desain kursus Java dari saya dan saya, dan ini juga merupakan proyek Java pertama yang telah saya lakukan. Itu cocok untuk pemula. Saya berharap ini dapat membantu anak -anak yang bermasalah dengan desain kursus Java ~~~
1. Gim perlu diterapkan
1. Desain bingkai dan antarmuka utama.
2. Gunakan antarmuka ActionListener untuk mewujudkan pemantauan peristiwa tombol.
3. Mulai ulang implementasi fungsi.
4. Implementasi fungsi catur.
5. Implementasi fungsi keluar.
6. Definisi titik -titik potongan catur di papan catur.
7. Gunakan antarmuka MouseListener untuk mengimplementasikan pemantauan acara dan mengimplementasikan semua metode dalam antarmuka.
8. Ketika mouse bergerak ke titik persimpangan di papan dan tidak ada potongan catur di titik, itu bisa menjadi bentuk tangan kecil.
9. Saat mengklik papan catur, gunakan pernyataan IF untuk menentukan apakah titik tersebut ada di persimpangan, dan gunakan pernyataan foreach dan getx () dan gety () di kelas catur untuk melintasi posisi setiap bagian catur untuk menentukan apakah titik tersebut memiliki potongan catur.
10. Ketika ditentukan bahwa Anda dapat meletakkan sub pada titik yang diklik, saat menggambar sepotong, gunakan loop untuk melintasi setiap titik yang ada dan menggunakan setColor dari kelas grafik untuk mengatur warna, dan menggunakan metode pengisian kelas grafis untuk mengatur ukuran bentuk.
11. Saat menggambar catur, Anda harus menilai pemenang dan kalah dalam waktu. Gunakan indeks dan untuk loop untuk melintasi arah potongan catur terakhir. Jika ada potongan catur pada garis lurus yang sama dengan sejumlah potongan catur lebih dari atau sama dengan lima, itu yang diwakili oleh potongan catur saat ini.
12. Ketika pemenang diputuskan, informasi yang sesuai dapat muncul.
2. Implementasi Kode Fungsional
2.1 Masukkan Game
public static void main (string [] args) {startchessjframe f = startchessjframe baru (); // Buat bingkai utama f.setVisible (true); // Tampilkan bingkai utama}2.2 Inisialisasi, tentukan beberapa kuantitas yang akan digunakan.
Papan Catur Catur Pribadi; // Fight Panel Private Panel Toolbar; // Toolbar Panel Tombol Pribadi StartButton; // Setel tombol start Private Batton Backbutton; // Atur tombol REGRET Tombol Pribadi ExitButton; // Atur Tombol Keluar dari
2.3 Metode Konstruksi Antarmuka (Kerangka Kerja Game)
public StartChessJFrame(){ setTitle("Standalone Goji");//Set the title chessBoard=new ChessBoard();//Initialize the panel object, create and add menu MyItemListener lis=new MyItemListener();//Initialize the button event listener internal class toolbar=new Panel();//Instance the toolbar bar startButton=new Button("Restart"); backbutton = tombol baru ("balasan"); ExitButton = tombol baru ("Keluar"); // inisialisasi toolbar.setLayout (flowlayout baru (flowlayout.left)); // Gunakan flowlayout ke tata letak toolbar.add (backbutton); toolbar.add (startButton); toolbar.add (exitbutton); // tambahkan tiga tombol ke panel alat startButton.addactionListener (LIS); backbutton.addactionListener (LIS); ExitButton.AddactionListener (LIS); // Daftarkan acara tiga tombol untuk mendengarkan acara ADD (toolbar, borderlayout.south); // tata letak panel alat ke selatan antarmuka, yaitu, add (catur); // tambahkan objek panel ke setdefault formule setDefaultOperasi (jframe.exiREKOUT.EXIT (jframe.exit) (Jframe.exit), JFRame.EXIT (JFRAME.EXIT (JFRAME.EXIT (JFRAME.EXIT (JFRAME.EXIT (JFRAME.EXIT (Jframe.EXIT (Jframe.EXIT (Jframe.EXIT (Jframe.EXIT (Jframe.EXIT (Jframe.EXIT (Jframe.EXIT (Jframe.EXIT (Jframe.EXIT (Jframe.exit) Ukuran}2.4 Implementasi dan Pemantauan Tombol (Metode Konstruksi Internal)
MyItemListener lis = myItemListener baru (); // inisialisasi kelas internal dari Tombol Acara Tombol Pendengar = Panel Baru (); // Instantiate Panel Alat StartButton = Tombol Baru ("Restart"); backbutton = tombol baru ("balasan"); ExitButton = tombol baru ("EXIT"); // Inisialisasi toolbar.setLayout (flowlayout baru (flowlayout.left)); // tata letak toolbar.add (backbutton); toolbar.add (startButton); toolbar.add (exitbutton); // tambahkan tiga tombol ke panel alat startButton.addactionListener (LIS); backbutton.addactionListener (LIS); ExitButton.AddactionListener (LIS); // Daftarkan acara tiga tombol untuk mendengarkan acara2.5 Mendengarkan acara tombol
Kelas Pribadi MyItemListener mengimplementasikan ActionListener {public void actionPerformed (ActionEvent e) {objek obj = e.getSource (); // Dapatkan sumber acara jika (obj == startbutton) {System.out.println ("start ..."); // restart // jfiveFrame.this inner class inners inners inners innerss. } else if (obj == exitbutton) {System.exit (0); // Akhiri aplikasi} lain jika (obj == backbutton) {System.out.println ("Catur Terjawab ..."); // CHESSBOARD.GOBACK (); }}}2.6 RESTART Tombol Fungsi Implementasi
public void restartgame () {// Clear Chess Pieces untuk (int i = 0; i <chesslist.length; i ++) ChessList [i] = null; /*Kembalikan nilai variabel terkait game*/ isBack = true; GameOver = false; // Apakah game berakhir cyscount = 0; // Jumlah potongan catur pada papan saat ini adalah ulang (); }2.7 Implementasi fungsi tombol catur
public void goback () {if (chesscount == 0) return; ChessList [ChessCount-1] = null; Chesscount--; if (chesscount> 0) {xIndex = ChessList [ChessCount-1] .getX (); yindex = ChessList [cyscount-1] .gety (); } isBack =! Isback; ulang (); }2.8 Ketika papan catur menjadi lebih besar atau lebih kecil sesuai kebutuhan, jendela harus berubah sesuai.
// Dimensi: Di dalam kelas catur persegi panjang dimensi publik getPreferredSize () {return New Dimension (margin*2+grid_span*cols, margin*2+grid_span*baris); } pack (); // Ukuran adaptif di dalam kelas Startchessboard2.9 Menentukan potongan catur
impor java.awt.*; Titik kelas publik {private int x; // x Nilai indeks potongan catur di papan catur private int y; // y Nilai indeks potongan catur di papan catur warna warna pribadi; // warna public static int diameter = 30; // Diameter poin publik (int x, int y, warna warna) {this.x = x; this.y = y; this.color = warna; } // Dapatkan X Nilai Indeks Catur di papan catur int getx () {return x; } // Dapatkan nilai indeks dari potongan catur di papan catur int gety () {return y; } // Dapatkan warna catur warna public color getColor () {return color; }} 3. Implementasi Kode Bagian Fungsional
3.1 Inisialisasi, tentukan beberapa kuantitas yang akan digunakan.
margin int statis publik = 30; // pernikahan statis publik int grid_span = 35; // spacing grid public static int baris = 18; // Jumlah baris catur statis public static cols = 18; // Jumlah kolom catur (] poin CHESSLIST = NEW POINT [(baris+1)*(cols+1); ke Black Chess First GameOver = false; // Apakah game akhir int caturcount; // Jumlah potongan catur pada papan catur saat ini int xindex, yindex; // indeks catur yang baru saja dimainkan
3.2 Membangun metode objek papan catur
PBB Publik () {Setbackground (color.light_gray); // Setel warna latar belakang ke abu -abu addMouseListener (this); // tambahkan pendengar acara addMouseMotionListener (mousemotionlistener baru () {// anonim kelas internal @override void mousemoved (mouseevent e) {mouseVent e) {internride void public mousemoved (mouseEevent E) {internride void public void mousemoved (mouseevent e) {mouseNeVent E) x1 = (e.getx ()-margin+grid_span/2)/grid_span; if (x1 <0 || x1> baris || y1 <0 || y1> cols || gameover || findchess (x1, y1)) {// gim telah berakhir dan tidak dapat dijatuhkan; bentuk} else {setCursor (kursor baru (kursor.hand_cursor)); // set ke bentuk tangan}} @Override public void mouseDragged (mouseEvent e) {}}); }3.3 Atur pendengar mouse dan buat tangan lebih kecil (di dalam metode konstruksi)
addMouseMotionListener (mousemotionlistener baru () {// kelas internal anonim @override public void mousemoved (mouseEvent e) {int x1 = (e.getx ()-margin+grid_span/2)/grid_span; int y1 = (e.gety ()-margin+grid_span/grid_span; Klik mouse ke dalam indeks grid jika (x1 <0 || x1> baris || y1 <0 || y1> cols || gameover || findchess (x1, y1)) {// gim ini telah berakhir dan tidak dapat dijatuhkan; Kursor (cursor.default_cursor)); // atur ke bentuk default} else {setCursor (kursor baru (kursor.hand_cursor)); // diatur ke bentuk tangan}} @Override public void mousedragged (MouseEvent e) {}});3.4 Acara Penekan Mouse Saat mengklik papan catur
public void mousepressed (MouseEvent E) {// if (Gameover) dipanggil ketika tombol mouse ditekan pada komponen // game telah berakhir dan tidak dapat dikembalikan; String colorname = isBack? "Hitam": "catur putih"; xindex = (e.getx ()-margin+grid_span/2)/grid_span; yindex = (e.gety ()-margin+grid_span/2)/grid_span; // konversi posisi koordinat mouse klik menjadi indeks grid if (xindex <0 || xindex> baris || yindex <0 || yindex> cols) // potongan catur berada di luar papan dan tidak bisa dikembalikan; if (findchess (xindex, yindex)) // potongan catur sudah ada pada posisi x, y, jadi Anda tidak dapat dikembalikan; Titik ch = titik baru (xindex, yindex, isback? Color.black: color.white); ChessList [ChessCount ++] = ch; repaint (); // beri tahu sistem untuk mengecat ulang jika (iswin ()) {string msg = string.format ("ucapan selamat, %s win ~", colorname); JOPTIONPANE.SHOWMESSADEIALOG (ini, MSG); Gameover = true; } lain if (chesscount == (cols+1)*(baris+1)) {string msg = string.format ("drum catur cukup bagus, hebat ~"); JOPTIONPANE.SHOWMESSADEIALOG (ini, MSG); Gameover = true; } isBack =! Isback; }3.5 Gambarlah papan catur, potongan catur dan bingkai merah
public void paintComponent (grafik g) {super.paintComponent (g); // menggambar papan catur untuk (int i = 0; i <= baris; i ++) {// garis horizontal g.drawline (margin, margin+i*grid_span, margin+cols*grid_span, margin+i*grid_span); } untuk (int i = 0; i <= cols; i ++) {// Gambar garis lurus g.drawline (margin+i*grid_span, margin, margin+i*grid_span, margin+baris*grid_span); }/*Gambar potongan catur*/untuk (int i = 0; i <cHesscount; i ++) {int xpos = cyslist [i] .getX ()*grid_span+margin; // koordinat x grid crossing int ypos = crosslist [i] .gety ()*grid_span+margin/margin/crosslist [i] .gety ()*grid_span+margin; g.setColor (ChessList [i] .getColor ()); // Atur warna G.Filloval (xpos-point.Diameter/2, ypos-point.diameter/2, point.diameter, point.diameter); if (i == CHESSCOUNT-1) {g.setColor (color.red); // Tandai karya terakhir sebagai G.Drawrect merah (xpos-point.diameter/2, ypos-point.Diameter/2, point.Diameter, point.diameter); }}3.6 Hakim menang atau kalah
/*Menilai sisi mana yang menang*/private boolean iswin () {int continuecount = 1; // Jumlah potongan catur kontinu untuk (int x = xindex-1; x> = 0; x-) {// Cari warna c = isback? Color.black: color.hite; if (getchess (x, yindex, c)! = null) {continueCount ++; } lain break; } untuk (int x = xindex+1; x <= baris; x ++) {// cari warna c = isBack? Color.black: color.hite; if (getchess (x, yindex, c)! = null) {continueCount ++; } lain break; } if (continueCount> = 5) {// menilai jumlah catatan lebih besar dari atau sama dengan lima, yang berarti bahwa sisi ini menang mengembalikan true; } else continuecount = 1; // untuk (int y = yindex-1; y> = 0; y-) {// lihat secara vertikal ke warna c = isBack? Color.black: color.hite; if (getchess (xindex, y, c)! = null) {continueCount ++; } lain break; } untuk (int y = yindex+1; y <= baris; y ++) {// lihat ke bawah dalam arah arah vertikal C = isBack? Color.black: color.hite; if (getchess (xindex, y, c)! = null) {continueCount ++; } lain break; } if (continueCount> = 5) {// menilai jumlah catatan lebih besar dari atau sama dengan lima, yang berarti bahwa sisi ini menang mengembalikan true; } else continuecount = 1; // untuk (int x = xIndex+1, y = yindex-1; y> = 0 && x <= cols; x ++, y-) {// lihat ke bawah pada warna kanan bawah c = isback? Color.black: color.hite; if (getchess (x, y, c)! = null) {ContinueCount ++; } lain break; } untuk (int x = xindex-1, y = yindex+1; y <= baris && x> = 0; x-, y ++) {// cari warna c = isBack? Color.black: color.hite; if (getchess (x, y, c)! = null) {ContinueCount ++; } lain break; } if (continueCount> = 5) {// menilai jumlah catatan lebih besar dari atau sama dengan lima, yang berarti bahwa sisi ini menang. Kembali Benar; } else continuecount = 1; // untuk (int x = xindex-1, y = yindex-1; y> = 0 && x> = 0; x-, y-) {// Cari warna c = isBack? Color.black: color.hite; if (getchess (x, y, c)! = null) {ContinueCount ++; } lain break; } untuk (int x = xindex+1, y = yindex+1; y <= baris && x <= cols; x ++, y ++) {// cari warna c = isback? Color.black: color.hite; if (getchess (x, y, c)! = null) {ContinueCount ++; } lain break; } if (continueCount> = 5) {// menilai jumlah catatan lebih besar dari atau sama dengan lima, yang berarti bahwa sisi ini menang mengembalikan true; } else continuecount = 1; mengembalikan false; }3.7 Kotak pesan yang sesuai muncul (di dalam fungsi tekan mouse)
if (isWin ()) {string msg = string.format ("ucapan selamat, %s win ~", colorname); JOPTIONPANE.SHOWMESSADEIALOG (ini, MSG); Gameover = true; } lain if (chesscount == (cols+1)*(baris+1)) // track {string msg = string.format ("drum catur cukup bagus, hebat ~"); JOPTIONPANE.SHOWMESSADEIALOG (ini, MSG); Gameover = true; }3.8 Fungsi yang digunakan di atas untuk menentukan apakah ada potongan catur di titik tertentu
private boolean findchess (int x, int y) {for (point c: chesslist) {if (c! = null && c.getx () == x && c.gety () == y) return true; } return false; }3.9 Karena kelas papan catur ini mengimplementasikan antarmuka pendengaran mouse Monselistener, semua metode dalam antarmuka perlu ditulis ulang. Metode lainnya adalah sebagai berikut
@Override public void mouseClicked(MouseEvent e) {//Called when the mouse button is clicked (pressed and released) on the component} @Override public void mouseReleased(MouseEvent e) {///Called when the mouse button is released on the component} @Override public void mouseEntered(MouseEvent e) {//Called when the mouse enters the component} @Override public void mouseExited (mouseEvent e) {// dipanggil saat mouse meninggalkan komponen}4. Hasil Operasi
V. Ringkasan Kode
Gim ini memiliki tiga kelas secara total, satu adalah antarmuka startchessjframe, satu adalah papan catur kelas catur, dan yang lainnya adalah titik kelas subjek catur
Kelas 5.1StartchessJframe
Paket CHESS.LCC.com; impor javax.swing.*; impor java.awt.event.*; impor java.awt.*; /** Kerangka kerja utama Gozi, kelas startup program*/kelas publik startchessjframe memperluas jframe {private chessboard catur; // fight panel panel private panel bilah alat; // panel toolbar tombol private startbutton;/atur tombol start {{’’ ’’ ’oP Button ({{{{{{{{{{{{{{{{{{{{{{{{{{butsbut’ rutbute {’OR UNCITTON PRIBRICTLE (/UNSICTRICTLE (/UNSIGROCTE PRIVECT; settitle ("mandiri goji"); // atur judul catur = new chessboard (); // inisialisasi objek panel, buat dan tambahkan menu myItemlistener lis = myitemlistener baru (); // inisialisasi kancing kancing new () (); // contoh bilah alat batang bilah kancing batang batang batang batang new () (); // contoh bilah alat batang batang batang batang batang newuton = "baru (); // contoh bilah alat batang alat batang batang batang batang batang batang batang new () () (); // contoh bilah alat bilah alat batang batang batang batang batang batang batang batang new () () (); // contoh bilah alat batang batang batang batang bilah batang batang batang new (); backbutton = tombol baru ("balasan"); ExitButton = tombol baru ("Keluar"); // inisialisasi toolbar.setLayout (flowlayout baru (flowlayout.left)); // Gunakan flowlayout ke tata letak toolbar.add (backbutton); toolbar.add (startButton); toolbar.add (exitbutton); // tambahkan tiga tombol ke panel alat startButton.addactionListener (LIS); backbutton.addactionListener (LIS); ExitButton.AddactionListener (LIS); // Daftarkan acara tiga tombol untuk mendengarkan Acara Tambah (Toolbar, BorderLayout.South); // Tata Letak Panel Alat ke Selatan Antarmuka, yaitu, Tambah (Catur); // Tambahkan Objek Panel ke dalam Formulir SetDefaultOPLOSEOPERASI (JFRame.Exit. SIZE} kelas pribadi MyItemListener mengimplementasikan ActionListener {public void actionPerformed (ActionEvent e) {objek obj = e.getSource (); // Dapatkan sumber acara jika (obj == startbutton) {System.Out.println ("Referensi ..."); // startbutton) {{oute.this.this di inter.println ("Referensi ...");//start // jfiveframe. } else if (obj == exitbutton) {system.exit (0); // Akhiri aplikasi} lain jika (obj == backbutton) {system.out.println ("Balas catur ..."); // balas chessboard.goback (); }}} public static void main (string [] args) {startchessJframe f = startchessjframe baru (); // Buat bingkai utama f.setVisible (true); // Tampilkan bingkai utama}} 5.2Chessboard Class
Paket CHESS.LCC.com; impor javax.swing.*; impor java.awt.*; impor java.awt.event.mouselistener; impor java.awt.event.mousemotionlistener; impor java.awt.event.mouseevent; /*Group-chess-chessboard class*/ public class ChessBoard extends JPanel implements MouseListener{ public static int MARGIN=30;//Marriage public static int GRID_SPAN=35;//Grid spacing public static int ROWS=15;//Number of chessboard rows public static int COLS=15;//Number of chessboard columns Point[] chessList=new Point [(baris+1)*(cols+1)]; // inisialisasi setiap elemen array ke null boolean isback = true; // awal default adalah catur hitam pertama game = false; // adalah permainan yang berakhir int chesscount; // jumlah potongan catur pada chessboard saat ini) {yindex; setBackground(Color.LIGHT_GRAY);//Set the background color to yellow addMouseListener(this);//Add event listener addMouseMotionListener(new MouseMotionListener() {//Anonymous internal class @Override public void mouseMoved(MouseEvent e) { int x1=(e.getX()-MARGIN+GRID_SPAN/2)/GRID_SPAN; int y1 = (e.gety ()-margin+grid_span/2)/grid_span; // konversi posisi koordinat mouse klik menjadi indeks grid if (x1 <0 || x1> baris || y1 <0 || y1> cols || gameover || findchess (x1, y1) {//game gameer telah ended || findchess (x1, y1)) {//The Game | Ada potongan -potongan catur dalam posisi x dan y, sehingga Anda tidak dapat menjadi setCursor (kursor baru (kursor.default_cursor))); // diatur ke bentuk default} else {setCursor (kursor baru (kursor.hand_cursor)); // atur ke bentuk tangan}} @everride void mouseDrag mouseDrag mouseDrag mouse {o) {o) {o) {o) {o) {o) {o) {o) {o) {o) {o) {o) {o) {o) {o) {o) }/*Draw*/public void catcomponent (grafik g) {super.paintComponent (g); // menggambar papan catur untuk (int i = 0; i <= baris; i ++) {// garis horizontal g.drawline (margin, margin+i*grid_span, margin+cols*grid_span, margin, margin+i*grid_span, margin+cols*grid_span, margin, margin+i*grid_span, margin+cols*grid_span, margin, margin, grid_span, margin+cols*grid_span, margin, margin, grid_span, margin+cols*grid_sper } untuk (int i = 0; i <= cols; i ++) {// Gambar garis lurus G.Drawline (margin+i*grid_span, margin, margin+i*grid_span, margin+baris*grid_span); }/*Gambar potongan catur*/untuk (int i = 0; i <cHesscount; i ++) {int xpos = cyslist [i] .getx ()*grid_span+margin; // x koordinat grid crossing int ypos = crosslist [i] .gety ()*grid_span+margin; g.setColor (ChessList [i] .getColor ()); // Atur warna G.Filloval (xpos-point.Diameter/2, ypos-point.diameter/2, point.diameter, point.diameter); if (i == CHESSCOUNT-1) {g.setColor (color.red); // Daftarkan bagian terakhir sebagai Red G.Drawrect (xpos-point.Diameter/2, ypos-point.Diameter/2, point.Diameter, point.diameter); }}} @Override public void mousepressed (mouseEvent e) {// if (gameover) dipanggil ketika tombol mouse ditekan pada komponen // gim telah berakhir, Anda tidak dapat mengembalikannya; String colorname = isBack? "Hitam": "catur putih"; xindex = (e.getx ()-margin+grid_span/2)/grid_span; yindex = (e.gety ()-margin+grid_span/2)/grid_span; // konversi posisi koordinat mouse klik menjadi indeks grid if (xindex <0 || xindex> baris || yindex <0 || yindex> cols) // potongan catur berada di luar papan dan tidak bisa dikembalikan; if (findchess (xindex, yindex)) // potongan catur sudah ada pada posisi x, y, jadi Anda tidak dapat dikembalikan; Titik ch = titik baru (xindex, yindex, isback? Color.black: color.white); ChessList [ChessCount ++] = ch; repaint (); // beri tahu sistem untuk mengecat ulang jika (iswin ()) {string msg = string.format ("ucapan selamat, %s win ~", colorname); JOPTIONPANE.SHOWMESSADEIALOG (ini, MSG); Gameover = true; } lain if (chesscount == (cols+1)*(baris+1)) {string msg = string.format ("drum catur cukup bagus, hebat ~"); JOPTIONPANE.SHOWMESSADEIALOG (ini, MSG); Gameover = true; } isBack =! Isback; } @Override public void mouseclicked (mouseEvent e) {// dipanggil kapan tombol mouse diklik (ditekan dan dirilis) pada komponen} @Override public void mousereleased (mouseEvent e) {/// dipanggil ketika mouse mouse dirilis pada komponen {mouseEvent public void {mouse {mouse {mouse {mouse {mouse {mouse {mouse {mouse {mouse {mouse {mouse {mouse {mouse { Komponen} @Override public void mouseExited (mouseEvent e) {// dipanggil ketika mouse meninggalkan komponen} private boolean findchess (int x, int y) {for (point c: chesslist) {if (c! = null & & c.getx () == x && c.gety () == y) return } return false; }/*Menilai sisi yang menang*/private boolean iswin () {int continuecount = 1; // jumlah potongan catur kontinu untuk (int x = xindex-1; x> = 0; x-) {// cari warna c = isback? Color.black: color.hite; if (getchess (x, yindex, c)! = null) {continueCount ++; } lain break; } untuk (int x = xindex+1; x <= baris; x ++) {// cari warna c = isBack? Color.black: color.hite; if (getchess (x, yindex, c)! = null) {continueCount ++; } lain break; } if (continueCount> = 5) {// menilai jumlah catatan lebih besar dari atau sama dengan lima, yang berarti bahwa sisi ini menang mengembalikan true; } else continuecount = 1; // untuk (int y = yindex-1; y> = 0; y-) {// lihat secara vertikal ke warna c = isBack? Color.black: color.hite; if (getchess (xindex, y, c)! = null) {continueCount ++; } lain break; } untuk (int y = yindex+1; y <= baris; y ++) {// lihat ke bawah dalam arah arah vertikal C = isBack? Color.black: color.hite; if (getchess (xindex, y, c)! = null) {continueCount ++; } lain break; } if (continueCount> = 5) {// menilai jumlah catatan lebih besar dari atau sama dengan lima, yang berarti bahwa sisi ini menang mengembalikan true; } else continuecount = 1; // untuk (int x = xIndex+1, y = yindex-1; y> = 0 && x <= cols; x ++, y-) {// lihat ke bawah pada warna kanan bawah c = isback? Color.black: color.hite; if (getchess (x, y, c)! = null) {ContinueCount ++; } lain break; } untuk (int x = xindex-1, y = yindex+1; y <= baris && x> = 0; x-, y ++) {// cari warna c = isBack? Color.black: color.hite; if (getchess (x, y, c)! = null) {ContinueCount ++; } lain break; } if (continueCount> = 5) {// menilai jumlah catatan lebih besar dari atau sama dengan lima, yang berarti bahwa sisi ini menang. Kembali Benar; } else continuecount = 1; // untuk (int x = xindex-1, y = yindex-1; y> = 0 && x> = 0; x-, y-) {// Cari warna c = isBack? Color.black: color.hite; if (getchess (x, y, c)! = null) {ContinueCount ++; } lain break; } untuk (int x = xindex+1, y = yindex+1; y <= baris && x <= cols; x ++, y ++) {// cari warna c = isback? Color.black: color.hite; if (getchess (x, y, c)! = null) {ContinueCount ++; } lain break; } if (continueCount> = 5) {// menilai bahwa jumlah catatan lebih besar dari atau sama dengan lima, itu berarti bahwa sisi ini menang kembali benar; } else continuecount = 1; mengembalikan false; } private point getChess (int xindex, int yindex, warna warna) {for (point c: chesslist) {if (c! = null && c.getx () == xindex && c.gety () == yindex && c.getColor () == warna) return c; } return null; } public void restartgame () {// Hapus bagian catur untuk (int i = 0; i <chiSslist.length; i ++) ChessList [i] = null; /*Kembalikan nilai variabel terkait game*/ isback = true; GameOver = false; // Apakah game berakhir cyscount = 0; // Jumlah potongan catur pada papan saat ini adalah ulang (); } public void goBack () {if (chesscount == 0) return; ChessList [ChessCount-1] = null; Chesscount--; if (chesscount> 0) {xIndex = ChessList [ChessCount-1] .getX (); yindex = ChessList [cyscount-1] .gety (); } isBack =! Isback; ulang (); } // Dimensi: dimensi publik persegi panjang getPreferredSize () {return new dimension (margin*2+grid_span*cols, margin*2+grid_span*baris); }} Kelas 5.3point
Paket CHESS.LCC.com; impor java.awt.*; Titik kelas publik {private int x; // x Nilai indeks potongan catur di papan catur private int y; // y Nilai indeks potongan catur di papan catur warna warna pribadi; // warna public static int diameter = 30; // Diameter poin publik (int x, int y, warna warna) {this.x = x; this.y = y; this.color = warna; } // Dapatkan X Nilai Indeks Catur di papan catur int getx () {return x; } // Dapatkan nilai indeks dari potongan catur di papan catur int gety () {return y; } // Dapatkan warna catur warna public color getColor () {return color; }}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.