JAVA 期末课程设计报告
题目:联网五子棋
作者:朱巍杰
问题描述:
1. 编写 wuziqiServer 实现五子棋游戏的服务器端,编写 wuziqiClient 实现游戏的客户端。
2. 当两个玩家都连接到服务器的时候游戏开始,两个人轮流下棋,直到游戏结束。
3. 编写 isGameOver 方法,判断游戏是否结束(是否有人达到 5 个或者 5 个以上连子)。
4. 利用 Japplet 编写游戏的界面,15*15 格的棋盘,一个 displayArea 输出游戏中的信息以
及服务器传过来的消息。
问题分析:
1. 第 一 个 玩 家 启 动 客 户 端 时 , 客 户 端 利 用 connection = new
Socket( getCodeBase().getHost(), 12345 );语句找到服务器端,同时服务器端向客户端
发送消息“等待其他玩家连接”。同时在客户端的上方显示这个玩家所使用的棋子是什么
棋子(“●、○”)。第二个玩家连接的时候,游戏开始,并且通知第一个玩家开始下棋。
2. 游戏中,在一个时间只能有一个玩家下棋,另一个玩家处于等待状态,直到一个玩家
将棋子放下,双方状态互换。
while ( player != currentPlayer )
{
// 等待
try {
wait();
}
/ 轮到此玩家 开始下棋
if ( !isOccupied( location ) ) {
// 在棋盘的字符数组中设置玩家的标记
board[ location ] = currentPlayer == PLAYER_X ? X_MARK : O_MARK;
temp = location;
// 跟换下棋的玩家
currentPlayer = ( currentPlayer + 1 ) % 2;
// 告诉玩家棋子成功放置
players[ currentPlayer ].otherPlayerMoved( location );
notify(); // 告诉等待的另一个玩家可以开始下棋了
3. 判断胜负时,利用玩家最后所放下的那个棋子作为变量,带入 bool 型的 isGameOver 方
法中,对这个棋子的横向、纵向、对角线上进行搜索。每遇到一个和它相同的棋子,
则将那个方向对应的变量+1,共有 4 个变量,代表四个方向上的连子数。