Monster Card Game之需求分析

//前段时间根据小小的需求写了个小程序,下面把根据需求分析把整个项目实现的过程给重现一下,好像还没有记载过项目的产生过程。只为留下一些记忆

目标

实现一款控制台的卡牌游戏 用户可在命令台输入命令来完成对游戏的操作

游戏元素:

玩家

游戏共有2个玩家 player 1(server) 和 player 2(client) 当2个eclipse运行了代码后(需要用户输入参数去决定是server或者是client), 双方控制台要显示连接成功的提示信息(Accepted incoming connection)

Deck

每一个玩家都有一个deck (游戏里共2个deck
一个玩家拥有一个) deck就是每回合抽牌的卡牌堆 每回合每一个玩家都会抽取一张牌 deck里初始共有40张牌 抽完deck中40张卡牌的那一方会被判定输掉比赛 每次程序开始运行的时候 程序都会随机出40张牌到2个deck中

卡牌

共有2种卡牌

怪兽卡 monster card
怪兽卡的txt属性如下 EXAPME: Dark Magician.txt

monster
Dark Magician
2500
2000


第一行的”monster”是表明这个txt文档是一张怪兽卡
第二行的”Dark Magician”这张怪兽卡的名字
第三行的“2500”是怪兽卡的攻击力
第四行的”2000”是怪兽卡的防御力


魔法卡 spell card
我们在游戏里只需实现1种魔法卡即可 就是”Pot of Greed”

Pot of Greed.txt:
spell
Pot of Greed

第一行的”spell”表明这个txt文档是一张魔法卡
第二行的”Pot of Greed”是这张魔法卡的名字

Pot of Greed魔法卡的效果是 如果玩家被deck随机发到了pot of greed
这张卡 那么这张卡不会出现在玩家的hand中 deck会在当前回合再发2张卡到被发到Pot of greed卡的玩家手中

命令
以下命令的结果如下

Show my hand
显示用户当前手上的牌
Ex: 用户在控制台输入了show my hand

控制台显示 1 Dark Magician
2 Dark Magician
3 Luster Dragon
按照顺序显示用户手上的牌

Summon monster
将用户手上制定的怪兽卡召唤到battle field(战场)上
Ex:
Show my hand
1 Dark Magician
2 Dark Magician
3 Luster Dragon

Summon monster 2
用户输入summon monster 2后 用户的hand手里的第二张dark magician消失
手里卡变成了

1 Dark Magician
2 Luster Dragon

召唤了怪兽卡的那一方的战场上会多出一张Dark Magician

Choose my card XXX(int 参数)
选择用户在战场上的卡进行下一步操作
Example
Choose my card 2
选择战场上第2张卡进行用户下一步操作

attack XXX(int 参数)
在用户输入choose my card 命令后,用户就可以让已经选中的在自己战场上的怪兽卡打出attack命令选择去攻击对方在战场上剧体某一张怪兽卡
Example
attack 4
意思是攻击对方的第4张怪兽卡

show my bf
意思是显示自己在战场上的牌
打印效果和show my hand 命令一致

show op bf
意思是显示对方在战场上的怪兽卡
打印效果和show my hand 命令一致

end my term
结束自己当前回合 等待对方的回合

扣血的计算

双方玩家都有8000点的初始血量

当我选择用我的战场上的怪兽卡去进攻对方在战场上的怪兽卡时

如果 进攻方怪兽卡攻击力〉被攻击方怪兽卡防御力 那么 对方被攻击的怪兽卡从战场消失,扣除血量是 当前血量-(进攻方怪兽卡攻击力-被进攻方怪兽卡防御力)

如果 进攻方怪兽卡进攻力<被攻击方怪兽卡防御力 那么 进攻方怪兽卡从战场消失, 血量不变

如果 进攻方怪兽卡攻击力=被进攻方怪兽卡防御力 那么 进攻方怪兽卡和防御力怪兽卡同时从战场消失

哪一方8000点血被扣完则输掉比赛
或者 deck里40张牌谁先发光谁就输掉比赛

如果2个玩家的deck在同一轮被抽光 那么比赛是draw 平手
目标

 

