java五子棋在线对战

您所在的位置:网站首页 五子棋黑棋必赢套路 java五子棋在线对战

java五子棋在线对战

2023-04-23 03:20| 来源: 网络整理| 查看: 265

java五子棋在线对战_五子棋双人联机手机策略对战小游戏 思创斯忠实用户-ss • 2023年4月21日 20:15 • Java

java五子棋在线对战_五子棋双人联机手机策略对战小游戏大家好,今天用swing技术写一个单机版的五子棋对战小游戏,文中示例思路清晰、代码完整,适合Java初学者尝试实战,供大家参考。

大家好,我是你的好朋友思创斯。今天说一说java五子棋在线对战_五子棋双人联机手机策略对战小游戏,希望您对编程的造诣更进一步.

007aec030ace45f49140c114e299a499.png

 个人简介

👨🏻‍💻个人主页:陈橘又青

🏃🏻‍♂️博客记录心情,代码编写人生。

🌟如果文章对你有用,麻烦关注点赞收藏走一波,感谢支持!

🌱欢迎订阅我的专栏:

✍️【Java进阶之路】带你入门Java,从0到1。

🤳🏻【Java全栈编程】带你项目实战,掌握核心。

前言

大家好,今天用swing技术写一个单机版的五子棋对战小游戏,文中示例思路清晰、代码完整,适合Java初学者尝试实战,供大家参考。

效果展示

d9f65d51c0f64e76ac455419c83a92e3.png

目录

效果展示

一、游戏界面

二、悔棋与重开功能

项目介绍

总体需求

实现过程

代码展示

主框架

棋子类

棋盘类

项目结构

总结

效果展示 一、游戏界面 0c8ef08d320c4128954c66b729d7da12.png 二、悔棋与重开功能

569065c5f28d41e68e8ea52706f21f2b.png

项目介绍

五子棋是一种两人对弈的纯策略型棋类游戏,亦称串珠连,五子是中国民间非常熟知的一个古老棋种,它因操作简单、逻辑性强,深受喜爱,本项目基于Java技术,开发了一个操作简单、界面简洁、功能较完整的“五子棋”游戏。通过本游戏的开发,达到初学者学习和熟悉软件开发流程的目的。

总体需求

本程序主要完成五子棋游戏的简单操作,用户通过鼠标完成游戏过程。需要满足以下几点要求:

1.实现五子棋简易窗口界面。 2.实现黑白棋轮流下棋功能。 3.实现自动判断获胜方功能。 4.实现悔棋与重开游戏功能。

实现过程

1.绘制窗体对象。

2.UI设计(包括游戏区域、黑白棋子、按钮和标题区域)。

3.使用鼠标监听事件实现下棋。

4.连成五子判定获胜的实现。

代码展示 主框架

在主框架里有面板对象和两个按钮对象,分别是重新开始游戏按钮,悔棋按钮。还设置一个按钮事件类,用来监听两个按钮,并作出相应的动作,代码如下:

