【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

导语

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

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

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

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

【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

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

【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

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

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

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

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

【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

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

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

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

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

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

正文

一、效果展示

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

【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

1)末世第一天

【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

2)不同的选择结果不同

【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

3)查看人物信息

【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

二、代码展示

def f():
        global choice,yourobject,choice2,Hp,Hunger,obj1,obj2,obj3,obj4,obj5,obj6,obj7,nun,koo,Def,Atk,uplimit
        while True:
                try:
                        choice=int(input('\n>>(查看人物状态,返回1;查看物品栏,返回2):'))
                        break
                except:
                        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=1
            else:
                    while True:
                            try:
                                    choice2=int(input('是否使用物品?(是:1;否;2):'))
                                    koo=0
                                    break
                            except:
                                    print('error')
            if choice2==1 and koo==0:
                while True:
                        try:
                                nun=int(input('请输入将使用物品的序号:'))
                                break
                        except:
                                print('error')
                print('你使用了'+yourobject1[nun])
                if obj1>=2 and nun==1:
                    obj1-=1
                    Hunger+=80
                    if Hunger>=uphunger:
                            Hunger=uphunger
                            print('###############饥饿已达上线!')
                    else:
                            print('Hunger+80')
                    yourobject[1]=str(1 )+'牛肉干'+'×'+str(obj1)

                elif obj1==1 and nun==1:
                    yourobject.pop(nun)
                    Hunger+=80
                    if Hunger>=uphunger:
                            Hunger=uphunger
                            print('###############饥饿已达上线!')
                    else:
                            print('Hunger+80')
                elif obj2>=2 and nun==2:
                    obj2-=1
                    Hp+=50
                    if Hp>=uplimit:
                            Hp=uplimit
                            print('###############血量已达上线!')
                    else:
                            print('Hp:+50')
                    yourobject[2]=str(2 )+'旺仔牛奶'+'×'+str(obj2)
                elif obj2==1 and nun==2:
                    yourobject.pop(nun)
                    Hunger+=1
                    Hp+=50
                    if Hp>=uplimit:
                            Hp=uplimit
                            print('###############血量已达上线!')
                    else:
                            print('Hp:+50')
                elif obj3>=2 and nun==3:
                    obj3-=1
                    Atk+=15
                    Hp+=90
                    if Hp>=uplimit:
                            Hp=uplimit
                            print('###############血量已达上线!')
                            print('攻击+15')
                    else:
                            print('Hp:+90\n攻击+15')
                    yourobject[3]=str(3 )+'红牛'+'×'+str(obj3)
                elif obj3==1 and nun==3:
                    yourobject.pop(nun)
                    Atk+=15
                    Hp+=90
                    if Hp>uplimit:
                            Hp=uplimit
                            print('###############血量已达上线!')
                            print('攻击+15')
                    else:
                            print('Hp:+90\n攻击+15')
                elif obj4>=2 and nun==4:
                    obj4-=1
                    Hunger+=100
                    if Hunger>=uphunger:
                            Hunger=uphunger
                            print('###############饥饿已达上线!')
                    else:
                            print('Hunger+100')
                    yourobject[4]=str(4 )+'鱼肉罐头'+'×'+str(obj4)
                elif obj4==1 and nun==4:
                    yourobject.pop(nun)
                    Hunger+=100
                    if Hunger>=uphunger:
                            Hunger=uphunger
                            print('###############饥饿已达上线!')
                    else:
                            print('Hunger+100')
                elif obj5>=2 and nun==5:
                    obj5-=1
                    Def+=10
                    print('防御+10')
                    yourobject[5]=str(5 )+'健力多'+'×'+str(obj5)
                elif obj5==1 and nun==5:
                    yourobject.pop(nun)
                    Def+=10
                    print('防御+10')
                elif obj6>=2 and nun==6:
                    obj6-=1
                    uplimit+=300
                    print('生命上限+300')
                    yourobject[6]=str(6 )+'肾宝片'+'×'+str(obj6)
                elif obj6==1 and nun==6:
                    yourobject.pop(nun)
                    uplimit+=300
                    print('生命上限+300')
                elif obj7>=2 and nun==7:
                    obj7-=1
                    Atk+=1
                    Def+=1
                    print('攻击+1\n防御+1')
                    yourobject[7]=str(7 )+'彩虹糖'+'×'+str(obj7)
                elif obj7==1 and nun==7:
                    yourobject.pop(nun)
                    Atk+=1
                    Def+=1
                    print('攻击+1\n防御+1')
        if choice==2019:
            print('获得一枚肾宝片!!!')
            name='肾宝片'
            q()
            obj6+=1
            yourobject[6]=str(6 )+name+'×'+str(obj6)
            yourobject1[6]=name
        elif choice==520:
            Atk+=200
        elif choice==1314:
            Def+=50
