java怎么实现简单五子棋小游戏
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章为大家展示了java怎么实现简单五子棋小游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。讲解五子棋,实际上就是用一个数组来实现的。没有其他很复杂的结
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
蓝思科技飞鸽互联网
科技服务与互联网
嘟嘟瓜互联网科技
美国互联网黑科技
中国最先进互联网科技公司
武汉健翔互联网络科技有限公司
科技类公司包括互联网吗
互联网新科技动漫ppt素材
烟台灵鸽互联网科技有限公司
21世纪互联网科技成就
四川互联网展示科技馆设计
互联网科技数字货币
郑州欣桑互联网科技有限公司
福仕德教育科技互联网
第三届互联网大会安防黑科技
北京品多多互联网科技有限公司
互联网科技大佬云集
广东猫王互联网科技有限公司电话
知域互联网科技有限公司官网
每日互联网科技新闻
互联网科技活动banner
A股互联网金融科技公司
互联网通讯科技
易通互联网络科技有限公司
以后互联网后是啥科技
现代互联网科技股
互联网保险科技创业
徐州市互联网科技有限公司
美国互联网科技公司
数字互联网科技有限公司