导语

世界上有那么一群人,他们相信在有生之年会遭遇末日电影中出现的那些情况。

诸如生化灾难、自然灾难、外星人入侵等等。

这群人有个挺酷的名字——“末日生存主义者”

他们凭着一股“反正我是信了”的精神,未雨绸缪。储备大量生存物资只不过入门课。

建造私人避难所,魔鬼式野外求生训练才是他们的日常。

当然,大部分人都不会刻意进行末世准备。但是小编觉得,大家的末世求生意识还是挺强的。

不知道大家还记不记得那些年我们抢过的盐?

所有文章完整的素材+源码都在

粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

这种居安思危的意识,也许跟我们总会接触到末世题材的作品有关。

不少知名电影就是末世背景,例如《行尸走肉》《釜山行》等等

这么好的题材当然也少不了游戏,风靡一时的H1Z1,经典的《辐射》系列等等,今天小编带着

热血激动也给大家制作一款Python版本的文字末世游戏叭!

(界面版本的末世游戏太耗头发了,自己做不出来,这次是简单的文字末世版本哈。)

正文

一、效果展示

代码是直接打包了哦,下面的演示就在exe文件上哈

1)末世第一天

2)不同的选择结果不同

3)查看人物信息

二、代码展示

def f():global choice,yourobject,choice2,Hp,Hunger,obj1,obj2,obj3,obj4,obj5,obj6,obj7,nun,koo,Def,Atk,uplimitwhile True:try:choice=int(input('\n>>(查看人物状态,返回1;查看物品栏,返回2):'))breakexcept:print('error')if choice==1:print('查看人物状态')print('生命:'+str(Hp)+'\n'+'饥饿:'+str(Hunger)+'\n'+'攻击:'+str(Atk)+'\n'+'防御:'+str(Def))if choice==2:print('查看物品栏')print(sorted(yourobject.values()))if sorted(yourobject.values())==[]:print('物品栏为空!')koo=1else:while True:try:choice2=int(input('是否使用物品?(是:1;否;2):'))koo=0breakexcept:print('error')if choice2==1 and koo==0:while True:try:nun=int(input('请输入将使用物品的序号:'))breakexcept:print('error')print('你使用了'+yourobject1[nun])if obj1>=2 and nun==1:obj1-=1Hunger+=80if Hunger>=uphunger:Hunger=uphungerprint('###############饥饿已达上线!')else:print('Hunger+80')yourobject[1]=str(1 )+'牛肉干'+'×'+str(obj1)elif obj1==1 and nun==1:yourobject.pop(nun)Hunger+=80if Hunger>=uphunger:Hunger=uphungerprint('###############饥饿已达上线!')else:print('Hunger+80')elif obj2>=2 and nun==2:obj2-=1Hp+=50if Hp>=uplimit:Hp=uplimitprint('###############血量已达上线!')else:print('Hp:+50')yourobject[2]=str(2 )+'旺仔牛奶'+'×'+str(obj2)elif obj2==1 and nun==2:yourobject.pop(nun)Hunger+=1Hp+=50if Hp>=uplimit:Hp=uplimitprint('###############血量已达上线!')else:print('Hp:+50')elif obj3>=2 and nun==3:obj3-=1Atk+=15Hp+=90if Hp>=uplimit:Hp=uplimitprint('###############血量已达上线!')print('攻击+15')else:print('Hp:+90\n攻击+15')yourobject[3]=str(3 )+'红牛'+'×'+str(obj3)elif obj3==1 and nun==3:yourobject.pop(nun)Atk+=15Hp+=90if Hp>uplimit:Hp=uplimitprint('###############血量已达上线!')print('攻击+15')else:print('Hp:+90\n攻击+15')elif obj4>=2 and nun==4:obj4-=1Hunger+=100if Hunger>=uphunger:Hunger=uphungerprint('###############饥饿已达上线!')else:print('Hunger+100')yourobject[4]=str(4 )+'鱼肉罐头'+'×'+str(obj4)elif obj4==1 and nun==4:yourobject.pop(nun)Hunger+=100if Hunger>=uphunger:Hunger=uphungerprint('###############饥饿已达上线!')else:print('Hunger+100')elif obj5>=2 and nun==5:obj5-=1Def+=10print('防御+10')yourobject[5]=str(5 )+'健力多'+'×'+str(obj5)elif obj5==1 and nun==5:yourobject.pop(nun)Def+=10print('防御+10')elif obj6>=2 and nun==6:obj6-=1uplimit+=300print('生命上限+300')yourobject[6]=str(6 )+'肾宝片'+'×'+str(obj6)elif obj6==1 and nun==6:yourobject.pop(nun)uplimit+=300print('生命上限+300')elif obj7>=2 and nun==7:obj7-=1Atk+=1Def+=1print('攻击+1\n防御+1')yourobject[7]=str(7 )+'彩虹糖'+'×'+str(obj7)elif obj7==1 and nun==7:yourobject.pop(nun)Atk+=1Def+=1print('攻击+1\n防御+1')if choice==2019:print('获得一枚肾宝片!!!')name='肾宝片'q()obj6+=1yourobject[6]=str(6 )+name+'×'+str(obj6)yourobject1[6]=nameelif choice==520:Atk+=200elif choice==1314:Def+=50def g():global time,choice1while True:try:print('\n现在是{},你该如何行动?\n>>1.搜索物资;2.打开菜单栏;3.在庇护所修整'.format(timedic[time]))choice1=int(input('>>你的选择是(输入1或2或3)?:'))breakexcept:print('error')def t():enter=input('(enter继续游戏)')if enter=='':passdef t1():enter=input('(enter继续战斗!)\n')if enter=='':print('\n'+'*'*50)def w():global Hp,die,tapff=randint(0,50)if ff==12 or ff==5 or ff==28 or ff==44:print('\n糟糕!\n出现了僵尸头目!!!')Hp-=50print('经过战斗,你损失了50点HP\n-50Hp')eliftap==1:print('你遭遇了尸潮!!!')Hp-=300print('受到重创!!!\nHp-300')die=1elif ff>30 and ff0 and Hp1>0:first=randint(0,1)if first==0:print('>>{}的回合!\n'.format(monster))w2()t1()elif first==1:print('>>你的回合!\n')w3()t1()def w2():global Atk1,Def,Hp,Hp1mon1=randint(1,10)if mon1==1:if Atk1{}抬起了血腥的利爪,一记重击! {}的HP:{}\n 你的HP:{}\n***对你造成了{}点伤害!'.format(monster,monster,Hp1,Hp,Atk1-Def))else:if Atk1{}抬手进行了普通攻击! {}的HP:{}\n你的HP:{}\n***对你造成了{}点伤害!'.format(monster,monster,Hp1,Hp,Atk1-3*Def))def w3():global monster,Atk,Def1,Hp1,Hpyou=randint(1,10)if you==1:if 2*Atk你打出了致命一击!!! {}的HP:{}\n你的HP:{}\n***对{}造成了{}点伤害!!!'.format(monster,Hp1,Hp,monster,2*Atk-Def1))else:if Atk你打出了普通攻击! {}的HP:{}\n 你的HP:{}\n***对{}造成了{}点伤害!!!'.format(monster,Hp1,Hp,monster,Atk-Def1)) def h():global obj1,obj2,name,obj3,obj4,obj5,obj6,obj7print('开始搜索!')obj=randint(1,40)if obj==1 or obj==4 or obj==7:name='牛肉干'q()obj1+=1yourobject[1]=str(1 )+name+'×'+str(obj1)yourobject1[1]=nameelif obj==14 or obj==17 or obj==20 or obj==21:name='旺仔牛奶'q()obj2+=1yourobject[2]=str(2 )+name+'×'+str(obj2)yourobject1[2]=nameelif obj==2 or obj==8 or obj==13:name='红牛'q()obj3+=1yourobject[3]=str(3 )+name+'×'+str(obj3)yourobject1[3]=nameelif obj==24 or obj==11 or obj==10:name='鱼肉罐头'q()obj4+=1yourobject[4]=str(4 )+name+'×'+str(obj4)yourobject1[4]=nameelif obj==5 or obj==15:name='健力多'q()obj5+=1yourobject[5]=str(5 )+name+'×'+str(obj5)yourobject1[5]=nameelif obj==9:name='肾宝片'q()obj6+=1yourobject[6]=str(6 )+name+'×'+str(obj6)yourobject1[6]=nameelif obj==40 or obj==33 or obj==35 or obj==37:name='彩虹糖'q()obj7+=1yourobject[7]=str(7 )+name+'×'+str(obj7)yourobject1[7]=nameelse:print('你什么都没找到!')t()def q():global nameprint('恭喜你,获得了'+name)t()yourobject={}yourobject1={}obj1=0obj2=0obj3=0obj4=0obj5=0obj6=0obj7=0Hp=250uplimit=250Hp1=550Hunger=300uphunger=300Day=0time=1choice1=0name=''name2=''a=''monster=''choice2=100koo=0tap=0Atk=22Atk1=70Def=10Def1=20die=0timedic={1:'清晨6点',2:'中午12点',3:'下午2点',4:'傍晚6点',5:'午夜12点'}from random import*while Hp>0:Day+=1time=1tap=0print('\n>>你被庇护所外丧尸的吼叫吵醒了,你活到了第{}天!######'.format(Day))if Day==1:print('末世的第一天,整座城市都被丧尸袭击了,交通瘫痪,电力受损。\n清晨6点,面对着突如其来的一切,你感到了迷茫与无助。')elif Day==7:print('\n事态似乎愈来愈严重了!\n')t()monster='【䘮爆者】'w1()if Hp<=0:print('你死了!')breakelif Hp1>>>获得一枚肾宝片!!!')name='肾宝片'q()obj6+=1yourobject[6]=str(6 )+name+'×'+str(obj6)yourobject1[6]=nameelif Day==22:print('\n你不确定是否还有活人!\n')t()monster='【尸王】'Hp1+=3000Atk1+=200Def1+=50w1()if Hp<=0:print('你死了!')breakelif Hp1>>>获得一枚肾宝片!!!')name='肾宝片'q()obj6+=1yourobject[6]=str(6 )+name+'×'+str(obj6)yourobject1[6]=namet()while time<=5:g()if choice1==1:time+=1Hunger-=10print('\n饥饿让你行动迟缓!Hunger-10\n')h()if time==6:tap=1w()if die==1 and Hp=uplimit:Hp=uplimitprint('###############血量已达上线!无需休息!')else:print('Hp:+30')if Hunger<=0:Hp+=Hungerprint('饥饿让你抓狂!\n你损失了{}点Hp\n-{}Hp'.format(abs(Hunger),abs(Hunger)))print('gameover')input('123:')

