展开全部

我是把棋子放到2维数组里,1表示白旗,2表示黑棋,0表示空。

判断输赢的话,32313133353236313431303231363533e78988e69d8331333264646466只要判断数组有5个连续的数就行了,分为从上到下,从左到右,从左上到右下,从右上到左下判断。

我这个程序没有及时和围棋功能,不过你自己改一下应该可以的。。

-----------------------------------------

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

class mypanel extends Panel implements MouseListener

{

int chess[][] = new int[11][11];

boolean Is_Black_True;

mypanel()

{

Is_Black_True = true;

for(int i = 0;i < 11;i++)

{

for(int j = 0;j < 11;j++)

{

chess[i][j] = 0;

}

}

addMouseListener(this);

setBackground(Color.BLUE);

setBounds(0, 0, 360, 360);

setVisible(true);

}

public void mousePressed(MouseEvent e)

{

int x = e.getX();

int y = e.getY();

if(x < 25 || x > 330 + 25 ||y < 25 || y > 330+25)

{

return;

}

if(chess[x/30-1][y/30-1] != 0)

{

return;

}

if(Is_Black_True == true)

{

chess[x/30-1][y/30-1] = 1;

Is_Black_True = false;

repaint();

Justisewiner();

return;

}

if(Is_Black_True == false)

{

chess[x/30-1][y/30-1] = 2;

Is_Black_True = true;

repaint();

Justisewiner();

return;

}

}

void Drawline(Graphics g)

{

for(int i = 30;i <= 330;i += 30)

{

for(int j = 30;j <= 330; j+= 30)

{

g.setColor(Color.WHITE);

g.drawLine(i, j, i, 330);

}

}

for(int j = 30;j <= 330;j += 30)

{

g.setColor(Color.WHITE);

g.drawLine(30, j, 330, j);

}

}

void Drawchess(Graphics g)

{

for(int i = 0;i < 11;i++)

{

for(int j = 0;j < 11;j++)

{

if(chess[i][j] == 1)

{

g.setColor(Color.BLACK);

g.fillOval((i + 1) * 30 - 8, (j + 1) * 30 - 8, 16, 16);

}

if(chess[i][j] == 2)

{

g.setColor(Color.WHITE);

g.fillOval((i + 1) * 30 - 8, (j + 1) * 30 - 8, 16, 16);

}

}

}

}

void Justisewiner()

{

int black_count = 0;

int white_count = 0;

int i = 0;

for(i = 0;i < 11;i++)//横向判断

{

for(int j = 0;j < 11;j++)

{

if(chess[i][j] == 1)

{

black_count++;

if(black_count == 5)

{

JOptionPane.showMessageDialog(this, "黑棋胜利");

Clear_Chess();

return;

}

}

else

{

black_count = 0;

}

if(chess[i][j] == 2)

{

white_count++;

if(white_count == 5)

{

JOptionPane.showMessageDialog(this, "白棋胜利");

Clear_Chess();

return;

}

}

else

{

white_count = 0;

}

}

}

for(i = 0;i < 11;i++)//竖向判断

{

for(int j = 0;j < 11;j++)

{

if(chess[j][i] == 1)

{

black_count++;

if(black_count == 5)

{

JOptionPane.showMessageDialog(this, "黑棋胜利");

Clear_Chess();

return;

}

}

else

{

black_count = 0;

}

if(chess[j][i] == 2)

{

white_count++;

if(white_count == 5)

{

JOptionPane.showMessageDialog(this, "白棋胜利");

Clear_Chess();

return;

}

}

else

{

white_count = 0;

}

}

}

for(i = 0;i < 7;i++)//左向右斜判断

{

for(int j = 0;j < 7;j++)

{

for(int k = 0;k < 5;k++)

{

if(chess[i + k][j + k] == 1)

{

black_count++;

if(black_count == 5)

{

JOptionPane.showMessageDialog(this, "黑棋胜利");

Clear_Chess();

return;

}

}

else

{

black_count = 0;

}

if(chess[i + k][j + k] == 2)

{

white_count++;

if(white_count == 5)

{

JOptionPane.showMessageDialog(this, "白棋胜利");

Clear_Chess();

return;

}

}

else

{

white_count = 0;

}

}

}

}

for(i = 4;i < 11;i++)//右向左斜判断

{

for(int j = 6;j >= 0;j--)

{

for(int k = 0;k < 5;k++)

{

if(chess[i - k][j + k] == 1)

{

black_count++;

if(black_count == 5)

{

JOptionPane.showMessageDialog(this, "黑棋胜利");

Clear_Chess();

return;

}

}

else

{

black_count = 0;

}

if(chess[i - k][j + k] == 2)

{

white_count++;

if(white_count == 5)

{

JOptionPane.showMessageDialog(this, "白棋胜利");

Clear_Chess();

return;

}

}

else

{

white_count = 0;

}

}

}

}

}

void Clear_Chess()

{

for(int i=0;i<11;i++)

{

for(int j=0;j<11;j++)

{

chess[i][j]=0;

}

}

repaint();

}

public void paint(Graphics g)

{

Drawline(g);

Drawchess(g);

}

public void mouseExited(MouseEvent e){}

public void mouseEntered(MouseEvent e){}

public void mouseReleased(MouseEvent e){}

public void mouseClicked(MouseEvent e){}

}

class myframe extends Frame implements WindowListener

