JAVA课设——大富翁(团队博客)
1.团队名称、团队成员介绍
团队名称:憨批军团
组员:
成员 | 介绍 | 个人博客链接 |
---|---|---|
朱振豪(组长) | 代号:喷火王八,主要的中心,负责统筹全局和相关困难代码的实现和教授 | https://www.cnblogs.com/zzhmyblog/p/14355723.html |
李凌 | 代号:划水王八,打代码第二人,负责部分代码的编写和资源的收集 | https://www.cnblogs.com/yushanbaiyi/p/14346651.html |
叶汉斌 | 代号:蒜头王八,打代码第三人,负责部分代码的编写和文案的设计 | https://www.cnblogs.com/ye736660997/p/14354075.html |
2.团队成员任务分配,标明组长
- 朱振豪(组长):逻辑代码,Main函数,游戏界面和bug的修改工作
- 李凌:随机骰子实现,背景音乐实现,开始的命名界面,从土地层面的升级土地和买卖土地的实现
- 叶汉斌:玩家移动,玩家金钱身家变化,玩家层面的升级土地和买卖土地的实现,主页面
3.前期调研
刚开始我们就点开了4399小游戏,开始分析里面有什么内容,通过我们的分析,他有以下内容:
- 1.玩家移动:
玩家移动是大富翁的基本核心 - 2.购买土地:
当你到达一个无人的地方时,你可以用资产来购置土地 - 3.特殊地点:
有着三处的特殊地点,分别有不同的作用 - 4.特殊事件:
有着三处固定的特殊事件,当你到达那里就会随机触发事件 - 5.资产筹码:
每局的筹码大家都是相同的,根据筹码来排名和获胜,而资产每个人却不同,看了看规则,是每个人账号上有的
而我们根据我们自己的想法和大富翁基本的规则来制定我们自己的内容:
而后就是根据基本的内容来讨论有什么类,什么属性
接下来就是每个人代码的编写了
4.项目git地址
5.项目git提交记录截图(要体现出每个人的提交记录、提交说明),老师将重点考核。
6.项目功能架构图与主要功能流程图
7.项目UML图
8.项目运行截图
9.项目关键代码(不能太多)
- 游戏运行框架
- 大富翁主要的游戏逻辑就是投骰子后到达某个位置,触发相应的事件,事件处理完成之后判断当前玩家是否破产,进行相应处理,全部玩家都投骰子之后为一个回合,当只剩下一个玩家的时候,该玩家获得本局游戏的胜利。
- 关键代码如下
public void gameStart() {
while (getPlayerList().size() > 1) { // 玩家多于一人,游戏继续
for (int i = 0; i < getPlayerList().size();) { // 遍历所有玩家,模拟回合
this.nowPlayer = getPlayerList().get(i); // 取当前行动玩家
final TextArea gameMessage = this.gameMessage;
final Player player = this.nowPlayer;
final ImageView diceImageView = this.diceImageView;
// https://stackoverflow.com/questions/49218960/repaint-borderpane-javafx
Platform.runLater(new Runnable() {
@Override
public void run() {
gameMessage.appendText("现在轮到玩家:" + player.getName() + "行动\n");
}
});
if (this.nowPlayer.isPeople()) {
Platform.runLater(new Runnable() {
@Override
public void run() {
diceImageView.setVisible(true);
}
});
}
if (this.nowPlayer.getStatus() == UsedConstant.MOVABLE) { // 可行动
if (this.nowPlayer.isPeople()) { // 人
while (!clicked) { // 阻塞程序,等待点击骰子
}
this.clicked = false;
Platform.runLater(new Runnable() {
@Override
public void run() {
diceImageView.setVisible(false);
}
});
} else { // 电脑
try {
Thread.sleep(1000); // 模拟电脑思考
} catch (InterruptedException e) {
e.printStackTrace();
}
rollDice(); // 投骰子
}
}
updateNowPlayer(); // 根据当前所在位置触发事件
updateView(); // 更新视图
if (this.nowPlayer.getProperty() < 0) { // 是否破产
removePlayer(i);
i--;
}
if (this.moveAgain) { // 是否再行动
this.moveAgain = false;
} else {
i++;
}
}
}
final Player winPlayer = this.getPlayerList().get(0);
Platform.runLater(new Runnable() {
@Override
public void run() {
gameMessage.appendText("玩家:" + winPlayer.getName() + "获得了此次游戏的胜利\n");
}
});
}
10.尚待改进或者新的想法
- 尚改进:可以增加一些角色移动的动作,一些地产的美观程度不足
- 新的想法:学习一些网络编程技术实现联网多人游戏