实现一款控制台的卡牌游戏 用户可在命令台输入命令来完成对游戏的操作

 

游戏元素:

 

玩家

 

游戏共有2个玩家 player 1(server) 和 player 2(client) 当2个eclipse运行了代码后(需要用户输入参数去决定是server或者是client), 双方控制台要显示连接成功的提示信息(Accepted incoming connection)

 

Deck

 

一个玩家都有一个deck (游戏里共2个deck

一个玩家拥有一个) deck就是每回合抽牌的卡牌堆 每回合每一个玩家都会抽取一张牌 deck里初始共有40张牌 抽完deck中40张卡牌的那一方会被判定输掉比赛 每次程序开始运行的时候程序都会随机出40张牌到2个deck中

 

卡牌

 

共有2种卡牌

 

怪兽卡 monstercard

怪兽卡的txt属性如下 EXAPME: Dark Magician.txt

 

monster

Dark Magician

2500

2000

 

 

第一行的”monster”是表明这个txt文档是一张怪兽卡

第二行的”Dark Magician”这张怪兽卡的名字

第三行的“2500”是怪兽卡的攻击力

第四行的”2000”是怪兽卡的防御力

 

 

魔法卡 spell card

我们在游戏里只需实现1种魔法卡即可 就是”Pot of Greed”

 

Pot of Greed.txt:

spell

Pot ofGreed

 

第一行的”spell”表明这个txt文档是一张魔法卡

第二行的”Potof Greed”是这张魔法卡的名字

 

Pot of Greed魔法卡的效果是 如果玩家被deck随机发到了pot ofgreed

这张卡 那么这张卡不会出现在玩家的hand中 deck会在当前回合再发2张卡到被发到Pot ofgreed卡的玩家手中

 

命令

以下命令的结果如下

 

Show my hand

显示用户当前手上的牌

Ex: 用户在控制台输入了show my hand

 

控制台显示 1 DarkMagician

           2 Dark Magician

          3 Luster Dragon

按照顺序显示用户手上的牌

 

Summon monster

将用户手上制定的怪兽卡召唤到battlefield(战场)上

Ex:

Show my hand

1 Dark Magician

2 Dark Magician

3 Luster Dragon

 

Summon monster 2

用户输入summonmonster 2后 用户的hand手里的第二张darkmagician消失

手里卡变成了

 

1 Dark Magician

2 Luster Dragon

 

召唤了怪兽卡的那一方的战场上会多出一张Dark Magician

 

Choose my card XXX(int 参数)

选择用户在战场上的卡进行下一步操作

Example

Choose my card 2

选择战场上第2张卡进行用户下一步操作

 

attack XXX(int 参数)

在用户输入choose mycard 命令后,用户就可以让已经选中的在自己战场上的怪兽卡打出attack命令选择去攻击对方在战场上剧体某一张怪兽卡

Example

attack 4

意思是攻击对方的第4张怪兽卡

 

show my bf

意思是显示自己在战场上的牌

打印效果和show myhand 命令一致

 

show op bf

意思是显示对方在战场上的怪兽卡

打印效果和show myhand 命令一致

 

end my term

结束自己当前回合 等待对方的回合

 

扣血的计算

 

双方玩家都有8000点的初始血量

 

当我选择用我的战场上的怪兽卡去进攻对方在战场上的怪兽卡时

 

如果 进攻方怪兽卡攻击力〉被攻击方怪兽卡防御力那么 对方被攻击的怪兽卡从战场消失,扣除血量是当前血量-(进攻方怪兽卡攻击力-被进攻方怪兽卡防御力)

 

如果 进攻方怪兽卡进攻力<被攻击方怪兽卡防御力 那么 进攻方怪兽卡从战场消失, 血量不变

 

如果 进攻方怪兽卡攻击力=被进攻方怪兽卡防御力 那么 进攻方怪兽卡和防御力怪兽卡同时从战场消失

 

哪一方8000点血被扣完则输掉比赛

或者 deck里40张牌谁先发光谁就输掉比赛

 

如果2个玩家的deck在同一轮被抽光 那么比赛是draw 平手

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值