{

mypanel panel;

myframe()

{

setLayout(null);

panel = new mypanel();

add(panel);

panel.setBounds(0,23, 360, 360);

setTitle("单人版五子棋");

setBounds(200, 200, 360, 383);

setVisible(true);

addWindowListener(this);

}

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

public void windowDeactivated(WindowEvent e){}

public void windowActivated(WindowEvent e){}

public void windowOpened(WindowEvent e){}

public void windowClosed(WindowEvent e){}

public void windowIconified(WindowEvent e){}

public void windowDeiconified(WindowEvent e){}

}

public class mywindow

{

public static void main(String argc [])

{

myframe f = new myframe();

}

}

本回答由网友推荐

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

java五子棋用到的类_JAVA五子棋用到的知识点以及方法类有哪些?相关推荐

  1. java语言中实现键盘输入_Java程序设计中的键盘输入数据的方法分析

    1. 引言 高校中很多学校开设了Java语言程序设计课程,这是一门实践性很强的语言,在程序设计中经常需要从键盘随机输入所需要的数据,Java语言中的键盘输入数据没有像C语言给我们提供的scanf(), ...

  2. java二维数组添加数据_Java小白入门必懂知识点

    1.Java语言的特点 (1)Java语言是一种面向对象的编程语言 (2)简单.高效.稳定.安全性高 (3)Java语言是一种与平台无关的编程语言,因为其自身提供程序运行的解 释环境 (4)支持多线程 ...

  3. java的按钮点击事件_java处理按钮点击事件的方法

    不同的事件源可以产生不同类别的事件.例如,按钮可以发送一个ActionEvent对象,而窗口可以发送WindowEvent对象. AWT时间处理机制的概要: 1. 监听器对象是一个实现了特定监听器接口 ...

  4. java用构造方法定义book类_JAVA基础学习之路(三)类定义及构造方法

    类的定义及使用 一,类的定义 classBook {//定义一个类intprice;//定义一个属性intnum;public static int getMonney(int price, intn ...

  5. java 解压缩 工具类_Java实现的zip压缩及解压缩工具类示例

    本文实例讲述了Java实现的zip压缩及解压缩工具类.分享给大家供大家参考,具体如下: import java.io.BufferedInputStream; import java.io.Buffe ...

  6. java count 在哪一类里_java 5线程中 Semaphore信号灯,CyclicBarrier类,CountDownLatch计数器以及Exchanger类使用...

    先来讲解一下Semaphore信号灯的作用: 可以维护当前访问自身的线程个数,并提供了同步机制, 使用semaphore可以控制同时访问资源的线程个数 例如,实现一个文件允许的并发访问数. 请看下面的 ...

  7. java继承求三角形圆形面积_java用接口、多态、继承、类计算三角形和矩形周长及面积的方法...

    本文实例讲述了java用接口.多态.继承.类计算三角形和矩形周长及面积的方法.分享给大家供大家参考.具体如下: 定义接口规范: /** * @author vvv * @date 2013-8-10 ...

  8. java object 转实体类_JAVA怎么把object怎么转换成实体类

    2 第二步调:编写测试代码-利用net.sf.json.JSONObject进行转换. 2.1.起首成立一个实体类Student set和get本身生当作 public class Student { ...

  9. 没有上下文的java类_java – 这个上下文中没有任何一个超级类

    我正在尝试将一些实体发送到基于ejb的Web服务.这是我的Web服务客户端代码: package ejbserviceclient; import java.net.MalformedURLExcep ...

最新文章

  1. R语言all函数、any函数判断逻辑向量(logical vector)实战
  2. 【知乎热议】如何看待swin transformer成为ICCV2021的 best paper?
  3. SEO数据监控技巧都有哪些?
  4. 第七章——DMVs和DMFs(1)
  5. jdk8 字符串_在JDK 8中连接字符串
  6. wamp怎么安装mysql服务器_用wamp的mysq安装pythonmysql
  7. 计算机网络课程设计之电子邮件客户端程序设计与实现
  8. microsoft visual c++ 编译c语言,Microsoft Visual C++ 程序的部署方法
  9. 中国水溶性PVA薄膜行业市场供需与战略研究报告
  10. HttpClient那些事儿
  11. 图片服务器虚拟路径,springboot2.0图片上传至本地或服务器并配置虚拟路径的方法.pdf...
  12. 计算机毕业设计基于asp.net企业差旅管理系统
  13. java 项目启动后页面乱码_java生成的Html打开后展示乱码
  14. MySQL配置文件配置
  15. matlab 从 excel读取 日期_MATLAB一键记账它不香吗?
  16. 5个AIDA64激活密钥
  17. 《QTreeView+QAbstractItemModel自定义模型》:系列教程之三
  18. 计算机网络有什么部分组成,计算机网络有哪些组成部分和详细对比
  19. 爱的十个秘密--11.信任的力量
  20. 回溯——机器零件加工最优加工顺序问题

热门文章

  1. 【设置字符集】Win7 64位系统安装MySQL5.5.21图解教程
  2. 操作系统原理:全局页面置换算法、工作集页置换、常驻集页置换、抖动问题
  3. gdb调试时查看内存
  4. Ubuntu平台 Qt 5.x 安装方法
  5. 小明分享|sigmstar SSD201/SSD202 针对MIPI的LCD屏配置操作说明分享,更多Sigmastar相关技术文档及沟通讨论,可以给小明留言,小明邀请你进入我们的技术沟通群
  6. mysql里添加不了中文_为什么MySQL不能添加中文
  7. 大华web对接文档_分分钟了解Web接口测试
  8. 全志 添加外挂RTC Hym8563
  9. java怎么用return代替else_java – 从一个隐含或明确的“else”方法返回,还是用一个“return”语句返回?...
  10. haproxy mysql配置文件详解_HAProxy基础配置-haproxy的配置文件说明