Dua artikel sebelumnya: Java mengimplementasikan dua game Gozi (dua) untuk menggambar papan catur; Java mengimplementasikan dua game Gozi (tiga) untuk menggambar sepotong catur; Java mengimplementasikan dua game Gozi (empat) untuk mewujudkan langkah tersebut; Java mengimplementasikan dua game Gozi (enam) untuk mengubah sisi catur, Anda dapat mengklik untuk dilihat.
Fungsi berikutnya yang ingin kami terapkan adalah meminta informasi di layar ketika ada lima manik -manik berturut -turut. Cukup gunakan showmessagedialog di bagian iswin dari fungsi mousepresi.
Kode fungsi mousepresi adalah sebagai berikut:
@Override // public void mousepressed (mouseEvent e) {int point_x = e.getx (); int point_y = e.gety (); int imgwidth = boardimg.getheight (ini); int imgheight = boardimg.getwidth (ini); int fwidth = getWidth (); int fheight = getHeight (); int x = (fwidth-imgwidth)/2; int y = (fheight-imgheight)/2; int span_x = imgwidth/baris; int span_y = imgheight/baris; //System.out.println("press "); int status_x = 0; int status_y = 0; if (point_x> = x && point_x <= x+imgwidth && point_y> = y && point_y <= y+imgheight) {//system.out.println("legal "); untuk (int i = 0; i <Baris+1; i ++) {if (point_x> = x-chessman_width/2+1+i*span_x) {if (point_x <= x+chiSman_width/2-1+i*span_x) // Jika lebar/2, dua nilai pencocokan akan muncul pada titik tengah {span_x) // jika lebar/2, dua nilai pencocokan akan muncul pada titik tengah {iN "{poin Midde/point {2-2. "+point_x+" "+(x-chessman_width/2+i*span_x)+" ""+(x+chessman_width/2+i*span_x)); status_x = i; }}} for (int i = 0; i <Buruk+1; i ++) {if (point_y> = y-chessman_width/2+1+i*span_y) {if (point_y <= y+chessman_width/2-1+i*span_y) {//system.out. "+(y-chessman_width/2+1+i*span_y)+" "+(y+chessman_width/2-1+i*span_y)); status_y = i; }}} if (chessstatus [status_x] [status_y] == null || chiSSstatus [status_x] [status_y] .getPlaced () == false) {catur catur = catur baru (ChessColor, true); Chessstatus [status_x] [status_y] = catur; System.out.println ("Warna Catur:"+ChessColor); if (chesscolor == hitam) {cyscolor = white; } else {chesscolor = hitam; } repaint (); // jika menang, berikan pesan cepat jika (iswin (status_x, status_y, chessstatus)) {system.out.println ("win !!!"); Pemenang string; // Jika anak berikutnya berkulit putih, maka kali ini hitam jika (cyscolor == putih) pemenang = "hitam"; lain pemenang = "blank"; String mString = string.format ("Selamat, %s win !!!", pemenang); Joptionpane.showmessagedialog (ini, mString); }}}}Jalankan:
Pada titik ini, kami telah menyelesaikan fungsi Gozi paling dasar. Saya akan memposting kode lengkap di bawah ini:
Chessman.java
paket xchen.test.simplegobang; kelas publik catur {private int color; // 1-white, 0-black private boolean ditempatkan = false; int matchcount = 1; catur publik (warna int, boolean ditempatkan) {this.color = warna; this.placed = ditempatkan; } public boolean getplaced () {return ditempatkan; } public void setplaced (boolean ditempatkan) {this.placed = ditempatkan; } public int getColor () {return color; } public void setColor (int color) {this.color = color; }} Main.java
paket xchen.test.simplegobang; impor java.awt.container; impor javax.swing.jframe; impor xchen.test.simplegobang.drawchessboard; Kelas Publik Main Memperluas JFrame {Private Drawchessboard Drawchessboard; Public Main () {DrawChessboard = New DrawChessboard (); // bingkai judul settitle ("stand-alone goji"); Container containerpane = getContentPane (); containerpane.add (drawchessboard); } public static void main (string [] args) {main m = baru main (); m.setsize (800, 800); M.SetVisible (true); }} Drawchessboard.java
paket xchen.test.simplegobang; impor java.awt.color; impor java.awt.graphics; impor java.awt.graphics2d; impor java.awt.image; impor java.awt.radialgradientpaint; impor java.awt.toolkit; impor java.awt.event.mouseevent; impor java.awt.event.mouselistener; impor javax.swing.joptionpane; impor javax.swing.jpanel; PBA Publik Drawchessboard Memperluas JPanel mengimplementasikan MouseListener {final static int black = 0; Final Static Int White = 1; Public Int ChessColor = Hitam; int chessman_width = 30; boardimg citra publik; Baris int privat terakhir = 19; Chessman [] [] ChessStatus = catur baru [baris+1] [baris+1]; Public DrawChessboard () {boardimg = toolkit.getDefaultToolKit (). getImage ("res/drawable/chessboard2.png"); if (boardimg == null) system.err.println ("png tidak ada"); AddMouseListener (ini); } @Override Protected void PaintComponent (Graphics G) {// TODO Metode yang dihasilkan secara otomatis Stub super.paintComponent (g); int imgwidth = boardimg.getheight (ini); int imgheight = boardimg.getwidth (ini); int fwidth = getWidth (); int fheight = getHeight (); int x = (fwidth-imgwidth)/2; int y = (fheight-imgheight)/2; int span_x = imgwidth/baris; int span_y = imgheight/baris; G.DrawImage (boardimg, x, y, null); // Gambarlah garis horizontal untuk (int i = 0; i <baris; i ++) {g.drawline (x, y+i*span_y, fwidth-x, y+i*span_y); } // Gambarlah garis vertikal untuk (int i = 0; i <rows; i ++) {g.drawline (x+i*span_x, y, x+i*span_x, fheight-y); } //Draw chess pieces for(int i=0;i<ROWS+1;i++) { for(int j=0;j<ROWS+1;j++) { if(chessStatus[i][j]!=null&&chessStatus[i][j].getPlaced()==true) { //System.out.println("draw chessman "+i+" "+j); int pos_x = x+i*span_x; int pos_y = y+j*span_y; float radius_b = 40; float radius_w = 80; float [] fractions = new float [] {0f, 1f}; java.awt.color [] color_b = new java.awt.color [] {color.black, color.white}; Color [] color_w = warna baru [] {color.white, color.black}; Cat RadialGradientPaint; if (chessstatus [i] [j] .getColor () == 1) {//system.out.println(" catur putih "); cat = RadialGradientPaint baru (pos_x-chessman_width/2f, pos_y-chessman_width/2f, radius_w*2, fraksi, warna_w); } else {//system.out.println("draw catur hitam "); cat = RadialGradientPaint baru (pos_x-chessman_width/2f, pos_y-chessman_width/2f, Radius_b*2, fraksi, warna_b); } ((Grafik2d) g) .setPaint (cat); ((Graphics2d) g) .filloval (pos_x-chessman_width/2, pos_y-chessman_width/2, chessman_width, chessman_width); }}}} @Override // public void mousePressed (mouseEvent e) {int point_x = e.getx (); int point_y = e.gety (); int imgwidth = boardimg.getheight (ini); int imgheight = boardimg.getwidth (ini); int fwidth = getWidth (); int fheight = getHeight (); int x = (fwidth-imgwidth)/2; int y = (fheight-imgheight)/2; int span_x = imgwidth/baris; int span_y = imgheight/baris; //System.out.println("press "); int status_x = 0; int status_y = 0; if (point_x> = x && point_x <= x+imgwidth && point_y> = y && point_y <= y+imgheight) {//system.out.println("legal "); untuk (int i = 0; i <Baris+1; i ++) {if (point_x> = x-chessman_width/2+1+i*span_x) {if (point_x <= x+chiSman_width/2-1+i*span_x) // Jika lebar/2, dua nilai pencocokan akan muncul pada titik tengah {span_x) // jika lebar/2, dua nilai pencocokan akan muncul pada titik tengah {iN "{poin Midde/point {2-2. "+point_x+" "+(x-chessman_width/2+i*span_x)+" ""+(x+chessman_width/2+i*span_x)); status_x = i; } } for(int i=0;i<ROWS+1;i++) { if(point_y>=y-chessman_width/2+1+i*span_y) { if(point_y <= y+chessman_width/2-1+i*span_y) { //System.out.println("point y "+i+" "+point_y+" "+(y-chessman_width/2+1+i*span_y)+" "+(y+chessman_width/2-1+i*span_y)); status_y = i; }}} if (chessstatus [status_x] [status_y] == null || chiSSstatus [status_x] [status_y] .getPlaced () == false) {catur catur = catur baru (ChessColor, true); Chessstatus [status_x] [status_y] = catur; System.out.println ("Warna Catur:"+ChessColor); if (chesscolor == hitam) {cyscolor = white; } else {chesscolor = hitam; } repaint (); // Jika Anda menang, berikan pesan cepat jika (iswin (status_x, status_y, chessstatus)) {system.out.println ("win !!!!"); Pemenang string; // Jika anak berikutnya berkulit putih, maka kali ini hitam jika (cyscolor == putih) pemenang = "hitam"; lain pemenang = "putih"; String mString = string.format ("Selamat, %s win !!!", pemenang); Joptionpane.showmessagedialog (ini, mString); } } } } @Override // public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered (MouseEvent E) {// TODO METODE AUTO-AUTOLED Stub} @Override public void mouseExited (MouseEvent e) {// TODO METODE AUTO-ENTEORATED STUK j = 0; j <baris+1; j ++) {// Pencarian side-side if (chessStatus [i] [j]! = null && chessstatus [i] [j] .getPlaced () == true) {int matchcolor = chessstatus [i] [j] .getColor (); // Cari (int n = 1; n <= 4; n ++) {if ((i+n> = 0) && (i+n) <= baris) {if (chessstatus [i+n] [j]! = Null && chiSSstatus [i+n] [j] .getPlaced () == true & & chessstatus [i+n] [j] .getplaced () == true & & chessStatus [i+n] [j] .getplaced () == true & & chessStatus [i+n] [j] .getPlaced () == true & & chessStatus [i+n] [j] .getplaced () == true & & chessStatus [i+n] [j] .getPlaced () == true & & chessStatus [i+n] [j] .getPlaced () == true & & chessStatus [i+n] [j] .getPlaced () == true & & chessStatus [i+n]. {Chessstatus [i] [j] .matchcount ++; System.out.println ("Pos:"+i+""+j+"Hitung Kanan ++:"+(i+n)+""+j+"Count:"+Chessstatus [i] [j] .matchcount); if (chessstatus [i] [j] .matchcount == 5) {return true; }} else {break; } } } //Look for(int n=1;n<=4;n++) { if((in>=0)&&(in)<=ROWS) { if(chessStatus[in][j]!=null&&chessStatus[in][j].getPlaced()==true&&chessStatus[in][j].getColor()==matchColor) { Chessstatus [i] [j] .MatchCount ++; System.out.println ("Pos:"+i+""+j+""+"Left Count ++:"+(in)+""+j+"Count:"+Chessstatus [i] [j] .MatchCount); if (chessstatus [i] [j] .matchcount == 5) {return true; }} else {if (chessStatus [in] [j]! = null) {chessstatus [i] [j] .matchcount = 1; } merusak; }}}} chessStatus [i] [j] .matchcount = 1; // refresh count}}} untuk (int i = 0; i <baris+1; i ++) {for (int j = 0; j <baris+1; j ++) {// tetpendicular if (chessstatus [i] [j]! = null && chessstatus [i] [j] .getPlaced () == true) {int matchcolor = chessstatus [i] [j] .getColor (); // Lihat ke bawah, sudut kiri atas adalah asal koordinat, arah positif dari sumbu y adalah untuk (int n = 1; n <= 4; n ++) {if ((j+n> = 0) && (j+n) <= baris) { if (chessstatus [i] [j+n]! = null && chessstatus [i] [j+n] .getPlaced () == true && chessstatus [i] [j+n] .getColor () == matchcolor) {chessstatus [i] [j] .MatchCount ++; System.out.println ("pos:"+i+""+j+"up count ++:"+(i)+""+(j+n)+"Count:"+chessstatus [i] [j] .matchcount); if (chessstatus [i] [j] .matchcount == 5) {return true; }} else {break; }}} // cari (int n = 1; n <= 4; n ++) {if ((jn> = 0) && (jn) <= baris) { if (chessstatus [i] [jn]! = null && chessstatus [i] [jn] .getPlaced () == true && chessstatus [i] [jn] .getColor () == matchcolor) {chessstatus [i] [j] .matcitCount ++; System.out.println ("Pos:"+i+""+j+""+"Left Count ++:"+(i)+""+(jn)+"Count:"+Chessstatus [i] [j] .MatchCount); if (chessstatus [i] [j] .matchcount == 5) {return true; }} else {if (chessStatus [i] [jn]! = null) {chessstatus [i] [j] .matchcount = 1; } merusak; }}} chessstatus [i] [j] .matchcount = 1; // refresh count}}} // arah: kiri atas dan kanan bawah untuk (int i = 0; i <baris+1; i ++) {untuk (int j = 0; j <baris+1; j ++) {// atas if (chessstatus [i] [j]! = null && chessstatus [i] [j] .getPlaced () == true) {int matchcolor = chessstatus [i] [j] .getColor (); // Lihat ke bawah, sudut kiri atas adalah asal koordinat, dan arah positif dari sumbu y adalah untuk (int n = 1; n <= 4; n ++) {if ((jn> = 0) && (jn) <= baris && (dalam)> = 0 && (dalam) <= baris) { if (chessstatus [di] [jn]! = null && chessstatus [in] [jn] .getplaced () == true && chessstatus [in] [jn] .getColor () == matchcolor) {chessstatus [i] [j] .matcitCount ++; System.out.println ("pos:"+i+""+j+"up count ++:"+(in)+""+(jn)+"count:"+chessstatus [i] [j] .matchcount); if (chessstatus [i] [j] .matchcount == 5) {return true; }} else {break; }}} // kanan bawah untuk (int n = 1; n <= 4; n ++) {if ((j+n> = 0) && (j+n) <= baris && (i+n)> = 0 && (i+n) <= baris) { if (chessstatus [i+n] [j+n]! = null && chessstatus [i+n] [j+n] .getPlaced () == true && chessstatus [i+n] [j+n] .getColor () == matchcolor) {chessstatus [i] [j]. System.out.println ("Pos:"+i+""+j+""+"Count Left ++:"+(i+n)+""+(j+n)+"Count:"+Chessstatus [i] [j] .matchcount); if (chessstatus [i] [j] .matchcount == 5) {return true; }} else {if (chessStatus [i+n] [j+n]! = null) {chessstatus [i] [j] .matchcount = 1; } merusak; }}} chessstatus [i] [j] .matchcount = 1; // refresh count}}} // arah: bagian kiri atas atas atas untuk (int i = 0; i <baris+1; i ++) {untuk (int j = 0; j <baris+1; j ++) {// lebih rendah {int j = 0; j <baris+1; j ++) {// lebih rendah if (chessstatus [i] [j]! = null && chessstatus [i] [j] .getPlaced () == true) {int matchcolor = chessstatus [i] [j] .getColor (); // Lihat ke bawah, sudut kiri atas adalah asal koordinat, dan arah positif dari sumbu y adalah untuk (int n = 1; n <= 4; n ++) {if ((j+n> = 0) && (j+n) <= baris && (dalam)> = 0 && (in) <= baris) {n+n) <= baris && (in)> = 0 && (in) <= Baris) {n+n) <= if (chessstatus [di] [j+n]! = null && chessstatus [in] [j+n] .getPlaced () == true && chessstatus [in] [j+n] .getColor () == matchcolor) {chessstatus [i] [j] .MatchCount ++; System.out.println ("pos:"+i+""+j+"up count ++:"+(in)+""+(j+n)+"count:"+chessstatus [i] [j] .matchcount ++); if (chessstatus [i] [j] .matchcount == 5) {return true; }} else {break; }}} // kanan atas untuk (int n = 1; n <= 4; n ++) {if ((jn> = 0) && (jn) <= baris && (i+n)> = 0 && (i+n) <= baris) { if (chessstatus [i+n] [jn]! = null && chessstatus [i+n] [jn] .getplaced () == true && chessstatus [i+n] [jn] .getColor () == matchcolor) {chessstatus [i] [j]. System.out.println ("Pos:"+i+""+j+""+"Left Count ++:"+(i+n)+""+(jn)+"Count:"+Chessstatus [i] [j] .MatchCount); if (chessstatus [i] [j] .matchcount == 5) {return true; }} else {if (chessStatus [i+n] [jn]! = null) {chessstatus [i] [j] .matchcount = 1; } merusak; }}} chessstatus [i] [j] .matchcount = 1; // refresh count}}} return false; }}Untuk game yang lebih menarik, silakan merujuk ke topik khusus "Java Classic Games"
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.