Java—面对对象课程设计(五子棋)

一、项目简介

  • 功能描述:所做项目为五子棋对战,其中包括人机对战以及联机对战。功能有悔棋以及重开。借鉴自"人机五子棋"并增加了不少功能。
  • 参考git地址https://gitee.com/kaguya0/chess-game
  • 本人负责任务:人机AI,重开功能,游戏界面优化,游戏音效,标记棋子

二、功能架构图

三、个人任务简介

1.完成的任务与功能

序号 完成功能和任务 描述
1 添加音效 启动程序播放BGM,落子带有音效。
2 人机AI 人机通过五元组评分算法寻找最优落子点
3 重开功能 初始化双方棋盘以及棋子
4 标记棋子功能 落子后,在棋子中心做上红点标记。
5 界面优化 增加棋盘背景,修改棋子样式。修改鼠标光标样式。

2.git提交记录截图:

四、本人负责功能详解

1.游戏添加音效

  • Java能播放的音乐的格式wav格式音乐。对于播放mp3音乐,我不信邪的尝试了一天,结果也只能妥协,最终也是找到一个工具成功的将mp3转化为wav,这自然就能调用网络上大部分代码来播放音乐了。
  • 音乐播放参考代码:

2.人机AI

  • 人机判断落子的算法最常见的即为五元组评分表算法。对于一个15*15的棋盘,其对应有572个五元组,每个位置的得分通过其八方各五元组的评分相加,最终AI选取得分最高且没落子的位置。评分表参考如下:(其中“×”代表任意数。)
玩家落子个数 AI落子个数 评分

0|>0|0
0|0|7
×|1|35
×|2|500
×|3|15000
×|4|800000
1|×|15
2|×|400
3|×|1800
4|×|100000

  • 得分计算:计算某位置的得分时,以该点为中心,向周围8个方向包括自己各取8个五元组,根据五元组内落子个数情况,每个五元组通过上方的评分表按顺序匹配评分,将8个五元组得分相加即为该点的评分。(参考博客:https://www.cnblogs.com/chaiwenjun000/p/5321115.html)

3.重开功能

  • 游戏进行过程中,请求重开,只有对方玩家同意后,才会初始化双方的棋盘,完成重开。

4.标记棋子功能

  • 用于警示玩家落子的位置,当落子后,获取落子的坐标,并在该坐标画红点,达到标记的效果。

5.游戏界面优化

  • 这部分主要是为了让游戏更有五子棋的味道,而不是仅仅是由点线构成的游戏。
  1. 棋盘、棋子以及鼠标光标


posted @ 2021-01-29 03:09  1911-黄荣煌  阅读(118)  评论(0编辑  收藏  举报