该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

定义棋盘及相关算法,代码多,度娘不给换行。

package fivechessgame;

import java.awt.Graphics;import java.awt.Point;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.util.ArrayList;

import java.util.List;

import javax.swing.ImageIcon;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JOptionPane;

public class CBoard extends JPanelimplements MouseListener{

private static final long serialVersionUID = 123654798932145422L;

ImageIcon ic1 = new ImageIcon("image/chessboard.jpg");

ImageIcon ic2 = new ImageIcon("image/b.gif");

ImageIcon ic3 = new ImageIcon("image/w.gif");

private int[][] cb = new int[15][15];

List list = new ArrayList();

private int whoClick = 0;

private boolean gameOver = true;

JLabel jl = new JLabel();

public CBoard(){this.add(jl);

}

public void gameStart(){

jl.setText("请黑方落子");

gameOver=false;

setMouseListener();

repaint();

}

public void gameOver() {if(gameOver){JOptionPane.showMessageDialog(null,"游戏没有开始或者已经结束!","不能认输",JOptionPane.DEFAULT_OPTION);}else if(list.size()>8){if(whoClick==1){JOptionPane.showMessageDialog(null,"白方认输","认输了",JOptionPane.DEFAULT_OPTION);}else if(whoClick==2){JOptionPane.showMessageDialog(null,"黑方认输","认输了",JOptionPane.DEFAULT_OPTION);}gameOver = true;cb = new int[15][15];list = new ArrayList();whoClick = 0;this.setMouseListener();}else if(list.size()<9){JOptionPane.showMessageDialog(null,"落子不足四粒!","不能认输",JOptionPane.DEFAULT_OPTION);}}

public void retract() {if(gameOver){JOptionPane.showMessageDialog(null,"游戏没有开始或者已经结束!","不能悔棋",JOptionPane.DEFAULT_OPTION);}else if(list.isEmpty()){JOptionPane.showMessageDialog(null,"还没有落字!","不能悔棋",JOptionPane.DEFAULT_OPTION);}if(!list.isEmpty()){CPiece cp = list.get(list.size()-1);list.remove(cp);whoClick = cb[cp.getX()][cp.getY()]-1;if(whoClick==0){whoClick = 2;}cb[cp.getX()][cp.getY()] = 0;if("请黑方落子".equals(jl.getText())){jl.setText("请白方落子");}else{jl.setText("请黑方落子");}repaint();}}public void setMouseListener(){if(!gameOver){this.addMouseListener(this);}else {this.removeMouseListener(this);}}

@Overrideprotected void paintComponent(Graphics g) {g.drawImage(ic1.getImage(),0,0,null);if(whoClick!=0){for(int i=0;i<15;i++){for(int j=0;j<15;j++){int m = cb[i][j];if(m==1){//画黑棋g.drawImage(ic2.getImage(),i*35+4, j*35+4, null);}else if(m==2){//画白棋g.drawImage(ic3.getImage(),i*35+4, j*35+4, null);}}}}}

public void mouseClicked(MouseEvent e) {Point p = e.getPoint(); int x = (int)p.getX()/35;int y = (int)p.getY()/35;if(cb[x][y]==0){whoClick++;if(whoClick>2)whoClick=1;if(whoClick==1){cb[x][y]=1;jl.setText("请白方落子");}else{cb[x][y]=2;jl.setText("请黑方落子");}CPiece cp = new CPiece(x,y);list.add(cp);repaint();int whoWin = judge(whoClick,x,y);if(whoWin!=0){String win="";if(whoWin==1){win = "执黑棋者胜!";}else{win = "执白棋者胜!";}JOptionPane.showMessageDialog(null,win,"赢了!",JOptionPane.DEFAULT_OPTION);gameOver = true;cb = new int[15][15];list = new ArrayList();whoClick = 0;this.setMouseListener();}}}

public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public int judge(int whoWin,int i,int j){int count = 0;int x = i, y = j;//做横向判断while(x>0){x--;if(cb[x][y]==whoWin){count++;if(count==4){return whoWin;}}else{break;}}x=i;while(x<14){x++;if(cb[x][y]==whoWin){count++;if(count==4){return whoWin;}}else{break;}}count = 0;y=j;x=i;//做纵向判断while(y>0){y--;if(cb[x][y]==whoWin){count++;if(count==4){return whoWin;}}else{break;}}y=j;while(y<14){y++;if(cb[x][y]==whoWin){count++;if(count==4){return whoWin;}}else{break;}}//左斜判断x=i;y=j;count = 0;while(x>0&&y>0){x--;y--;if(cb[x][y]==whoWin){count++;if(count==4){return whoWin;}}else{break;}}x=i;y=j;while(x<14&&y<14){x++;y++;if(cb[x][y]==whoWin){count++;if(count==4){return whoWin;}}else{break;}}//右斜判断x=i;y=j;count = 0;while(x>0&&y<14){x--;y++;if(cb[x][y]==whoWin){count++;if(count==4){return whoWin;}}else{break;}}x=i;y=j;while(x<14&&y>0){x++;y--;if(cb[x][y]==whoWin){count++;if(count==4){return whoWin;}}else{break;}}return 0;}}

五子棋java百度贴吧_五子棋单机版相关推荐

  1. Java程序验证五子棋先手必胜,五子棋怎样下最厉害_五子棋先手必胜开局图

    五子棋是很好的益智游戏,那么五子棋怎样下才是最厉害的呢?小编整理了五子棋的先手必胜开局图,希望可以帮助大家! 五子棋先手必胜开局图 五子棋阵法(一)八卦阵1 五子棋玩儿家们经常提到"八卦阵& ...

  2. 五子棋java百度文库_JAVA课程设计 五子棋(内附完整代码).doc

    JAVA课程设计 五子棋(内附完整代码) JAVA课程设计 设计题目:五子棋游戏 简要的介绍五子棋 五子棋的起源 五子棋,又被称为"连五子.五子连.串珠.五目.五目碰.五格.五石.五法.五联 ...

  3. 五子棋 java 棋盘变大_【java求助!】我的五子棋棋盘怎么加边框~!!??

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 public ChessClient1(String host){ ticTacToeHost=host; displayArea=new JTextAr ...

  4. java 百度地图地址解析_百度地图Java地址解析和经纬度解析

    import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.ne ...

  5. 博学谷java百度网盘_博学谷javaee就业班2020百度云

    线程在面试中已经是常客了,也是我们必备的知识点,关于线程,问的最多的便是线程是什么?为什么使用多线程?多线程的示例以及解决方案?线程池是什么? 一.线程是什么? Thread类中有这样的明确定义:线程 ...

  6. 博学谷java百度网盘_博学谷javaee在线就业班2020网盘

    一:为什么要学多线程 应付面试 :多线程几乎是面试中必问的题,所以掌握一定的基础知识是必须的. 了解并发编程:实际工作中很少写多线程的代码,这部分代码一般都被人封装起来了,在业务中使用多线程的机会也不 ...

  7. java从入门到精通陈丹丹_五子棋设计报告.doc

    五子棋设计报告.doc PAGE 30 JAVA课程设计 专 业: 数字媒体 课程名称: Java语言程序设计 课题名称: 五子棋 指导老师: 刘嘉欣 学 号: 姓 名: 贺赓晔 学 号: 姓 名: ...

  8. 五子棋 java 课设,五子棋java课程设计

    五子棋java课程设计 目目 录录 一.课程设计任务及要求 1 二.需求分析. 1 2.1 棋盘板块 .1 2.2 聊天板块 .1 2.3 ChatSever .1 2.4 编译环境 .1 2.5 参 ...

  9. Java实践(十一)——五子棋

    一.实践目标: 1.掌握JavaGUI界面设计 2.掌握鼠标事件的监听(MouseListener,MouseMotionListener) 二.实践内容: 设计一个简单的五子棋程序,能够实现五子棋下 ...

最新文章

  1. 设计模式----模板方法模式UML和实现代码
  2. Redis的安装及使用
  3. opencv orb
  4. 成功解决VS编译环境下C++语言出现的异常提示:烫烫烫烫烫烫烫烫烫烫
  5. 外国人工作证延期、办理外国人居留许可延期
  6. 《SQL必知必会(第4版)》 02 检索数据
  7. 微信小程序 页面如何自动滚动到底部
  8. elasticsearch aggregations_elasticsearch 笔记三 之聚合查询之分组计数、平均数、最大值、script、最小值、总和...
  9. python课程开课吧怎么样-律所:我们更想招这样的人……
  10. 怎么确认mysql正确安装_怎么确认mysql是否安装好了
  11. oracle的odbc源配置文件,odbc数据源配置oracle odbc driver configuration教程
  12. ubuntu code::blocks 汉化(附汉化包)
  13. cd linux如何连接wifi,cdlinux万能无线系统使用教程
  14. 【python】52周存钱法
  15. Java 2.2(计算圆柱的体积)编写程序,读入圆柱体的半径和高,并使用下列公式计算圆柱体的体积:
  16. Xman的东西当然值钱了。每1单位高度的植物,就可以卖2美元,把减掉的植物都卖掉,就可以弥补罚单的损失了。你帮Xman计算一下一共可以卖多少钱。
  17. swift实现python中的spicy.signal.find_peaks
  18. 前端开发入门 --摘自慕克网大漠穷秋
  19. 合规安全大考核:移动应用安全策略全盘点
  20. 年轻不要停止奋斗的脚步

热门文章

  1. 装饰器模式(Decorator Pattern)
  2. 高性能 Go 日志库 zap 设计与实现
  3. 用三国杀讲分布式算法,太舒适了吧?
  4. GitHub 标星 119K+!这些神器仅需一行代码即可下载全网视频!
  5. 一年翻 3 倍,装机量 6 亿台的物联网操作系统又放大招!
  6. B 站 Up 主自制秃头生成器,圆你秃头梦想可好?
  7. 如何仅用300行代码完成spring基本框架?
  8. 华为副总裁回应应用删除用户图片;美国拟允许华为参与 5G 标准建设;Firefox 76.0 发布​ | 极客头条...
  9. 到 Google 面试去!开发者必读的避坑指南
  10. 英特尔首推异构编程神器 oneAPI,可让程序员少加班!