def g():
    global time,choice1
    while True:
        try:
                print('\n现在是{},你该如何行动?\n>>1.搜索物资;2.打开菜单栏;3.在庇护所修整'.format(timedic[time]))
                choice1=int(input('>>你的选择是(输入1或2或3)?:'))
                break
        except:
                print('error')
def t():
        enter=input('(enter继续游戏)')
        if enter=='':
                pass
def t1():
        enter=input('(enter继续战斗!)\n')
        if enter=='':
                print('\n'+'*'*50)
def w():
    global Hp,die,tap
    ff=randint(0,50)
    if ff==12 or ff==5 or ff==28 or ff==44:
        print('\n糟糕!\n出现了僵尸头目!!!')
        Hp-=50
        print('经过战斗,你损失了50点HP\n-50Hp')
    elif  tap==1:
        print('你遭遇了尸潮!!!')
        Hp-=300
        print('受到重创!!!\nHp-300')
        die=1
    elif ff>30 and ff<40: print('\n糟糕!\n出现了普通僵尸!!!') hp-="10" print('经过战斗,你损失了10点hp\n-10hp') else: print('\n你没有惊动丧尸。\n') def w1(): global monster,hp,hp1 print('{}发现了你!!!\n你将面临苦战!'.format(monster)) t() while hp>0 and Hp1>0:
                first=randint(0,1)
                if first==0:
                        print('>>{}&#x7684;&#x56DE;&#x5408;&#xFF01;\n'.format(monster))
                        w2()
                        t1()
                elif first==1:
                        print('>>&#x4F60;&#x7684;&#x56DE;&#x5408;&#xFF01;\n')
                        w3()
                        t1()
def w2():
        global Atk1,Def,Hp,Hp1
        mon1=randint(1,10)
        if mon1==1:
                if Atk1<=def: print('miss') else: hp-="(Atk1-Def)" print('>{}&#x62AC;&#x8D77;&#x4E86;&#x8840;&#x8165;&#x7684;&#x5229;&#x722A;&#xFF0C;&#x4E00;&#x8BB0;&#x91CD;&#x51FB;&#xFF01;               {}&#x7684;HP&#xFF1A;{}\n                                                   &#x4F60;&#x7684;HP&#xFF1A;{}\n***&#x5BF9;&#x4F60;&#x9020;&#x6210;&#x4E86;{}&#x70B9;&#x4F24;&#x5BB3;&#xFF01;'.format(monster,monster,Hp1,Hp,Atk1-Def))
        else:
                if Atk1<=3*def: print('miss') else: hp-="(Atk1-3*Def)" print('>{}&#x62AC;&#x624B;&#x8FDB;&#x884C;&#x4E86;&#x666E;&#x901A;&#x653B;&#x51FB;&#xFF01;               {}&#x7684;HP&#xFF1A;{}\n                                              &#x4F60;&#x7684;HP&#xFF1A;{}\n***&#x5BF9;&#x4F60;&#x9020;&#x6210;&#x4E86;{}&#x70B9;&#x4F24;&#x5BB3;&#xFF01;'.format(monster,monster,Hp1,Hp,Atk1-3*Def))
