当前位置:编程学习 > C#/ASP.NET >>

开源的三国杀程序 vb.net 2005

用了大概半年的时间。
项目位于GOOGLE CODE上.http://code.google.com/p/sgs-易做图/downloads/list
易于添加新的技能和牌,技能和角色分离,理论上能够实现随机技能(未测试过)。
可以保存,读取和回放(读取和回放未实现)

工作原理:

所有的动作分为控制类型和普通类型,控制类型例如摸牌、收到伤害、失去HP、获得HP、濒死、死亡等。普通类型的动作只包括打出牌,使用技能。一个动作的格式为:
“发起方武将的ID|动作类型|牌的序号(0到多张)|目标武将(0到多个)|参数1|参数2”, 一个动作可以生成另一个动作,子动拥有父动作的优先级并能继承其他的一些属性。插入的动作的优先级比父动作要高一个等级。
使用三个栈(stackForControl,stackForNormal,stackForOpeartion)和一个队(waitingActionList)来控制所有的动作的运行。控制类型的动作进入stackForControl(不执行该控制动作),普通类型的动作进入stackForNormal(执行普通动作的第一阶段,一般是出牌的动作或者是使用技能的动画),最后这两个栈中的动作都会进入stackForOpeartion,该栈的作用是真正执行该动作(控制类型的动作则是执行,普通类型的动作则是执行第二阶段)。所有这些动作都是从waitingActionList中出队后再进入stackForControl和stackForNormal的。如果一个父动作生成一个子动作,无论子动作是什么类型的,都先进入waitingActionList。任何一个动作在入栈后都会先查找能够插入的动作的,stackForOpeartion中的动作执行完毕后也会查找能够续后的动作。例如请求出闪的动作在进入stackForControl后会查找能够插入的动作,如果装备有八卦阵,会生成一个请求八卦阵判定的动作。该动作的优先级要高于请求出闪的动作的一个等级,该动作入队waitingActionList。此时系统取得的下一个动作则是请求判定八卦阵的动作,此时请求出闪动作还留在stackForControl中。
例如1号武将杀2号武将,先生成动作一1!CARD_SHA^85!85!2!!,动作一生成动作二2!ACT_AFCARD!!!!REQUEST(请求2号武将出闪),用户通过回应该请求出闪生成动作三2!CARD_SHAN^66!66!!!。
例如1号武将杀装备八卦阵的2号武将,先生成动作一1!CARD_SHA^85!85!2!!,动作一生成动作二2!ACT_AFCARD!!!!REQUEST(请求2号武将出闪),此时系统寻找到能够插入的动作三2!ACT_CAF_BGZ!!!!REQUEST。动作二仍然留在stackForControl中。动作三入栈stackForControl,执行动作三。如果判定出红色则生成动作十2!CARD_SHAN!!!!(该动作中没有牌的ID,因为八卦阵判定出的闪没有实体),动作十无效掉动作二。如果判定出黑色会继续执行栈中的动作二,如果2号武将不回应动作二则会生成动作四1!ACT_SHAHIT!!2!1!,动作四生成动作五2!ACT_RECDAMAGE!!!1!,动作五再生成动作六2!ACT_LOSEHP!!!1!。上面的流程假设没有任何可插入的动作(例如裸衣可以插入在动作四ACT_SHAHIT之前,修改受到的伤害值;反馈可以插入在动作六2!ACT_LOSEHP!!!1!之后,回溯找到1号武将抽1号的牌;银月枪可以插入在动作十之前,请求其余某个武将出闪),上述描述略去了很多中间的动作,例如判定的动作、显示判定结果的动作、出牌后失去牌的动作等,这些动作都是可能被其他动作插入的。
濒死的动作的优先级要比普通的动作的优先级高100个等级,濒死时会像所有的武将生成请求出桃的动作,这些动作的优先级继承自濒死的动作的优先级。故比其他动作的优先级高,例外则是狂骨的优先级要比濒死的动作的优先级要高1,这样即使对方濒死也能先发动狂骨的技能。
通过该方法可以实现动作的层层嵌套。

--------------------编程问答-------------------- 看不懂,挺复杂的,是楼主一个人的作品吗?还是团队? --------------------编程问答-------------------- 做个类似起凡的游戏 --------------------编程问答-------------------- 正准备做这么一个东西,看了楼主的思想,觉得很受启发~希望能够交流~ --------------------编程问答-------------------- 三国杀是啥东西? --------------------编程问答-------------------- LZ自己写的?回去下来试试 --------------------编程问答-------------------- 牛人啊,下来看看 --------------------编程问答-------------------- 这个真是太牛逼了! --------------------编程问答-------------------- 太好了啊。。我也正在做这样的程序呢,下下来参考参考。 --------------------编程问答-------------------- 谢谢了 参考一下 --------------------编程问答-------------------- 死后拿三张牌, 好像这功能还没做 --------------------编程问答-------------------- 电脑自动跟人对弈部分做没做?感觉这个应该是最难的 --------------------编程问答-------------------- 用什么实现网络连接的? --------------------编程问答-------------------- --------------------编程问答--------------------
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,