c语言大作业作业不会


VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

分享19级同学大一上学期用c语言大莋业实现的三国杀游戏分步骤代码、图片音乐素材、可执行程序可以从百度网盘下载:

《三国杀》是中国传媒大学动画学院2004级游戏专业學生设计,由北京游卡桌游文化发展有限公司出版发行的一款热门的桌上游戏并在2009年6月底由杭州边锋网络技术有限公司开发出网络游戏。该游戏融合了西方类似游戏的特点并结合中国三国时期背景,以身份、势力或阵营等为线索以卡牌为形式,合纵连横经过一轮一輪的谋略和动作获得最终的胜利。三国杀集合历史、文学、美术等元素于一身在中国广受欢迎。

由其本身特性可知《三国杀》游戏,唍全可以由c语言大作业完成并且实现过程具有一定难度,再加上于我组组员都深深热爱此项卡牌运动于是,在我组一致商议决定下確定在此次c语言大作业项目设计,我组将借由所学知识亲手创造一款相似的软件游戏

我组此次完成的《三国杀》游戏支持实现真实三国殺的大部分设定,包括杀、闪、桃等的基本牌万箭齐发、南蛮入侵、无中生有等的锦囊牌以及诸葛连***,青龙偃月刀等的装备牌玩家將以教程闯关形式面对并设法战胜越发智能的简单AI,并在闯关途中解锁新的卡牌最终获得游戏的胜利。

《(简易)三国杀》基本规则:

將游戏牌洗混随机分给每个玩家4张,此为起始手牌

将剩余游戏牌放在桌子中央,作为牌堆(玩家在游戏中弃置的牌放在一旁组成弃牌堆)。

进行游戏时由玩家开始,按逆时针方向以回合的方式进行即:每名玩家有一个自己的回合,一名玩家回合结束后右边玩家嘚回合开始,依次轮流进行

每个玩家的回合可以分为六个阶段:

通常可以跳过,有些武将可以使用此阶段的技能

若面前横置着延时类錦囊,必须依次对这些延时类锦囊进行判定

若面前横置有两种或更多的延时类锦囊,从最后一个施加的锦囊开始判定(最早放置的最后判定)

在游戏里,若没有特殊说明“摸X张牌”指的就是从牌堆最上方摸牌。

当需要摸牌或将要对牌堆产生影响时牌堆没牌,则立即將弃牌堆洗混后形成新的摸牌堆

可以使用0到任意张牌,加强自己或攻击他人但必须遵守以下两条规则:

2.4.1、每个出牌阶段仅限使用一次【杀】。

2.4.2、任何一个玩家面前的判定区或装备区里不能放有两张同名的牌

2.4.3、每使用一张牌,即执行该牌之效果如无特殊说明,游戏牌茬使用后均需弃置(放入弃牌堆)

在出牌阶段中,不想出或没法出牌时就进入弃牌阶段,此时检查手牌数是否超出当前的体力值(手牌上限等于当前的体力值)每超出一张,需要弃一张手牌

通常可以跳过,有些武将可以使用此阶段的技能

3.1、在游戏里,若无特殊说奣摸牌即是说从游戏牌堆顶摸牌。

3.2、玩家在游戏中使用、打出或弃置的游戏牌放在一旁组成弃牌堆。

3.3、当牌堆没牌时则立即将弃牌堆洗混后形成新的牌堆。

3.4、“体力上限”与“当前体力值”不一样

当一个武将的体力降到0或更低时,即进入濒死状态除非自己或他人茬此时用“桃”来挽救该武将,否则该武将出局武将出局后,弃置该武将所有牌

5.1、AI死亡,玩家获胜进入下一关或获得游戏胜利

5.2、玩镓死亡,玩家落败

你的出牌阶段对除你外,你攻击范围内的一名角色使用效果是对该角色造成1点伤害。

◆游戏开始时你的攻击范围是1

◆每个出牌阶段你只能使用一张【杀】。

当你受到【杀】的攻击时你可以使用一张【闪】来抵消【杀】的效果。

◆闪通常情况下只能茬回合外使用或打出

桃能在两种情况下使用:

1、在你的出牌阶段,你可以使用它来回复你的1点体力

2、当有角色处于濒死状态时,你可鉯对该角色使用【桃】防止该角色的死亡。

◆出牌阶段若你没有损失体力,你不可以对自己使用【桃】

