package middle; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.awt.print.Book; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField; public class fiveinarow extends JFrame{ point pinit[][]=new point[20][20]; boolean initb=false; Boolean b[][]=new Boolean[20][20]; boolean tob=false; boolean toh=false; boolean closs=true; Boolean h[][]=new Boolean[20][20]; int piecex=0,piecey=0; Boolean win=false; String winername=""; int timeb=0,timeh=0,times=0; setpiece p=new setpiece(); store makeStore[]=new store[20*20];//大小根据网格数定 public fiveinarow() { init(); initstore(); initcloss(); addMouseListener(p); setSize(1200,950); setVisible(true); } private void initstore() { for (int i = 0; i < makeStore.length; i++) { makeStore[i]=new store(); } } protected void makestore() { for (int i = 0; i < makeStore.length; i++) { if (makeStore[i].stored) { } else { makeStore[i].tostore(b, h, tob, toh, pinit, timeb, timeh); System.out.println("第"+i+"个存储位置"); return; } } } protected void makeunstore() { for (int i =makeStore.length-1; i>=0; i--) { if (makeStore[i].stored) { //连接仓库数据 Boolean bmiddle[][]=makeStore[i].getB(); Boolean hmiddle[][]=makeStore[i].getH(); point pmiddle[][]=makeStore[i].getPinit(); for (int i1 = 0; i1 < pinit.length; i1++) { for (int n = 0; n < pinit.length; n++) { this.b[i1][n]=bmiddle[i1][n]; this.h[i1][n]=hmiddle[i1][n]; this.pinit[i1][n]=pmiddle[i1][n]; } } this.tob=makeStore[i].getTob(); this.toh=makeStore[i].getToh(); this.timeb=makeStore[i].getTimeb(); this.timeh=makeStore[i].getTimeh(); //断开仓库与栈中数据的连接 makeStore[i].stored=false; System.err.println("从第"+i+"个存储位置恢复"); win=false; repaint(); return; } } } private void initcloss() { addWindowListener(new WindowAdapter() { @Override public void windowActivated(WindowEvent e) { new Thread() { public void run() { while (closs) { try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } if (!win) { if (tob) {timeb++; } else { timeh++; } } repaint(); } } }.start(); } public void windowClosing(WindowEvent e) {//关闭启动的线程彻底关闭程序 closs=false; // TODO 自动生成的方法存根 } @Override public void windowClosed(WindowEvent e) { JOptionPane.showMessageDialog(null, "程序已完全退出,感谢你的使用,作者QQ:1587613421"); // TODO 自动生成的方法存根 } }); } public void init() { for (int xc = 0; xc<= pinit.length-1; xc++) { for (int yc = 0; yc <= pinit.length-1; yc++) { pinit[xc][yc]=new point(xc*45+20,yc*45+50); b[xc][yc]=false; h[xc][yc]=false; } } timeb =0; timeh=0; win=false; initb=true; repaint(); } public void paint(Graphics g) { if (true) { super.paint(g); } g.setColor(Color.orange); g.fillRect(0, 0, 900, 950); if (initb) { g.setColor(Color.black); for (int x = 0; x< pinit.length; x++) { for (int y = 0; y < pinit.length; y++) { if (x!=19) {g.drawLine(pinit[x][y].getX(), pinit[x][y].getY(),pinit[x+1][y].getX(), pinit[x+1][y].getY()); } if (y!=19) { g.drawLine(pinit[x][y].getX(), pinit[x][y].getY(),pinit[x][y+1].getX(), pinit[x][y+1].getY()); } } }} for (int x = 0; x< pinit.length; x++) { for (int y = 0; y < pinit.length; y++) { if (b[x][y]) { g.setColor(Color.BLACK); g.fillOval(pinit[x][y].getX()-15,pinit[x][y].getY()-15, 30, 30); } if (h[x][y]) { g.setColor(Color.white); g.fillOval(pinit[x][y].getX()-15,pinit[x][y].getY()-15, 30, 30); } } } g.setFont(new Font("华云彩文", Font.BOLD, 40)); g.setColor(new Color(0XFD9BEB, false)); if (tob) { g.drawString("轮到黑方", 930, 90); } else { g.setColor(new Color(0XADE483, false)); g.drawString("轮到白方", 930, 90); } g.setFont(new Font("微软雅黑",Font.BOLD,25)); g.setColor(Color.gray); if (tob) { g.drawString("黑方用时"+timeh, 930, 210); g.setColor(Color.red); g.drawString("白方用时"+timeb, 930, 180); } else { g.drawString("白方用时"+timeb, 930, 180); g.setColor(Color.red); g.drawString("黑方用时"+timeh, 930, 210); } g.setColor(Color.BLUE); g.drawString("本局总时长"+String.valueOf(timeb+timeh), 930, 240); g.setColor(new Color(153,153,255)); g.drawRect(970, 270, 100, 50); g.setColor(Color.black); g.drawString("悔棋", 980, 300); g.setColor(Color.gray); g.drawRect(970, 100, 100, 50); g.setColor(Color.green); g.setFont(new Font("微软雅黑", Font.BOLD, 25)); g.drawString("新游戏", 980, 130); if (win) { g.setFont(new Font("微软雅黑",Font.BOLD,80)); g.setColor(Color.red); g.drawString(winername, 450, 450); } } public static void main(String[] args) { // TODO 自动生成的方法存根 fiveinarow five=new fiveinarow(); five.setDefaultCloseOperation(DISPOSE_ON_CLOSE); } class setpiece implements MouseListener{ @Override public void mouseClicked(MouseEvent e) { piecex=Integer.valueOf((int) (Math.round((Double.valueOf(e.getX()-25))/45))); piecey=Integer.valueOf((int) (Math.round((Double.valueOf(e.getY()-45))/45))); if (piecex<20&&piecey<20&&!win) { if (checkisright.check(b, h, piecex, piecey)) { makestore(); if (tob) { b[piecex][piecey]=true; if (checkwin.check(b,piecex,piecey)) { win=true; //JOptionPane.showMessageDialog(fiveinarow.this, "黑子获胜"); winername="黑子获胜"; } toh=true; tob=false; } else { h[piecex][piecey]=true; if (checkwin.check(h,piecex,piecey)) { win=true; //JOptionPane.showMessageDialog(fiveinarow.this, "白子获胜"); winername="白子获胜"; } tob=true; toh=false; } repaint(); //System.out.println(checkwin.rightcheck(new Boolean[] {true,false,true})); } } // TODO 自动生成的方法存根 } @Override public void mousePressed(MouseEvent e) { // TODO 自动生成的方法存根 } @Override public void mouseReleased(MouseEvent e) { if (e.getX()<1070&&e.getX()>970&&e.getY()<150&&e.getY()>100) { init(); } if (e.getX()<1070&&e.getX()>970&&e.getY()<320&&e.getY()>270) { makeunstore(); System.out.println("请求悔棋"); } // TODO 自动生成的方法存根 } @Override public void mouseEntered(MouseEvent e) { // TODO 自动生成的方法存根 } @Override public void mouseExited(MouseEvent e) { // TODO 自动生成的方法存根 } } }
最近下载更多
12mmn5 LV1
5月28日
2385649653 LV7
2023年6月26日
激昂逸凡 LV1
2022年12月5日
小粥2333 LV1
2021年12月26日
无名氏111 LV33
2021年12月19日
Lunaticsky LV3
2021年12月7日
ewan007 LV30
2021年11月7日
qsyqa0 LV6
2021年9月5日
夜空中最亮的星 LV8
2021年6月25日
dengge123 LV13
2021年6月6日
最近浏览更多
yansunling LV1
11月6日
54ty1212
8月6日
暂无贡献等级
111111鱼仔 LV1
5月30日
12mmn5 LV1
5月28日
微信网友_6978686044131328 LV1
5月4日
王少波 LV5
4月6日
zhos0212 LV19
2月29日
yjjhggj
1月1日
暂无贡献等级
张晨荣 LV1
2023年12月19日
2386136609 LV1
2023年12月17日