Dua artikel sebelumnya: Java mengimplementasikan Two Gozi Chess Game (dua) menggambar papan catur; Java mengimplementasikan dua game catur Gozi (dua) menggambar sepotong catur
Di depan, kami telah menggambar papan catur dan potongan catur. Selanjutnya, kita perlu mengklik layar dengan mouse untuk mendapatkan posisi dan bergerak (tidak mempertimbangkan permainan catur dan kemenangan atau mengalahkan penilaian terlebih dahulu).
melangkah:
1) Tangkap posisi di mana mouse ditekan
2) Setelah transformasi koordinat (dari posisi piksel -> 0-19 posisi papan catur)
3) Perbarui array dua dimensi yang mencatat status dewan
4) Raja ulang papan gambar.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A Chessman.java
paket xchen.test.simplegobang; kelas publik catur {private int color; // 1-white, 0-black private boolean ditempatkan = false; 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; }} Drawchessboard.java
paket xchen.test.simplegobang; impor java.awt.graphics; impor java.awt.graphics2d; impor java.awt.radialgradientpaint; impor java.awt.image; impor java.awt.toolkit; impor java.awt.event.mouseevent; impor java.awt.event.mouselistener; impor java.awt.color; impor javax.swing.jpanel; PBA Publik Drawchessboard Memperluas Implementasi Jpanel 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 Stub yang Dihasilkan Otomatis System.out.println ("Draw !!"); 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); } // Gambar catur untuk (int i = 0; i <baris+1; i ++) {for (int j = 0; j <baris+1; j ++) {if (chessstatus [i] [j]! = Null && chessstatus [i] [j] .getPlaced () == true) {System.out.out. 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 ("Gambar 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 Black Chess"); 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 ("tekan"); 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+chessman_width/2-1+i*span_x) // Jika lebar/2, dua nilai pencocokan akan muncul di titik tengah. " "+point_x+" "+(x-chessman_width/2+i*span_x)+" ""+(x+chessman_width/2+i*span_x)); status_x = i; }} for (int i = 0; i <Baris+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"+2-1+i*span_y) {System.out.println ("point y"+2-1+i*span_y) {System.out.println ("point y" y "+i*span_y) {System.out.println (" point y "y"+i*i*span_y) {System.out.println ("point y" y "+i*span_y) {System.out.println (" point y "n" "+(y-chessman_width/2+1+i*span_y)+" "+(y+chessman_width/2-1+i*span_y)); status_y = i; }}} Catur catur = catur baru (hitam, true); Chessstatus [status_x] [status_y] = catur; ulang (); } System.out.println (status_x+""+status_y+""+ChessStatus [status_x] [status_y] .getColor ()+""+chessstatus [status_x] [status_y] .getplaced ()); } @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 mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void MouseExited (MouseEvent E) {// TODO Metode yang dihasilkan otomatis Stub}}Kode modul utama tetap tidak berubah
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); }}Jalankan
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.