Skip to content
CXP-2024Public

About

一个前后端项目

Resources

Stars

5 stars

Watchers

0 watching

Forks

Latest commit

 

History

306 Commits

Folders and files

Repository files navigation

SaTinTin -- 在线双人卡牌行动对战游戏

SaTinTin

🛠️ 类型安全技术栈

  • 后端: Scala
  • 前端: React + TypeScript
  • 数据库: PostgreSQL
  • 实时通信: WebSocket

🚀 快速开始

环境配置

  • 使用 PgAdmin4 管理数据库
  • 使用 IntelliJ IDEA 打开后端五个Service文件夹并启动所有的 Server.scala

启动步骤

  1. 进入 frontend 文件夹
  2. 运行以下命令:
npm install
npm start
  1. 浏览器访问 127.0.0.1:3000/login 进入游戏页面

💡 如需使用其它地址,请修改 ServiceConfig.ts 文件中的API地址

🎮 游戏指南

登录注册

首先注册并登录账号

login

游戏大厅

登录后进入游戏大厅

Home

游戏准备

  1. 前往祈愿界面进行抽卡
  2. 在管理卡组页面设置好出战的三张卡牌
  3. 进入开始对战创建房间,发送房间ID给好友进行联机匹配对战

⚔️ 游戏规则

基础设定

  • 双人对战模式
  • 起始状态:每人6血、0能量
  • 每回合结算制

行动系统

行动类型

每回合玩家可选择以下两种行动类型之一:

🛡️ 被动行动

类型 效果 说明
饼类 获得能量 + 伤害倍率
└ 饼 获得1能量,伤害倍率×1
└ 馕 获得2能量,伤害倍率×3
弹 消耗所有能量
防类 不消耗能量
└ 防[attacktype] 免疫指定类型
攻击
└ 防[class] 免疫指定class的攻击值
└ 防[action] 免疫指定action的攻击

⚔️ 主动行动

基础攻击类型
攻击类型 攻击值 防御值 消耗能量 攻击类型
撒 [普通]1 5 1 基础攻击
tin [普通]3 1 1 基础攻击
南蛮 [穿透]3 5 3 穿透类攻击
大闪 [穿透]4 5 4 穿透类攻击
万箭 [防弹]2 5 3 防弹类攻击
核爆 [核爆]5 6 5 核爆攻击
行动组合
  • 单一行动: 基础类型的叠加(n次)

    • 攻击值:n × 基础攻击值
    • 防御值:n × 基础防御值
    • 消耗能量:n × 基础消耗
  • 复合行动: 多种单一行动的组合

    • 攻击值:各单一行动攻击值之和
    • 防御值:各单一行动防御值之和
    • 消耗能量:各单一行动消耗能量之和

🎯 结算机制

1. 能量检查

  • 如果任一方能量不足以支付消耗,该方"爆点"
  • 爆点惩罚:-3血,回合结束

2. 血量结算

双方均被动行动
  • 双方血量不变
双方均主动行动
  • 存在复合行动时: 双方均扣血 = 对方攻击总和 - 己方防御总和
  • 均为单一行动时:
    • 同类型:按叠加次数抵消,剩余方造成攻击伤害,satin有特殊效果
    • 不同类型:按复合类型结算
一方主动,一方被动
被动方类型 受到伤害 主动方受到伤害
饼 (攻击[普通]+攻击[穿透]+攻击[防弹]) × 伤害倍率 0
防(防[attacktype]) 攻击[核爆]+攻击[穿透] 0
弹 攻击[核爆]+攻击[防弹] 攻击[普通]+攻击[穿透]
防[class] 除该class外的所有攻击 攻击[普通]+攻击[穿透]+攻击[防弹]+攻击[核爆]
防[action] 若攻击方为该action则免疫,否则受到所有攻击 0

3. 胜负判定

  • 一方血量>0,另一方<0:血量>0的一方获胜
  • 双方血量均<0:血量较高的一方获胜
  • 双方血量相同且均<0:平局

4. 回合结束

  • 若有人受到伤害,双方能量清零
  • 进入下一回合

GameCore设计

login

Relation Map

login

About

一个前后端项目

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages