项目设计-----五子棋
一、团队成员
组长:郭瀚文 202203010057
组员:关乾春 202203010058 邓国岩 202203010059
二、主要内容
项目完整代码:https://gitee.com/memoryee/gobang
一个简易的五子棋游戏,能够实现离线和联网对战。
离线模式能够支持本地双人对战。
联网模式需要用户登录并等待服务器匹配对手
三、简介
1、设计目标
通过socket编程,GUI设计,mysql等技术的学习,来实现一个联网的多人五子棋小游戏
2、实现技术
socket编程,GUI设计,mysql
3、开发环境
java
4、功能特点
能够在本地实现双人对战
同时也能通过服务器联网实现异地对战
四、功能介绍
1、离线模式
(1)落子
通过二维数组存储棋子在棋盘上的位置,在绘制棋盘,实现落子的功能
代码如下:
//在Mouse类中,通过重写mosueclicked方法来获取鼠标点击位置与棋盘格子的关系
public void mouseClicked(MouseEvent e) {
int x = e.getX();// 鼠标点击处获取x、y坐标
int y = e.getY();
// 获取落子坐标,此处进行判断让获取的坐标位于棋盘线交点处
if ((x - x0) % size > size / 2) {
x1 = (x - x0) / size + 1;
}
else if ((x - x0) % size <= size / 2) {
x1 = (x - x0) / size;
}
if ((y - y0) % size > size / 2) {
y1 = (y - y0) / size + 1;
}
else if ((y - y0) % size <= size / 2) {
y1 = (y - y0) / size;
}
// System.out.println(y1 + " " + x1);
// System.out.println(chessArr[y1][x1]);
//判断本地游戏是否开始
if (start) {
// 判断棋子是否会越出棋盘界
if (0 <= x1 && x1 <= 14 && 0 <= y1 && y1 <= 14) {
// 判断只有空位置才能下棋
if (chessArr[y1][x1] == 0) {
if (count % 2 == 0) {
//static1.black.paintIcon(chessPanel, g, x1 * size - 25 + x0, y1 * size - 25 + y0);
chessArr[y1][x1] = 1;// 记录棋盘上每颗棋子的颜色,黑色记1,白色记-1
chesses[count++] = new Chess(x1, y1, 1);
}
else {
//static1.white.paintIcon(chessPanel, g, x1 * size - 25 + x0, y1 * size - 25 + y0);
chessArr[y1][x1] = -1;
chesses[count++] = new Chess(x1, y1, -1