网络五子棋游戏

题目:网络五子棋游戏

目的:

  • 熟练掌握基本网络编程技术
  • 掌握Swing图形用户界面编程
  • 掌握多线程编程的基本原理,能使用多线程设计服务器端程序
  • 培养独立查找资料,解决问题的能力

任务:

实现网络五子棋游戏

  • 服务器端为多线程,当判断有偶数个用户连接时,方可开始游戏。
  • 先连接的客户执黑棋,先下。另一客户执白棋。
  • 双方交替下棋,由服务器端程序判断客户本次下棋步骤是否有效,仅将有效的下棋步骤传递给双方。
  • 客户端程序负责本地下棋界面的显示工作和与服务器通信,并处理相应的鼠标事件。
  • 下棋胜负由客户端自行判定。提供客户退出按钮,点击按钮,将退出游戏。

选作部分

  • 由服务器端程序判定游戏胜利方,并终止游戏,向双方显示游戏胜利者信息。
  • 提供玩家注册功能,并保存该玩家胜负局数信息、等级、中途逃逸次数等信息。
  • 游戏开始时,向双方显示对方玩家等级、逃逸次数等基本信息,玩家可选择是否继续和对手的游戏。

思路:

开发工具

  • JDK1.8 + IntelliJ IDEA

界面设计

  • 界面设计采用了空布局,自由放置组件位置。

  • 在游戏的初始界面创建“加入游戏、创建游戏、退出游戏”三个按钮,点击不同的按钮分别会触发不同的事件。

  • (点击“加入游戏”就会要求我们输入需要加入的IP地址,输入后即可加入他人在对应IP地址所创建的房间;点击“创建游戏”就会查找本地IP地址然后通过可用的端口创建一个棋盘界面,等待其他玩家加入;点击“退出游戏”则直接关闭窗口。)

  • 棋盘界面的标题处会显示该玩家的主机IP,方便其他玩家通过该IP地址加入游戏。

  • 界面左边放置棋盘,右边放置计时器和“认输、求和、悔棋”三个按钮。

  • 棋盘通过采用paint方法绘制了一个横竖15条线的棋盘,线间距为35,棋子大小为30。

逻辑设计

  • 程序创建好界面并通过TCP建立连接之后,玩家就可以在棋盘上进行对战了。

  • 棋盘本质上就是一个矩阵,里面用数字表示各个棋子,通过读取这些坐标来把棋子表示到棋盘上。

  • 判断胜负的逻辑则是通过遍历该矩阵,每读取到一个棋子就往右、右下、左下、下连续读取,能读取到连续的五个棋子则判断胜利。

  • 还有悔棋、求和、认输的实现,悔棋与求和操作需要得到对方的同意,对方同意之后就可以进行悔棋或求和操作,如果对方不同意则不能进行对应操作。

运行:

  1. 首先运行两次Main类中的Main函数,连续打开两个棋盘(注意要在编辑配置中选择允许运行多个实例,这样才能连续打开两个客户端否则只能打开一个)。

image

  1. 首先由一名玩家点击创建游戏,就会出现棋盘界面,但此时无法进行任何操作;第二名玩家点击加入游戏,就会弹出一个提示框让玩家输入要连接的IP地址。刚才创建游戏的玩家的窗口标题上会显示该玩家对应的IP地址,第二名玩家点击加入游戏,输入第一名玩家的IP地址就可以连接到第一名玩家所创建的游戏中,对应的界面中都会有相应的提示。

image

image

image

image

  1. 判断输赢

image

  1. 悔棋

image

image

  1. 认输

image

image

代码:

程序代码

posted @ 2022-11-13 18:43  中国移不动~~~  阅读(92)  评论(0)    收藏  举报