总结

末日生存类游戏向来有种让人难以拒绝的浪漫。

比起其他开放世界类游戏,末日背景的独特魅力在于“生存”这一最本质的问题。

我们不是为了什么人或者什么物,亦或者是拯救世界,我们只是为了活下去,仅此而已。

在熟悉又陌生的的都市废墟之中,在无法无距的末日之下,这种代入感令人心跳加速。

​所以小编觉得“未雨绸缪,在危机降临时自救”的末日求生主义者绝对不是精神病。

不仅如此,不少人还觉得这样很酷,对那些昂贵又牢靠的工具与物资感到向往。这一类人其实

也可以理解成类似军事爱好者或是收集家,当然,也绝非什么不好的现象。相反作为一种小众

现象,末日生存主义很快地融入到以游戏为代表的文化作品当中。

如今在许多游戏里都或多或少会加入这一元素,而显然不少玩家(包括小编我)都蛮喜欢这种

“看起来很酷”的玩意儿。一款正统的末世生存类游戏,现在已经很少了。

这种尝试确实是值得鼓励的,所以大伙赶紧来找我拿源码体验一下吧!点击,进入游戏来和

小编一起末日求生吧!

互动话题:假如末世来了, 你只能带三样物品,你会带什么呢?

完整的免费源码领取处:找我吖!文末可得自行领取,滴滴我也可!

推荐往期文章——

项目1.0  泡泡机游戏

 【Pygame实战】超有趣的泡泡游戏来袭——愿你童心不泯,永远快乐简单哦~

项目8.1   《篮球“王子”》小游戏

 【Pygame实战】趣味篮球——迎“篮”而上 ,乐在“球”中,喜欢打篮球的小可爱前来报道~

项目7.3  想灭病毒保卫城市》游戏

【Pygame实战】疫情期间给不能出门的你推荐一款爽游 《消灭病毒保卫城市》【强推】愿早日结束

项目5.8  翻牌小游戏

Pygame实战:记忆差怎么办?别急,增强记忆力的小游戏送给你~【越玩越上瘾】

项目5.3 《鱿鱼游戏》之《一二三木头人》小游戏

当《鱿鱼游戏》强势来袭:“一、二、三,木头人,思密达。”你还在恐惧嘛?

文章汇总——

项目1.0 Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了

(更多内容+源码都在文章汇总哦!!欢迎阅读~)