import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class ChessJFrame extends JFrame { private ChessBord chessbord;//声明一个棋盘对象 private Panel tool; //声明一个面板对象 private Button StartButton;//声明开始按钮 private Button BackButton;//声明悔棋按钮 private Button exitButton;//声明退出按钮 public ChessJFrame() {//构造函数 setTitle("单机版五子棋");//设置标题 MyButtonLister mb=new MyButtonLister();//按钮事件处理对象 tool=new Panel();//面板对象 chessbord=new ChessBord();//棋盘对象 StartButton=new Button("Reopen");//设置开始按钮 BackButton=new Button("Regret");//设置悔棋按钮 //exitButton=new Button("EXIT");//设置退出游戏按钮 tool.setLayout(new FlowLayout(FlowLayout.CENTER ));//流式布局 tool.add(StartButton); tool.add(BackButton); // tool.add(exitButton);//将三个按钮添加到面板对象 StartButton.addActionListener(mb); BackButton.addActionListener(mb); // exitButton.addActionListener(mb);//将三个按钮添加到事件监听 add(tool,BorderLayout.SOUTH);//按钮所在的位置 add(chessbord);//添加棋盘对象 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭 pack();//自适应 } private class MyButtonLister implements ActionListener{ //按钮处理事件类 @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Object obj=e.getSource();//获取事件源 if(obj==StartButton) {//事件源是重新开始按钮 System.out.println("重新开始"); chessbord.restartGame(); } else if(obj==BackButton) {//事件源是悔棋按钮 System.out.println("悔棋!"); chessbord.goback(); } else if(obj==exitButton) {//事件源是退出按钮 System.exit(0); } } } public static void main(String[] args) { ChessJFrame jf=new ChessJFrame();//声明框架对象 jf.setLocationRelativeTo(null);//居中显示 jf.setVisible(true);//设置为可见 } }

是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!

java五子棋在线对战_五子棋双人联机手机策略对战小游戏 为防止网络爬虫,请关注公众号回复”口令” 激活idea 激活CLion DataGrip DataSpell dotCover dotMemory dotTrace GoLand PhpStorm PyCharm ReSharper ReShaC++ Rider RubyMine WebStorm 全家桶 刷新

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…

棋子类

棋子类里有棋子的坐标,半径和颜色;还有棋子的构造函数。代码如下:

import java.awt.Color; public class Chess { private int x;//棋子的x坐标索引 private int y;//棋子的y坐标索引 private Color color;//棋子颜色 public static int DIAMETER=30;//直径 public Chess(int x,int y,Color color){//棋子构造函数 this.x=x; this.y=y; this.color=color; } public int getX() { return x; } public int getY() { return y; } public Color getColor() { return color; } } 棋盘类

我们要对棋盘的边距,网格的距离进行赋值,设定棋盘的初始状态,如默认黑子先下,定义一个棋子类数组,来保存棋子对象,再定义一个字符串二维数组函数来保存颜色,用来判断输赢,用匿名内部类来处理当棋子在面板上移动时的一些状态。

再对下棋时鼠标按下时的动作事件类进行解析,当在网格上下棋时,判断是否在棋盘内和判断网格上有没有棋子,当棋子在棋盘内并且网格上没有棋子,我们就开始画棋子,将棋子对象和颜色保存,接下来判断是否胜利,判断棋盘是否下满,如果没有继续下棋。

使用函数paintComponent来对棋盘和棋子进行画图,对棋子进行绘图时,将最后一个棋子设为红色。

最后就是判断棋子输赢的函数win,用字符串数组保存的棋子的颜色来进行判断所在行和列有没有五个棋子相连,判断撇和捺行的棋子有没有五个相连的,如果有则某位棋子胜利。代码如下:

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ChessBord extends JPanel implements MouseListener{//继承面板类和鼠标事件接口 public static int MARGIN=30;//定义边距 public static int ROWS=15;//定义行数 public static int COLS=15;//定义列数 public static int GRID_SPAN=35;//网格间距 Chess[] chessList=new Chess[(ROWS+1)*(COLS+1)];//定义一个棋子数组 String[][] board=new String[MARGIN*2+GRID_SPAN*COLS][MARGIN*2+GRID_SPAN*COLS];//声明一个字符串数组,用来判断输赢 int chessCount;//棋子数目 int xindex,yindex;//棋子的坐标索引 boolean start=true;//开始默认黑子先下 boolean GameOver=false;//定义是否游戏结束 public ChessBord() {//棋盘类构造函数 setBackground(Color.LIGHT_GRAY);//设置背景颜色 addMouseListener(this);//将棋盘类添加到鼠标事件监听器 addMouseMotionListener(new MouseMotionListener() {//匿名内部类 @Override public void mouseMoved(MouseEvent e) {//根据鼠标的移动所在的坐标来设置鼠标光标形状 int x1=(e.getX()-MARGIN+GRID_SPAN/2)/GRID_SPAN;//对鼠标光标的x坐标进行转换 int y1=(e.getY()-MARGIN+GRID_SPAN/2)/GRID_SPAN;//对鼠标光标的y坐标进行转换 if(x1ROWS||y1COLS||GameOver||findchess(x1, y1)) { setCursor(new Cursor(Cursor.DEFAULT_CURSOR));//设置鼠标光标为默认形状 }else { setCursor(new Cursor(Cursor.HAND_CURSOR));//设置鼠标光标为手型 } } @Override public void mouseDragged(MouseEvent e) { } }); for(int i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3