鱼C论坛

 找回密码
 立即注册
查看: 4030|回复: 1

[新人报道] 看鱼C哥的视频,我也学着做游戏,我会一直更新的···目前0.3版

[复制链接]
发表于 2015-8-14 15:40:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 woainibaobao 于 2015-8-15 12:14 编辑

攻击与防御-0.3版本 说明
0.3版
·添加python代码添加 #说明
·使用for,range,len 语句表述所有攻击-防御类型
·加入assert防止血量为负数
·使用自定义函数定义攻击-防御类型
·使用lambda语句定义攻防招数列表
·使用mpa,filter等bif函数定义攻防对应
·使用dict调用,采用一个新字典代替两个老字典


python
import random    #引入随机
import easygui as g   #引入easygui

a_list = lambda x : attract_type[x]  #定义攻击类型对应的代码
d_list = lambda x : defeat_type[x]   #定义防守类型对应的代码
r_list = lambda x : reason_type[x]   #定义攻防对应原因对应的代码
attract_type = ('豪火球之术','急速冷冻','神圣攻击','情花剧毒') #建立攻击类型列表
defeat_type = ('开启‘回忆忍者’','燃烧吧,小宇宙','15秒的大无敌','兑了水的蜂蜜') #建立防守类型列表
reason_type = ('万恶的动画版火影','圣斗士','魔兽争霸','神雕侠侣') #建立攻防对应原因类型列表

a_d_dict = {'豪火球之术':'开启‘回忆忍者’','急速冷冻':'燃烧吧,小宇宙','神圣攻击':'15秒的大无敌','情花剧毒':'兑了水的蜂蜜'}

def duiying(x,y,z):    #定义攻、防、原因的表征带文字的函数
        return '\'%s\'对应于\'%s\', 出处为-%s' %(x,y,z) + ';' +'\n'
duiying_list = list(map (duiying,attract_type,defeat_type,reason_type)) #建立攻防原因对应文字列表
g.msgbox('这是xxx的原创游戏‘攻击与防御’',title = '攻击与防御',ok_button='开始吧,少年!',image = 'kaishi.gif' ) #名称介绍
g.msgbox('故事背景:···请移步著名独立游戏:“厕所奇遇记”···简单讲,人机互抽对方,看谁先被K.O···',title = '故事背景',ok_button='好吧,刚才是忽悠你,现在正式开始!') #内容简介
temp = g.choicebox(msg = '人类几滴血合适?', title = '站前准备', choices = (('1','2','3','4'))) #输入人类血量
hhp = int(temp) #存储人类血量
temp = g.choicebox(msg = '电脑几滴血合适?', title = '站前准备', choices = (('1','2','3','4'))) #输入电脑血量
mhp = int(temp) #存储电脑血量
temp1 = {'攻击':1,'防御':0} #初始化:‘第一步谁先攻击’
temp = g.choicebox(msg = '你是想先攻击,还是先防御?', title = '站前准备', choices = (('攻击','防御')))  #输入‘第一步谁先攻击’
p = temp1[temp]  ##输入‘第一步谁先攻击’
a_d_list = '' #初始化‘攻击-防御对应类型’
for i in range(4): #调出所有攻防类型
        a_d_list = a_d_list + duiying_list[i]
g.msgbox('攻击与防守列表如下:\n' + a_d_list) #显示所有攻防类型
while True: #开始游戏循环
    A = random.choice(attract_type) #本轮攻击方随机选择结果(如果攻击方为电脑)
    B = random.choice(defeat_type) #本轮防御方随机选择结果(如果防御方为电脑)
    if p == 1: #攻击方为人类
        temp = g.choicebox(msg = '少年,出招吧', title = '人类攻击阶段', choices = (attract_type)) #攻击方选择攻击招数
        if B == a_d_dict[temp]: #判定攻击=防御
            g.msgbox('不好意思,刚好被防御了,你出招为\'%s\',对方出招为:\'%s\',相生相克啊。'%(temp,B),title = '攻击阶段',ok_button='继续') #输出攻击=防御结果
        else:
            g.msgbox('攻击成功,你出招为:\'%s\'对方出招为:\'%s\',你给了对方一记老拳。'%(temp,B),title = '攻击阶段',ok_button='继续') #输出攻击>防御结果
            mhp = mhp - 1 #防御方降低血量
        if (mhp == 0): #检测防御方血量是否=0
            g.msgbox('游戏结束,电脑已经没血了···',title = '本轮总结',ok_button='哈哈哈哈哈') #防御方血量=0,游戏结束
            break #跳出循环
        else:
                assert ((hhp >= 0) and (mhp >=0)) #检测机制,防止血量存在负数
                g.msgbox('目前人类的血量为:%s;电脑的血量为:%s 战斗还没有结束,攻防转化,人类防御,电脑攻击···' %(str(hhp),str(mhp)),title = '本轮总结',ok_button='开始下一轮') #显示转换攻防
        p = p - 1 #攻防判据从人类攻击改为人类防守
    
    if p == 0:
        temp = g.choicebox(msg = '少年,防御吧,', title = '人类防御阶段', choices = (defeat_type))
        if temp == a_d_dict[A]:
            g.msgbox('恭喜,刚好抵挡了此次攻击,你出招为:\'%s\'对方出招为:\'%s\',旗鼓相当啊。'%(temp,A),title = '防御阶段',ok_button='继续')
        else:
            g.msgbox('防御失败,你出招为:\'%s\',对方出招为:\'%s\',对方黑了你一脸。'%(temp,A),title = '防御阶段',ok_button='继续')
            hhp = hhp - 1
        if (hhp == 0):
            g.msgbox('游戏结束,人类已经没血了···',title = '本轮总结',ok_button='5555555')
            break
        else:
            g.msgbox('目前人类的血量为:%s;电脑的血量为:%s 战斗还没有结束,攻防转化,人类攻击,电脑防御···' %(str(hhp),str(mhp)),title = '本轮总结',ok_button='开始下一轮')
        p = p + 1
g.msgbox('游戏版本:0.3版本,请期待下一版',title = '结束啦',ok_button='少年,要努力ing')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-14 15:52:09 | 显示全部楼层
有点意思,不过有个问题,0.1版本的似乎血量算法有问题,会变成无论如何都是电脑掉血,估计lz是逻辑错误,但是格式没有错误,所以python正常运作了。再接再厉吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-28 03:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表