本文实例讲述了 Java 实现的五子棋游戏代码 , 分享给大家供大家参考 , 具体代码如下
paket gyb.exam; Impor java.awt.borderlayout; impor java.awt.color; impor java.awt.dimension; impor java.awt.font; import java.awt.graphics; import java.awt.point; import java.awt.toolkit; impor java.awtenerer.eventener.eventener.ActionAction; java.awt.event.mouseadapter; import java.awt.event.mouseevent; import java.util.arraylist; Impor javax.swing.icon; impor javax.swing.imageicon; impor javax.swing.jbutton; impor javax.swing.jframe; import javax.swing.jlabel; impor javax.swing.jmenu; impor javax.swing.jmenubar; impor javax.swing; impor javax.swing; impor javax.swing; impor javax.swing; impor javax.swing; impor javax.swing; javax.swing.joptionpane; import javax.swing.jpanel; impor javax.swing.border.titledborder; Mainframe kelas publik memperluas jframe {private static int big = 15; Int final statis pribadi = 25; start final statis privat statis = 10; Private Static Int X = Big*Start/2; Private Static Int Y = Big*Start/2; private int hl = besar*satu+mulai; ISBlack boolean statis pribadi; Canvasframe canvas = canvasframe baru (); Canvasframe bisa; Grafik g; mainframe publik () {init (); } titik titik pribadi; Private ArrayList <Point> BlackList = New ArrayList <Point> (); Private ArrayList <Point> WhiteList = New ArrayList <Point> (); private void init () {jmenubar bar = new jmenubar (); setjmenubar (bar); setsize (600.600); settitle ("五子棋"); Menu jmenu = jmenu baru ("game"); bar.add (menu); JMenuitem start = jMenuitem baru ("start"); JMenuitem end = jMenuitem baru ("棋盘大小"); end.addactionListener (actionListener () {public void actionPerformed (actionEvent e) {}}); JMenuitem Renew = JMenuitem baru ("重新开始"); JMenuitem Exit = JMenuitem baru ("退出"); exit.addactionListener (actionListener () {public void actionPerformed (actionEvent e) {System.exit (0);}}); renew.addactionListener (actionListener () {public void actionPerformed (actionEvent e) {blacklist.clear (); whitelist.clear ();}}); menu.add (mulai); menu.add (Renew); menu.add (end); menu.add (keluar); setLayout (borderlayout baru ()); Tambah (BorderLayout.Center, CreateCenter ()); tambahkan (borderlayout.east, createEast ()); } private boolean iswin (arraylist <point> daftar) {int x; int y; int idx = 0; loop: untuk (titik p: daftar) {x = px; y = py; idx = 0; while (list.contains (titik baru (x, y))) {idx ++; x = x-one; if (idx == 5) break loop; } x = px; y = py; idx = 0; while (list.contains (titik baru (x, y))) {idx ++; y = y-one; if (idx == 5) break loop; } x = px; y = py; idx = 0; while (list.contains (titik baru (x, y))) {idx ++; x = x-one; y = y-one; if (idx == 5) break loop; } x = px; y = py; idx = 0; while (list.contains (titik baru (x, y))) {idx ++; x = x-one; y = y+satu; if (idx == 5) break loop; }} return idx == 5; } private jpanel createEast () {jpanel pane = new jpanel (); BorderLayout Border = BorderLayout baru (); pane.setlayout (perbatasan); pane.setborder (judul baru ("五子棋")); Ikon Image = ImageIcon baru (getClass (). GetResource ("mm.png")); Pane.Add (borderlayout.north, Jlabel baru (Image, jlabel.center)); Pane.Add (BorderLayout.Center, Ballcolor ()); pane.add (borderlayout.south, button ()); Panel Kembali; } private jpanel ballcolor () {jpanel pane = new jpanel (); pane.setlayout (borderlayout baru ()); can = new canvasframe () {public void cat (grafik g) {g.setColor (color.pink); G.Fillrect (1, 1.200.300); g.setfont (font baru ("sans", font.bold, 20)); G.SetColor (Color.Black); G.Filloval (55, 20,25,30); G.DrawString ("黑子", 10, 43); G.SetColor (Color.White); G.Filloval (55, 60,25,30); G.DrawString ("白子", 10, 83); if (isBlack) {g.setColor (color.black); G.DrawString ("黑方落子", 5, 120); } else {g.setColor (color.white); G.DrawString ("白方落子", 5.120); } can.repaint (); }}; Pane.Add (borderlayout.center, can); Panel Kembali; } tombol private jpanel () {jpanel pane = jpanel baru (); Borderlayout bor = borderlayout baru (); Jbutton start = new jbutton ("开始"); Jbutton end = jbutton baru ("结束"); end.addactionListener (actionListener () {public void actionPerformed (actionEvent e) {System.exit (0);}}); pane.setlayout (bor); bor.setvgap (5); pane.setborder (judul baru ("")); Pane.Add (BorderLayout.North, Start); pane.add (borderlayout.south, end); Panel Kembali; } private jpanel createCenter () {jpanel pane = new jpanel (); canvas.setPreferredSize (dimensi baru (hl+10, hl+10)); canvas.addmouseListener (mouseadapter baru () {public void mouseclicked (mouseEvent e) {loop: if (e.getbutton () == mouseEvent.button1) {x = e.getx (); y = e.gety (); int x = (x/satu)*satu; if (! whitelist.add (point); isBlack =! isBlack;}}}); pane.add (kanvas); Panel Kembali; } public static void main (string [] args) {mainframe frame = new mainframe (); frame.center (frame); frame.pack (); frame.setVisible (true); } public void center (bingkai jframe) {// toolkit 是当前 绘图系统集合工具包 toolkit toolkit = toolkit.getDefaultToolKit (); Dimensi screen = toolkit.getScreensize (); // 屏幕的宽高 int framewidth = frame.getWidth (); int frameHigh = frame.getHeight (); int x = (screen.width-framewidth)/2; int y = (screen.height-frameHigh)/2; frame.setlocation (x, y); } class canvasframe memperluas jpanel {public void cat (grafik g) {g.setColor (color.pink); g.fillrect (0, 0, hl+20, hl+20); G.SetColor (Color.Black); untuk (int i = start; i <= hl; i = i+satu) {for (int j = start; j <= hl; j = j+satu) {g.drawline (i, j, hl, j); }} untuk (int i = start; i <= hl; i = i+satu) {for (int j = start; j <= hl; j = j+one) {g.drawline (i, j, i, hl); }} g.setColor (color.yellow); G.Drawrect (mulai/2, mulai/2, hl+1, hl+1); G.SetColor (Color.Black); untuk (titik titik: blacklist) {g.filloval (point.x, point.y, 20, 25); } g.setColor (color.white); untuk (titik titik: whitelist) {g.filloval (point.x, point.y, 20, 25); }}}}效果图 :
以上所述就是本文的全部内容了 , 希望能够对大家熟练掌握 Java 有所帮助。