def w3():
        global monster,Atk,Def1,Hp1,Hp
        you=randint(1,10)
        if you==1:
                if 2*Atk<=def1: print('miss') else: hp1-="(2*Atk-Def1)" print('>&#x4F60;&#x6253;&#x51FA;&#x4E86;&#x81F4;&#x547D;&#x4E00;&#x51FB;&#xFF01;&#xFF01;&#xFF01;               {}&#x7684;HP&#xFF1A;{}\n                                          &#x4F60;&#x7684;HP&#xFF1A;{}\n***&#x5BF9;{}&#x9020;&#x6210;&#x4E86;{}&#x70B9;&#x4F24;&#x5BB3;&#xFF01;&#xFF01;&#xFF01;'.format(monster,Hp1,Hp,monster,2*Atk-Def1))
        else:
                if Atk<=def1: print('miss') else: hp1-="(Atk-Def1)" print('>&#x4F60;&#x6253;&#x51FA;&#x4E86;&#x666E;&#x901A;&#x653B;&#x51FB;&#xFF01;               {}&#x7684;HP&#xFF1A;{}\n                                   &#x4F60;&#x7684;HP&#xFF1A;{}\n***&#x5BF9;{}&#x9020;&#x6210;&#x4E86;{}&#x70B9;&#x4F24;&#x5BB3;&#xFF01;&#xFF01;&#xFF01;'.format(monster,Hp1,Hp,monster,Atk-Def1))

def h():
    global obj1,obj2,name,obj3,obj4,obj5,obj6,obj7
    print('&#x5F00;&#x59CB;&#x641C;&#x7D22;&#xFF01;')
    obj=randint(1,40)
    if obj==1 or obj==4 or obj==7:
        name='&#x725B;&#x8089;&#x5E72;'
        q()
        obj1+=1
        yourobject[1]=str(1 )+name+'&#xD7;'+str(obj1)
        yourobject1[1]=name
    elif obj==14 or obj==17 or obj==20 or obj==21:
        name='&#x65FA;&#x4ED4;&#x725B;&#x5976;'
        q()
        obj2+=1
        yourobject[2]=str(2 )+name+'&#xD7;'+str(obj2)
        yourobject1[2]=name
    elif obj==2 or obj==8 or obj==13:
        name='&#x7EA2;&#x725B;'
        q()
        obj3+=1
        yourobject[3]=str(3 )+name+'&#xD7;'+str(obj3)
        yourobject1[3]=name
    elif obj==24 or obj==11 or obj==10:
        name='&#x9C7C;&#x8089;&#x7F50;&#x5934;'
        q()
        obj4+=1
        yourobject[4]=str(4 )+name+'&#xD7;'+str(obj4)
        yourobject1[4]=name
    elif obj==5 or obj==15:
        name='&#x5065;&#x529B;&#x591A;'
        q()
        obj5+=1
        yourobject[5]=str(5 )+name+'&#xD7;'+str(obj5)
        yourobject1[5]=name
    elif obj==9:
        name='&#x80BE;&#x5B9D;&#x7247;'
        q()
        obj6+=1
        yourobject[6]=str(6 )+name+'&#xD7;'+str(obj6)
        yourobject1[6]=name
    elif obj==40 or obj==33 or obj==35 or obj==37:
        name='&#x5F69;&#x8679;&#x7CD6;'
        q()
        obj7+=1
        yourobject[7]=str(7 )+name+'&#xD7;'+str(obj7)
        yourobject1[7]=name

    else:
        print('&#x4F60;&#x4EC0;&#x4E48;&#x90FD;&#x6CA1;&#x627E;&#x5230;&#xFF01;')
        t()
def q():
    global name
    print('&#x606D;&#x559C;&#x4F60;&#xFF0C;&#x83B7;&#x5F97;&#x4E86;'+name)
    t()

