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


    导语

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    正文

    一、效果展示

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

    1)末世第一天

    2)不同的选择结果不同

    3)查看人物信息

    二、代码展示

    1. def f():
    2. global choice,yourobject,choice2,Hp,Hunger,obj1,obj2,obj3,obj4,obj5,obj6,obj7,nun,koo,Def,Atk,uplimit
    3. while True:
    4. try:
    5. choice=int(input('\n>>(查看人物状态,返回1;查看物品栏,返回2):'))
    6. break
    7. except:
    8. print('error')
    9. if choice==1:
    10. print('查看人物状态')
    11. print('生命:'+str(Hp)+'\n'+'饥饿:'+str(Hunger)+'\n'+'攻击:'+str(Atk)+'\n'+'防御:'+str(Def))
    12. if choice==2:
    13. print('查看物品栏')
    14. print(sorted(yourobject.values()))
    15. if sorted(yourobject.values())==[]:
    16. print('物品栏为空!')
    17. koo=1
    18. else:
    19. while True:
    20. try:
    21. choice2=int(input('是否使用物品?(是:1;否;2):'))
    22. koo=0
    23. break
    24. except:
    25. print('error')
    26. if choice2==1 and koo==0:
    27. while True:
    28. try:
    29. nun=int(input('请输入将使用物品的序号:'))
    30. break
    31. except:
    32. print('error')
    33. print('你使用了'+yourobject1[nun])
    34. if obj1>=2 and nun==1:
    35. obj1-=1
    36. Hunger+=80
    37. if Hunger>=uphunger:
    38. Hunger=uphunger
    39. print('###############饥饿已达上线!')
    40. else:
    41. print('Hunger+80')
    42. yourobject[1]=str(1 )+'牛肉干'+'×'+str(obj1)
    43. elif obj1==1 and nun==1:
    44. yourobject.pop(nun)
    45. Hunger+=80
    46. if Hunger>=uphunger:
    47. Hunger=uphunger
    48. print('###############饥饿已达上线!')
    49. else:
    50. print('Hunger+80')
    51. elif obj2>=2 and nun==2:
    52. obj2-=1
    53. Hp+=50
    54. if Hp>=uplimit:
    55. Hp=uplimit
    56. print('###############血量已达上线!')
    57. else:
    58. print('Hp:+50')
    59. yourobject[2]=str(2 )+'旺仔牛奶'+'×'+str(obj2)
    60. elif obj2==1 and nun==2:
    61. yourobject.pop(nun)
    62. Hunger+=1
    63. Hp+=50
    64. if Hp>=uplimit:
    65. Hp=uplimit
    66. print('###############血量已达上线!')
    67. else:
    68. print('Hp:+50')
    69. elif obj3>=2 and nun==3:
    70. obj3-=1
    71. Atk+=15
    72. Hp+=90
    73. if Hp>=uplimit:
    74. Hp=uplimit
    75. print('###############血量已达上线!')
    76. print('攻击+15')
    77. else:
    78. print('Hp:+90\n攻击+15')
    79. yourobject[3]=str(3 )+'红牛'+'×'+str(obj3)
    80. elif obj3==1 and nun==3:
    81. yourobject.pop(nun)
    82. Atk+=15
    83. Hp+=90
    84. if Hp>uplimit:
    85. Hp=uplimit
    86. print('###############血量已达上线!')
    87. print('攻击+15')
    88. else:
    89. print('Hp:+90\n攻击+15')
    90. elif obj4>=2 and nun==4:
    91. obj4-=1
    92. Hunger+=100
    93. if Hunger>=uphunger:
    94. Hunger=uphunger
    95. print('###############饥饿已达上线!')
    96. else:
    97. print('Hunger+100')
    98. yourobject[4]=str(4 )+'鱼肉罐头'+'×'+str(obj4)
    99. elif obj4==1 and nun==4:
    100. yourobject.pop(nun)
    101. Hunger+=100
    102. if Hunger>=uphunger:
    103. Hunger=uphunger
    104. print('###############饥饿已达上线!')
    105. else:
    106. print('Hunger+100')
    107. elif obj5>=2 and nun==5:
    108. obj5-=1
    109. Def+=10
    110. print('防御+10')
    111. yourobject[5]=str(5 )+'健力多'+'×'+str(obj5)
    112. elif obj5==1 and nun==5:
    113. yourobject.pop(nun)
    114. Def+=10
    115. print('防御+10')
    116. elif obj6>=2 and nun==6:
    117. obj6-=1
    118. uplimit+=300
    119. print('生命上限+300')
    120. yourobject[6]=str(6 )+'肾宝片'+'×'+str(obj6)
    121. elif obj6==1 and nun==6:
    122. yourobject.pop(nun)
    123. uplimit+=300
    124. print('生命上限+300')
    125. elif obj7>=2 and nun==7:
    126. obj7-=1
    127. Atk+=1
    128. Def+=1
    129. print('攻击+1\n防御+1')
    130. yourobject[7]=str(7 )+'彩虹糖'+'×'+str(obj7)
    131. elif obj7==1 and nun==7:
    132. yourobject.pop(nun)
    133. Atk+=1
    134. Def+=1
    135. print('攻击+1\n防御+1')
    136. if choice==2019:
    137. print('获得一枚肾宝片!!!')
    138. name='肾宝片'
    139. q()
    140. obj6+=1
    141. yourobject[6]=str(6 )+name+'×'+str(obj6)
    142. yourobject1[6]=name
    143. elif choice==520:
    144. Atk+=200
    145. elif choice==1314:
    146. Def+=50
    147. def g():
    148. global time,choice1
    149. while True:
    150. try:
    151. print('\n现在是{},你该如何行动?\n>>1.搜索物资;2.打开菜单栏;3.在庇护所修整'.format(timedic[time]))
    152. choice1=int(input('>>你的选择是(输入1或2或3)?:'))
    153. break
    154. except:
    155. print('error')
    156. def t():
    157. enter=input('(enter继续游戏)')
    158. if enter=='':
    159. pass
    160. def t1():
    161. enter=input('(enter继续战斗!)\n')
    162. if enter=='':
    163. print('\n'+'*'*50)
    164. def w():
    165. global Hp,die,tap
    166. ff=randint(0,50)
    167. if ff==12 or ff==5 or ff==28 or ff==44:
    168. print('\n糟糕!\n出现了僵尸头目!!!')
    169. Hp-=50
    170. print('经过战斗,你损失了50点HP\n-50Hp')
    171. elif tap==1:
    172. print('你遭遇了尸潮!!!')
    173. Hp-=300
    174. print('受到重创!!!\nHp-300')
    175. die=1
    176. elif ff>30 and ff<40:
    177. print('\n糟糕!\n出现了普通僵尸!!!')
    178. Hp-=10
    179. print('经过战斗,你损失了10点HP\n-10Hp')
    180. else:
    181. print('\n你没有惊动丧尸。\n')
    182. def w1():
    183. global monster,Hp,Hp1
    184. print('{}发现了你!!!\n你将面临苦战!'.format(monster))
    185. t()
    186. while Hp>0 and Hp1>0:
    187. first=randint(0,1)
    188. if first==0:
    189. print('>>{}的回合!\n'.format(monster))
    190. w2()
    191. t1()
    192. elif first==1:
    193. print('>>你的回合!\n')
    194. w3()
    195. t1()
    196. def w2():
    197. global Atk1,Def,Hp,Hp1
    198. mon1=randint(1,10)
    199. if mon1==1:
    200. if Atk1<=Def:
    201. print('miss')
    202. else:
    203. Hp-=(Atk1-Def)
    204. print('>{}抬起了血腥的利爪,一记重击! {}的HP:{}\n 你的HP:{}\n***对你造成了{}点伤害!'.format(monster,monster,Hp1,Hp,Atk1-Def))
    205. else:
    206. if Atk1<=3*Def:
    207. print('miss')
    208. else:
    209. Hp-=(Atk1-3*Def)
    210. print('>{}抬手进行了普通攻击! {}的HP:{}\n 你的HP:{}\n***对你造成了{}点伤害!'.format(monster,monster,Hp1,Hp,Atk1-3*Def))
    211. def w3():
    212. global monster,Atk,Def1,Hp1,Hp
    213. you=randint(1,10)
    214. if you==1:
    215. if 2*Atk<=Def1:
    216. print('miss')
    217. else:
    218. Hp1-=(2*Atk-Def1)
    219. print('>你打出了致命一击!!! {}的HP:{}\n 你的HP:{}\n***对{}造成了{}点伤害!!!'.format(monster,Hp1,Hp,monster,2*Atk-Def1))
    220. else:
    221. if Atk<=Def1:
    222. print('miss')
    223. else:
    224. Hp1-=(Atk-Def1)
    225. print('>你打出了普通攻击! {}的HP:{}\n 你的HP:{}\n***对{}造成了{}点伤害!!!'.format(monster,Hp1,Hp,monster,Atk-Def1))
    226. def h():
    227. global obj1,obj2,name,obj3,obj4,obj5,obj6,obj7
    228. print('开始搜索!')
    229. obj=randint(1,40)
    230. if obj==1 or obj==4 or obj==7:
    231. name='牛肉干'
    232. q()
    233. obj1+=1
    234. yourobject[1]=str(1 )+name+'×'+str(obj1)
    235. yourobject1[1]=name
    236. elif obj==14 or obj==17 or obj==20 or obj==21:
    237. name='旺仔牛奶'
    238. q()
    239. obj2+=1
    240. yourobject[2]=str(2 )+name+'×'+str(obj2)
    241. yourobject1[2]=name
    242. elif obj==2 or obj==8 or obj==13:
    243. name='红牛'
    244. q()
    245. obj3+=1
    246. yourobject[3]=str(3 )+name+'×'+str(obj3)
    247. yourobject1[3]=name
    248. elif obj==24 or obj==11 or obj==10:
    249. name='鱼肉罐头'
    250. q()
    251. obj4+=1
    252. yourobject[4]=str(4 )+name+'×'+str(obj4)
    253. yourobject1[4]=name
    254. elif obj==5 or obj==15:
    255. name='健力多'
    256. q()
    257. obj5+=1
    258. yourobject[5]=str(5 )+name+'×'+str(obj5)
    259. yourobject1[5]=name
    260. elif obj==9:
    261. name='肾宝片'
    262. q()
    263. obj6+=1
    264. yourobject[6]=str(6 )+name+'×'+str(obj6)
    265. yourobject1[6]=name
    266. elif obj==40 or obj==33 or obj==35 or obj==37:
    267. name='彩虹糖'
    268. q()
    269. obj7+=1
    270. yourobject[7]=str(7 )+name+'×'+str(obj7)
    271. yourobject1[7]=name
    272. else:
    273. print('你什么都没找到!')
    274. t()
    275. def q():
    276. global name
    277. print('恭喜你,获得了'+name)
    278. t()
    279. yourobject={}
    280. yourobject1={}
    281. obj1=0
    282. obj2=0
    283. obj3=0
    284. obj4=0
    285. obj5=0
    286. obj6=0
    287. obj7=0
    288. Hp=250
    289. uplimit=250
    290. Hp1=550
    291. Hunger=300
    292. uphunger=300
    293. Day=0
    294. time=1
    295. choice1=0
    296. name=''
    297. name2=''
    298. a=''
    299. monster=''
    300. choice2=100
    301. koo=0
    302. tap=0
    303. Atk=22
    304. Atk1=70
    305. Def=10
    306. Def1=20
    307. die=0
    308. timedic={1:'清晨6点',2:'中午12点',3:'下午2点',4:'傍晚6点',5:'午夜12点'}
    309. from random import*
    310. while Hp>0:
    311. Day+=1
    312. time=1
    313. tap=0
    314. print('\n>>你被庇护所外丧尸的吼叫吵醒了,你活到了第{}天!######'.format(Day))
    315. if Day==1:
    316. print('末世的第一天,整座城市都被丧尸袭击了,交通瘫痪,电力受损。\n清晨6点,面对着突如其来的一切,你感到了迷茫与无助。')
    317. elif Day==7:
    318. print('\n事态似乎愈来愈严重了!\n')
    319. t()
    320. monster='【䘮爆者】'
    321. w1()
    322. if Hp<=0:
    323. print('你死了!')
    324. break
    325. elif Hp1<=0:
    326. print('{}已经死亡!'.format(monster))
    327. print('\n>>>>获得一枚肾宝片!!!')
    328. name='肾宝片'
    329. q()
    330. obj6+=1
    331. yourobject[6]=str(6 )+name+'×'+str(obj6)
    332. yourobject1[6]=name
    333. elif Day==22:
    334. print('\n你不确定是否还有活人!\n')
    335. t()
    336. monster='【尸王】'
    337. Hp1+=3000
    338. Atk1+=200
    339. Def1+=50
    340. w1()
    341. if Hp<=0:
    342. print('你死了!')
    343. break
    344. elif Hp1<=0:
    345. print('{}已经死亡!'.format(monster))
    346. print('\n>>>>获得一枚肾宝片!!!')
    347. name='肾宝片'
    348. q()
    349. obj6+=1
    350. yourobject[6]=str(6 )+name+'×'+str(obj6)
    351. yourobject1[6]=name
    352. t()
    353. while time<=5:
    354. g()
    355. if choice1==1:
    356. time+=1
    357. Hunger-=10
    358. print('\n饥饿让你行动迟缓! Hunger-10\n')
    359. h()
    360. if time==6:
    361. tap=1
    362. w()
    363. if die==1 and Hp<=0:
    364. print('你在尸潮中死亡!')
    365. break
    366. elif choice1==2:
    367. time=time
    368. f()
    369. elif choice1==3:
    370. time+=1
    371. Hp+=30
    372. if Hp>=uplimit:
    373. Hp=uplimit
    374. print('###############血量已达上线!无需休息!')
    375. else:
    376. print('Hp:+30')
    377. if Hunger<=0:
    378. Hp+=Hunger
    379. print('饥饿让你抓狂!\n你损失了{}点Hp\n-{}Hp'.format(abs(Hunger),abs(Hunger)))
    380. print('gameover')
    381. input('123:')

    总结

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

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

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

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

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

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

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

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

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

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

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

    小编一起末日求生吧!

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

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

    🔨推荐往期文章——

    项目1.0  泡泡机游戏

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

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

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

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

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

    项目5.8  翻牌小游戏

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

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

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

    🎄文章汇总——

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

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

  • 相关阅读:
    JAVA-信息录入
    2.6python 函数_python量化实用版教程(初级)
    YoloV8改进策略:Inner-IoU+clou,YoloV8的涨点明珠
    国内首家 EMQ 加入亚马逊云科技「初创加速-全球合作伙伴网络计划」
    【基于ChatGPT大模型】GIS应用、数据清洗、统计分析、论文助手、项目基金助手、科研绘图、AI绘图
    javabasic
    SpringCloud 远程通信【OpenFeign】
    AIE聚甲基丙烯酸甲酯PMMA微球/聚苯乙烯包覆聚AIE微球/AIE聚四苯基乙烯自由基溶液聚合微球研究
    Worthington肽合成应用丨胰凝乳蛋白酶方案
    u盘文件夹被隐藏怎么恢复正常?
  • 原文地址:https://blog.csdn.net/weixin_55822277/article/details/125753035