java五子棋用到的类_JAVA五子棋用到的知识点以及方法类有哪些?
展开全部
我是把棋子放到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五子棋用到的知识点以及方法类有哪些?相关推荐
- java语言中实现键盘输入_Java程序设计中的键盘输入数据的方法分析
1. 引言 高校中很多学校开设了Java语言程序设计课程,这是一门实践性很强的语言,在程序设计中经常需要从键盘随机输入所需要的数据,Java语言中的键盘输入数据没有像C语言给我们提供的scanf(), ...
- java二维数组添加数据_Java小白入门必懂知识点
1.Java语言的特点 (1)Java语言是一种面向对象的编程语言 (2)简单.高效.稳定.安全性高 (3)Java语言是一种与平台无关的编程语言,因为其自身提供程序运行的解 释环境 (4)支持多线程 ...
- java的按钮点击事件_java处理按钮点击事件的方法
不同的事件源可以产生不同类别的事件.例如,按钮可以发送一个ActionEvent对象,而窗口可以发送WindowEvent对象. AWT时间处理机制的概要: 1. 监听器对象是一个实现了特定监听器接口 ...
- java用构造方法定义book类_JAVA基础学习之路(三)类定义及构造方法
类的定义及使用 一,类的定义 classBook {//定义一个类intprice;//定义一个属性intnum;public static int getMonney(int price, intn ...
- java 解压缩 工具类_Java实现的zip压缩及解压缩工具类示例
本文实例讲述了Java实现的zip压缩及解压缩工具类.分享给大家供大家参考,具体如下: import java.io.BufferedInputStream; import java.io.Buffe ...
- java count 在哪一类里_java 5线程中 Semaphore信号灯,CyclicBarrier类,CountDownLatch计数器以及Exchanger类使用...
先来讲解一下Semaphore信号灯的作用: 可以维护当前访问自身的线程个数,并提供了同步机制, 使用semaphore可以控制同时访问资源的线程个数 例如,实现一个文件允许的并发访问数. 请看下面的 ...
- java继承求三角形圆形面积_java用接口、多态、继承、类计算三角形和矩形周长及面积的方法...
本文实例讲述了java用接口.多态.继承.类计算三角形和矩形周长及面积的方法.分享给大家供大家参考.具体如下: 定义接口规范: /** * @author vvv * @date 2013-8-10 ...
- java object 转实体类_JAVA怎么把object怎么转换成实体类
2 第二步调:编写测试代码-利用net.sf.json.JSONObject进行转换. 2.1.起首成立一个实体类Student set和get本身生当作 public class Student { ...
- 没有上下文的java类_java – 这个上下文中没有任何一个超级类
我正在尝试将一些实体发送到基于ejb的Web服务.这是我的Web服务客户端代码: package ejbserviceclient; import java.net.MalformedURLExcep ...
最新文章
- R语言all函数、any函数判断逻辑向量(logical vector)实战
- 【知乎热议】如何看待swin transformer成为ICCV2021的 best paper?
- SEO数据监控技巧都有哪些?
- 第七章——DMVs和DMFs(1)
- jdk8 字符串_在JDK 8中连接字符串
- wamp怎么安装mysql服务器_用wamp的mysq安装pythonmysql
- 计算机网络课程设计之电子邮件客户端程序设计与实现
- microsoft visual c++ 编译c语言,Microsoft Visual C++ 程序的部署方法
- 中国水溶性PVA薄膜行业市场供需与战略研究报告
- HttpClient那些事儿
- 图片服务器虚拟路径,springboot2.0图片上传至本地或服务器并配置虚拟路径的方法.pdf...
- 计算机毕业设计基于asp.net企业差旅管理系统
- java 项目启动后页面乱码_java生成的Html打开后展示乱码
- MySQL配置文件配置
- matlab 从 excel读取 日期_MATLAB一键记账它不香吗?
- 5个AIDA64激活密钥
- 《QTreeView+QAbstractItemModel自定义模型》:系列教程之三
- 计算机网络有什么部分组成,计算机网络有哪些组成部分和详细对比
- 爱的十个秘密--11.信任的力量
- 回溯——机器零件加工最优加工顺序问题
热门文章
- 【设置字符集】Win7 64位系统安装MySQL5.5.21图解教程
- 操作系统原理:全局页面置换算法、工作集页置换、常驻集页置换、抖动问题
- gdb调试时查看内存
- Ubuntu平台 Qt 5.x 安装方法
- 小明分享|sigmstar SSD201/SSD202 针对MIPI的LCD屏配置操作说明分享,更多Sigmastar相关技术文档及沟通讨论,可以给小明留言,小明邀请你进入我们的技术沟通群
- mysql里添加不了中文_为什么MySQL不能添加中文
- 大华web对接文档_分分钟了解Web接口测试
- 全志 添加外挂RTC Hym8563
- java怎么用return代替else_java – 从一个隐含或明确的“else”方法返回,还是用一个“return”语句返回?...
- haproxy mysql配置文件详解_HAProxy基础配置-haproxy的配置文件说明