yourobject={}
yourobject1={}
obj1=0
obj2=0
obj3=0
obj4=0
obj5=0
obj6=0
obj7=0
Hp=250
uplimit=250
Hp1=550
Hunger=300
uphunger=300
Day=0
time=1
choice1=0
name=''
name2=''
a=''
monster=''
choice2=100
koo=0
tap=0
Atk=22
Atk1=70
Def=10
Def1=20
die=0
timedic={1:'&#x6E05;&#x6668;6&#x70B9;',2:'&#x4E2D;&#x5348;12&#x70B9;',3:'&#x4E0B;&#x5348;2&#x70B9;',4:'&#x508D;&#x665A;6&#x70B9;',5:'&#x5348;&#x591C;12&#x70B9;'}
from random import*
while Hp>0:
    Day+=1
    time=1
    tap=0
    print('\n>>&#x4F60;&#x88AB;&#x5E87;&#x62A4;&#x6240;&#x5916;&#x4E27;&#x5C38;&#x7684;&#x543C;&#x53EB;&#x5435;&#x9192;&#x4E86;&#xFF0C;&#x4F60;&#x6D3B;&#x5230;&#x4E86;&#x7B2C;{}&#x5929;&#xFF01;######'.format(Day))
    if Day==1:
        print('&#x672B;&#x4E16;&#x7684;&#x7B2C;&#x4E00;&#x5929;&#xFF0C;&#x6574;&#x5EA7;&#x57CE;&#x5E02;&#x90FD;&#x88AB;&#x4E27;&#x5C38;&#x88AD;&#x51FB;&#x4E86;&#xFF0C;&#x4EA4;&#x901A;&#x762B;&#x75EA;&#xFF0C;&#x7535;&#x529B;&#x53D7;&#x635F;&#x3002;\n&#x6E05;&#x6668;6&#x70B9;&#xFF0C;&#x9762;&#x5BF9;&#x7740;&#x7A81;&#x5982;&#x5176;&#x6765;&#x7684;&#x4E00;&#x5207;&#xFF0C;&#x4F60;&#x611F;&#x5230;&#x4E86;&#x8FF7;&#x832B;&#x4E0E;&#x65E0;&#x52A9;&#x3002;')
    elif Day==7:
        print('\n&#x4E8B;&#x6001;&#x4F3C;&#x4E4E;&#x6108;&#x6765;&#x6108;&#x4E25;&#x91CD;&#x4E86;&#xFF01;\n')
        t()
        monster='&#x3010;&#x462E;&#x7206;&#x8005;&#x3011;'
        w1()
        if Hp<=0: print('你死了!') break elif hp1<="0:" print('{}已经死亡!'.format(monster)) print('\n>>>>&#x83B7;&#x5F97;&#x4E00;&#x679A;&#x80BE;&#x5B9D;&#x7247;&#xFF01;&#xFF01;&#xFF01;')
                name='&#x80BE;&#x5B9D;&#x7247;'
                q()
                obj6+=1
                yourobject[6]=str(6 )+name+'&#xD7;'+str(obj6)
                yourobject1[6]=name
    elif Day==22:
        print('\n&#x4F60;&#x4E0D;&#x786E;&#x5B9A;&#x662F;&#x5426;&#x8FD8;&#x6709;&#x6D3B;&#x4EBA;&#xFF01;\n')
        t()
        monster='&#x3010;&#x5C38;&#x738B;&#x3011;'
        Hp1+=3000
        Atk1+=200
        Def1+=50
        w1()
        if Hp<=0: print('你死了!') break elif hp1<="0:" print('{}已经死亡!'.format(monster)) print('\n>>>>&#x83B7;&#x5F97;&#x4E00;&#x679A;&#x80BE;&#x5B9D;&#x7247;&#xFF01;&#xFF01;&#xFF01;')
                name='&#x80BE;&#x5B9D;&#x7247;'
                q()
                obj6+=1
                yourobject[6]=str(6 )+name+'&#xD7;'+str(obj6)
                yourobject1[6]=name
    t()
    while time<=5: g() if choice1="=1:" time+="1" hunger-="10" print('\n饥饿让你行动迟缓! hunger-10\n') h() time="=6:" tap="1" w() die="=1" and hp<="0:" print('你在尸潮中死亡!') break elif f() hp+="30" hp>=uplimit:
                            Hp=uplimit
                            print('###############&#x8840;&#x91CF;&#x5DF2;&#x8FBE;&#x4E0A;&#x7EBF;&#xFF01;&#x65E0;&#x9700;&#x4F11;&#x606F;&#xFF01;')
                else:
                            print('Hp:+30')

    if Hunger<=0: hp+="Hunger" print('饥饿让你抓狂!\n你损失了{}点hp\n-{}hp'.format(abs(hunger),abs(hunger))) print('gameover') input('123:')< code></=0:></=5:></=0:></=0:></=def1:></=def1:></=3*def:></=def:></40:>

【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

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

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

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

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

【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

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

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

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

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

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

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

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

小编一起末日求生吧!

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

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

🔨推荐往期文章——

项目1.0 泡泡机游戏

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

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

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

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

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

项目5.8 翻牌小游戏

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

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

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

🎄文章汇总——

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

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

【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

Original: https://blog.csdn.net/weixin_55822277/article/details/125753035
Author: 顾木子吖
Title: 【Pygame实战】末世来临,真正从零开始的残酷生存游戏,你能活多久?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/779330/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球