java怎么实现简单五子棋小游戏
发表于:2025-11-18 作者:千家信息网编辑
千家信息网最后更新 2025年11月18日,本篇文章为大家展示了java怎么实现简单五子棋小游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。讲解五子棋,实际上就是用一个数组来实现的。没有其他很复杂的结
千家信息网最后更新 2025年11月18日java怎么实现简单五子棋小游戏
本篇文章为大家展示了java怎么实现简单五子棋小游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
讲解
五子棋,实际上就是用一个数组来实现的。没有其他很复杂的结构。
首先我们制作五子棋,先要有一个棋盘。
public void setGraphics(Graphics g){ this.g=g; for(int i=0;i<11;i++){ g.drawLine(100+Size*i, 100, 100+Size*i, 500); g.drawLine(100, 100+Size*i, 500, 100+Size*i); } for(int i=0;i<11;i++){ for(int j=0;j<11;j++){ chessboard[i][j]=0; } } }此时我们在画布上制作了一个棋盘,图示如下:

接下来我们要实现的就是如何去放置棋子了。
放置棋子大体思路就是,当我们点击一个网格点的时候,可以出现一个白棋或者黑棋,所以我们在这里需要学会如何画一个椭圆。
// 绘制一个椭圆 g.drawOval(a-Size/4, b-Size/4, Size/2, Size/2);//修改左上角的坐标,使画好的圆恰好在以网格点所在的位置上// 填充一个椭圆 g.setColor(Color.BLACK); g.fillOval(a-Size/4, b-Size/4, Size/2, Size/2);