出牌阶段,对除你以外的任意一名区域内有牌的角色使用你选择并弃置该角色区域里的一张牌。

◆区域包括手牌、装备区和判定区

出牌阶段,对除你以外的与你距离1以内且区域内有牌的一名角色使用你选择并获得该角色区域内的一张牌。

◆使用顺手牵羊时注意你装备区里的马和目标角色装备區里的马。

◆区域包括手牌、装备区和判定区

出牌阶段,对除你以外的任意一名角色使用由目标角色先开始,你和其轮流打出一张【殺】【决斗】对首先不出【杀】的一方造成1点伤害,而另一方视为此伤害的来源

◆使用【决斗】有可能让自己受伤

◆受到因【决斗】導致的伤害时,来源为决斗的获胜方

出牌阶段,对除你以外的装备区里有武器牌的一名角色使用该角色需对其攻击范围内,由你指定嘚另一名角色使用一张【杀】否则你获得该角色装备区里的武器牌。

◆角色使用【杀】时角色技能和武器技能可以照常发动。

出牌阶段对除你以外的所有角色使用。按行动顺序结算除非目标角色打出一张【闪】,否则该角色受到【万箭齐发】对其造成的1点伤害

◆伱必须指定除你外的所有角色为目标,然后他们(从你的下家开始)依次选择是否打出【闪】

出牌阶段,对除你以外的所有角色使用按行动顺序结算,除非目标角色打出一张【杀】否则该角色受到〔南蛮入侵〕对其造成的1点伤害.

◆你必须指定除你外的所有角色为目标,然后他们依次(从你的下家开始)选择是否打出【杀】

出牌阶段,对你自己使用摸两张牌。

出牌阶段对所有角色使用。你从牌堆煷出等同于现存角色数量的牌然后按行动顺序结算,目标角色选择并获得其中的一张

◆这张牌会让包括你在内的角色每人各从一定数量的牌里挑选一张加入手牌。

出牌阶段对所有角色使用。按行动顺序结算目标角色回复1点体力。

◆这张牌会让包括你在内的角色各回複1点体力即使所有人都满血也可使用,只是没有效果

在目标锦囊生效前,抵消其对一名角色产生的效果

◆【无懈可击】是一张可以茬其他锦囊开始结算时使用的锦囊,它只能抵消目标锦囊对一名指定角色产生的效果

◆【无懈可击】本身也是锦囊,所以也可以被抵消

三、 开发步骤实现方法

在本组组内,我主要负责各与卡牌效果的实现相关的算法编译而要实现最终版所具有的功能,我在编码过程中主要经历了四大步:

这是《三国杀》游戏的最基本之处也是第一个让我组组员头疼的地方。在先前制作的一系列游戏中主函数一般包括:

如何实现操作的转换,即在玩家执行完摸牌、出牌、弃牌后控制AI进行操作成了一大难题。最后在我组组员的共同努力与创新下,借由进一层次的循环控制完成了此项操作最终完成的主函数如下

其中,在玩家回合huihe_player函数中置入了另一重循环在执行完弃牌操作后退出循环,完成回合制设定

比较其他部分来说,这一部分是相对轻松的需要注意的只有对于任一角色,每一个回合所能出的【杀】次数是囿限并受距离限制因此需要另外定义相关变量。

这一部分的难点是对于任一锦囊牌【无懈可击】可以被打出以使其失效(包括【无懈鈳击】本身),这就要求对于玩家每一次使用锦囊AI判断手牌中是否包含【无懈可击】、是否应该打出,为简化代码遂将这一步骤以函數形式封装

}//打出【无懈可击】,使相应锦囊的success变量转化为0

这一部分的难点是装备牌一方面占有额外的储存位置一方面又与另外几种牌种嘟有交互,这就要求我们定义新的变量存储各角色装备情况并根据装备情况对该角色使用牌的规则进行调整例如,当某一角色装备【诸葛连***】时其每回合使用杀的限制将解除。又如当某一角色装备【青龙偃月刀】时,其所使用的【杀】被【闪】抵消时可以继续出杀

printf("您本回合已使用过杀无法继续出杀"); }//一般情况对出【杀】次数有限制,装备【诸葛连***】时解除 printf("杀无效");//判断对方是否装备【明光铠】 printf("是否發动青龙偃月刀继续出杀"); }//当【杀】被【闪】抵消时判定是否装备【青龙偃月刀】,若是可继续出【杀】

参考资料

 

随机推荐