Davinci
大约 3 分钟
课题介绍
达芬奇密码桌游是一款流行的逻辑推理类游戏,玩家通过推理和猜测对手的牌面来赢得游戏。随着网络技术的发展,传统的桌面游戏逐渐向网络化、数字化方向转变,网页版的桌游可以突破时间和空间的限制,使玩家能够更加方便地进行游戏。本课题旨在利用Spring MVC框架开发一个网页版的达芬奇密码桌游单机版,提升游戏的可访问性和用户体验。
实现以下功能:
- 用户管理:用户可以注册、登录个人信息。
- 游戏逻辑:实现达芬奇密码桌游的核心规则,包括牌的抽取、放置、猜测等。
- 游戏界面:设计并实现友好的用户界面,使玩家能够直观、便捷地进行游戏操作。
课题介绍














分析与设计
游戏初始化:
卡牌类:
Value | 类型 | 功能 |
---|---|---|
W | List<String> | 记录白色牌堆的牌 |
B | List<String> | 记录黑色牌堆的牌 |
Computerstates | Int[] | 记录电脑获得的牌 |
playerstates | Int[] | 记录玩家获得的牌 |
- 开局初始化双方牌堆:通过将牌堆随机打乱的方式Collections.shuffle(),后台分别从黑白牌堆各取两张一共4张分配到玩家和电脑的牌库中;
- 游戏开始:整个游戏过程中玩家一共有ph=7次机会可以猜电脑方任意位置任意牌,点击就可以猜测。玩家可以通过已猜出的牌和自己的牌堆来猜测电脑方牌
- 游戏过程中可以进行以下操作:
- 从黑/白卡牌堆中抽取一张卡牌
- 猜测电脑方卡牌(若猜测正确,猜中的牌会显示并标红色框)
- 游戏卡牌堆后台自动排序从左到右从大到小,同样值黑<白
- 游戏结果:
- 当牌库中的牌被抽光,电脑方的牌还有未被猜出时,挑战失败
- 当玩家hp值 < 0的时候,挑战失败
- 当电脑方牌都被玩家猜出时,挑战成功
遇到的问题和解决方法
- 在game.jsp游戏过程中,需要界面与后台服务器之间的交互,动画,通过查阅参考资料等,利用js和Ajax来实现前端与后端之间的交互。
• 使用AJAX发送POST请求来更新服务器端的卡片状态。
• 使用XMLHttpRequest对象来发送异步请求,并处理服务器响应。
使用JavaScript来动态更新页面内容,如高亮显示猜中的卡片,减少HP,检查所有牌是否被猜中。
函数 | 功能 |
---|---|
drawCard(color) | 处理抽牌操作,提交表单到服务器 |
guessCard(card) | 处理猜牌操作,弹出提示框获取用户输入,判断猜测结果并更新hp且高亮显示猜对的牌 |
checkAllCardsGuessed() | 检查所有牌是否都被猜中,如果是,则提示玩家获胜,并重置游戏 |
- 在card卡堆当中如何去模拟随机抽卡的随机性:
分别建立w和b的List<String>列表
再分别创建玩家和电脑的卡牌数组:0-11作为w0-w11,12-23作为b0-b11
通过Collections.shuffle(w);随机打乱w,b牌堆里的牌
在抽取牌堆是模拟队列的方式,从卡片列表的开头(队首)移除并返回一个元素