此时,点击某一个位置就会出现一个黑棋子。这里我们需要注意的是,我们不可能要求用户每一次的点击都非常准确,所以我们必须设定一个范围,只要这个范围内的点击,我们都默认点击到了这个网格上面。因为网格大小为40,所以我们以一个网格点位中心,向上下左右移动20长度的范围都属于这个点。
白棋的设置也一样
if(number==0){ // 绘制一个椭圆 g.drawOval(a-Size/4, b-Size/4, Size/2, Size/2);//修改左上角的坐标,使画好的圆恰好在以网格点所在的位置上 // 填充一个椭圆 g.setColor(Color.BLACK); g.fillOval(a-Size/4, b-Size/4, Size/2, Size/2); number++; } else{ g.drawOval(a-Size/4, b-Size/4, Size/2, Size/2); // 填充一个椭圆 g.setColor(Color.WHITE); g.fillOval(a-Size/4, b-Size/4, Size/2, Size/2); number--; }现在我们看一下我们的棋盘,白棋和黑棋都可以放到棋盘上面了,但是依旧存在一个问题,当我们在同一位置点击两次后会发生覆盖现象。如何解决?
我们只需要设置一个数组来记录这个位置是否放置了棋子就好了
完整代码
package game;import java.awt.Graphics;import javax.swing.JFrame;public class ShowUI { public void Draw(){ //设置格子的大小 JFrame drawframe=new JFrame();//创建一个窗体 drawframe.setSize(1000,600);//设置窗体大小 drawframe.setLocationRelativeTo(null);//设置相对位置 drawframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体操作 //创建监听器对象 DrawListener draw = new DrawListener(); drawframe.addMouseListener(draw); drawframe.setVisible(true);//设置窗体可见 try { Thread.sleep(566); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } Graphics g = drawframe.getGraphics(); //设置画布 draw.setGraphics(g); } public static void main(String[] args) { // TODO Auto-generated method stub ShowUI a=new ShowUI(); a.Draw();//引用对象 }}package game;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.RenderingHints;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;public class DrawListener implements MouseListener{ Graphics g; public int Start_X=50; public int Start_Y=50; public int Size=40; public int number=0; public int [][]chessboard=new int[11][11]; public void setGraphics(Graphics g){ this.g=g; for(int i=0;i<11;i++){ g.drawLine(100+Size*i, 100, 100+Size*i, 500); g.drawLine(100, 100+Size*i, 500, 100+Size*i); } for(int i=0;i<11;i++){ for(int j=0;j<11;j++){ chessboard[i][j]=0; } } } /*public void drawOval(Graphics g) { // Graphics2D g2d = (Graphics2D) g.create(); //g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); //g.setColor(Color.RED); // 1. 绘制一个圆: 圆的外切矩形 左上角坐标为(0, 0), 宽高为100 g.drawOval(0, 0, 100, 100); g.setColor(Color.GRAY); // 2. 填充一个椭圆 g.fillOval(120, 100, 100, 150); g.dispose(); }*/ /** * Invoked when the mouse button has been clicked (pressed * and released) on a component. */ public void mouseClicked(MouseEvent e){ int countx=e.getX(); int county=e.getY(); int Size=40; //起始点为(100,100) //终止点为(500,500) //System.out.println(countx); //System.out.println(county); int a=0; int b=0;//这里是修改点击显示的位置,让最后得到的点在角落上 for(int i=0;i<11;i++){ if(countx>=(100+Size*i-(Size/2))&&countx<(100+Size*i+(Size/2))){ a=100+Size*i; //System.out.println(a); } if(county>=(100+Size*i-(Size/2))&&county<(100+Size*i+(Size/2))){ b=100+Size*i; //System.out.println(b); } } if(a!=0&&b!=0){ int flag1=0; int flag2=0; flag1=(a-100)/Size; flag2=(b-100)/Size; if(chessboard[flag1][flag2]==0){//判断这个地方是否已经放置了一个点 if(number==0){ // 绘制一个椭圆 g.drawOval(a-Size/4, b-Size/4, Size/2, Size/2);//修改左上角的坐标,使画好的圆恰好在以网格点所在的位置上 // 填充一个椭圆 g.setColor(Color.BLACK); g.fillOval(a-Size/4, b-Size/4, Size/2, Size/2); number++; } else{ g.drawOval(a-Size/4, b-Size/4, Size/2, Size/2); // 填充一个椭圆 g.setColor(Color.WHITE); g.fillOval(a-Size/4, b-Size/4, Size/2, Size/2); number--; } chessboard[flag1][flag2]=1;//没放置,那么我们需要在放置后 } else{ System.out.println("此处已经放置了棋子"); } } } /** * Invoked when a mouse button has been pressed on a component. *///点击鼠标 public void mousePressed(MouseEvent e){ } /** * Invoked when a mouse button has been released on a component. *///释放鼠标 public void mouseReleased(MouseEvent e){ } /** * Invoked when the mouse enters a component. */ public void mouseEntered(MouseEvent e){ } /** * Invoked when the mouse exits a component. */ public void mouseExited(MouseEvent e){ }}上述内容就是java怎么实现简单五子棋小游戏,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
椭圆
位置
网格
棋子
五子棋
五子
坐标
就是
左上角
棋盘
窗体
大小
所在
白棋
小游戏
内容
对象
技能
数组
画布
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
章炜巨人网络安全开发
excal连接数据库
软件开发授权号
如何解决暴雪服务器排队
如何落实电力网络安全基础管理
上海java软件开发哪家好
曲沃天气预报软件开发
服务器智能卡
电商软件开发问题和解决方案
移动互联网和软件开发哪个好
利用互联网科技助力扶贫
java数据库访问异常
上传到服务器的文件打不开
车位管理系统数据库
数据库怎么计数
网络安全哪个专业最好
关于网络安全的案由
系统 数据库
网络安全话题英文
使用create创建数据库
软件开发的效率
360为中国网络安全做的事
长悦网络技术有限公司
大学生网络安全宣传大使
兴利科技互联网公司
大兴区软件开发诚信合作
苹果服务器修改端口号
vb登录框连接数据库密码
网络安全作品说明
奉贤区自动网络技术开发价目表