记一次用python开发小游戏的经历

在学习if语句和循环时,突然想起初中时玩过一款叫《黑道圣徒3》的游戏,里面有一个文字冒险的小游戏,看样子能用if实现,就想着把它做出来。

  1. 游戏玩法
  2. 开发,第一次的失败
  3. 开发,重整旗鼓
  4. 待解决问题及反思
    一、游戏玩法:
    这是一个文字冒险小游戏,全程通过选项触发剧情的推进。
    二、开发,及第一次的失败
    一开始没有画流程图,也没有先想好用哪些语句,涉及什么变量就直接if开干了:(这个程序不能跑,因为根本都没写完)
###############################################################
# - 黑道圣徒3的文字游戏
#瞎搞的
##############################################################
end= '感谢你玩龙和眼泪:扯淡黑暗三部曲第一章'
#第一段正文:
print('你醒来的时候发现自己躺在冰冷的石板上。你站起来察觉到一个由两支火\n把照亮的小房间。他的背面有一扇门,南面有一个洞\n\n你怎么办?')
print('1、开门')
print('2、拿一把抢')
print('3、穿过洞穴')
print('4、小憩一会儿')
A = int(input('>'))
#第一段选项
if A == 1:print('拿一把枪\n')print('你举起火把关掉壁灯然后打开门。一条看不到尽头的漆黑走廊呈现在')print('面前,阴森恐怖寒气鄙人。在你意识到火把将要熄灭之前。你感觉像\n是走不尽头\n')print('
if A == 4:e1 == 4print('小憩一会儿')
#A==3完结线路#
if A == 3:print('穿过洞穴')print('洞太小了,你穿不过去')print('你该怎么办?')print('1、开门')print('2、拿一把抢')print('3、小憩一会儿')A==int(input('>'))
#第一场景死亡
if A ==1 or e1==1:print('开门')print('你小心翼翼地打开门并继续前行,这时你的脚踩到了一块松动的石板\n\n你掉下去并摔断了脖子\n')print('你死了')print(end)
#################################
###################第二段选项B == int(input('>'))if B == 1:print('继续前进')if B==3:print('3、跑回去再拿支火把')if B == 2:#第三段剧情print('继续前进\n')print('你鼓起勇气前进,向世间上的所有神灵祈祷千万别让火把熄灭。幸运')print('的是火把没有熄灭。走廊前泛出隐隐微光。你听到了巨大的石块相互')print('碰撞发出的声音\n\n')print('你想怎么办?\n')print('1、继续前进')print('2、挺剑而起')print('3、目送秋波')
##################C =int(input('>'))if C ==1:print('继续前进\n')
#################print('你沿着清澈湛蓝的光芒前行,走廊上出现了一个巨大的洞穴,光芒也')print('开始越发明亮...此处被一个巨大的发光湖泊照亮。一只独角兽在旁边\梳理毛发\n你怎么办')print('1、看着这只独角兽')print('2、抚摸这只独角兽')print('3、杀死独角兽')D=int(input('>'))if D== 1:print('它看着像是独角兽')print('你想怎么办?\n')print('1、抚摸这只独角兽')print('2、杀死独角兽')D=int(input('>'))if D==1:print('你请求地用你的手去抚摸独角兽的毛。独角兽温顺地发出叫声并用它\n的鼻子蹭你的脑袋。可是它的角却戳到了你的眼睛,你痛得直往后\n退。此时你的脚踩到了一块松动的石头\n\n')print('你因此摔倒并扭断了你的脖子\n\n你死了\n')print(end)if D==2:print('杀了独角兽\n')print('你赢了')print(end)if D == 2:print('你请求地用你的手去抚摸独角兽的毛。独角兽温顺地发出叫声并用它\n的鼻子蹭你的脑袋。可是它的角却戳到了你的眼睛,你痛得直往后\n退。此时你的脚踩到了一块松动的石头\n\n')print('你因此摔倒并扭断了你的脖子\n\n你死了\n')print(end)if D==3:print('杀了独角兽\n')print('你赢了')print(end)

有以下问题:

  1. 没画整体的流程图,以至于一些循环的流程只有重新写一遍
  2. 每一关都只设计了一个变量,这使得每一段分支都需要用pritn再打印一次
    3.没有重开选项:游戏失败后只能直接退出再重开
    4.注释太少,到后期我自己都看不懂之前写的什么
    三、开发,重整旗鼓
    在经过一次反思后,我画了流程图进行了重开发

    虽然该流程图十分简陋,但这却极大的提升了我的效率,很快便有了如下的代码
end= '感谢你玩龙和眼泪:扯淡黑暗三部曲第一章'
a1 = '开门'
a2 = '拿一把抢'
a3 = '穿过洞穴'
a4 = '小憩一会儿'
e=0
x=1
while e == 0 or x==0:print('你醒来的时候发现自己躺在冰冷的石板上。你站起来察觉到一个由两支火\n把照亮的小房间。它的背面有一扇门,南面有一个洞\n\n你怎么办?')print('1、开门\n2、拿一把抢\n3、穿过洞穴\n4、小憩一会儿\n')A = int(input('>'))if A ==1:e =1print(a1)if A ==2:#拿一把枪print(a2)e=2if A == 3:e == 11print (a3)print('洞太小了,你穿不过去\n你该怎么办?')print('1、'+a1)print('2、'+a2)print('3、'+a4)A=int(input('>'))if A==1:print(a1)e=1if A == 2:print(a2)e=2if A==3:print(a3)e=0if A ==4:e==0print(a4)
######第一回结局##################     if e==1:    print('你小心翼翼地打开门并继续前行,这时你的脚踩到了一块松动的石板\n\n你掉下去并摔断了脖子\n')print('你死了')print(end)x= int (input('输入0重启'))
###################第二回开始##############b1='继续前进'b2='寻找暗门'b3='跑回去再拿支火把'if e ==2:print('你举起火把关掉壁灯然后打开门。一条看不到尽头的漆黑走廊呈现在')print('面前,阴森恐怖寒气鄙人。在你意识到火把将要熄灭之前。你感觉像\n是走不尽头\n你会怎么办?')print('1、'+b1)print('2、'+b2)print('3、'+b3)B=int(input('>'))if B==1:print(b1)e=21if B==2:print(b2)e=22if B==3:print(b3)e=23
#################第二回结局#####################if e==22:print('没有暗门\n你该怎么办?')print('1、'+b1)print('2、'+b3)c=int(input('>'))if c==1:e=21if c==2:e=23if e==23:print('你开始拼命地跑回大厅,这时你的脚踩到一块松动的石板\n你掉下去并摔断了脖子\n你死了')print(end)x= int (input('输入0重启'))
##################第三回开始#####################        if e == 21:c1='继续前进'c2='挺剑而起'c3='目送秋波'print('你鼓起勇气前进,向世间上的所有神灵祈祷千万别让火把熄灭。幸运')print('的是火把没有熄灭。走廊前泛出隐隐微光。你听到了巨大的石块相互')print('碰撞发出的声音\n\n')print('你想怎么办?\n')print('1、'+c1)print('2、'+c2)print('3、'+c3)C=int(input('>'))if  C==1:e=31if C==2:e=32if C==3:e=33
###############第三回结局###########################
'''if e==32:print(c2)print('你感觉到一个比恶魔还要恐怖的东西徘徊在走廊上。一块松动的石板\n从天花板上摔落下来\n')print('落在你头上并压断了你的脖子\n\n你现在死了\n')print(end)'''
if e==33:print(c3)print('你不了解魔法\n你想怎么办?')print('1、'+c1)print('2、'+c2)C=int(input('>'))if C==1:e=31if C==2:e=32
if e==32:print(c2)print('你感觉到一个比恶魔还要恐怖的东西徘徊在走廊上。一块松动的石板\n从天花板上摔落下来\n')print('落在你头上并压断了你的脖子\n\n你现在死了\n')print(end)x= int (input('输入0重启'))
############第四回开始##############################
if e==31:print(c1)print('你沿着清澈湛蓝的光芒前行,走廊上出现了一个巨大的洞穴,光芒也')print('开始越发明亮...此处被一个巨大的发光湖泊照亮。一只独角兽在旁边\梳理毛发\n')print('你怎么办?')print('1、看着这只独角兽')print('2、抚摸这只独角兽')print('3、杀死独角兽')d=int(input('>'))if d==1:print('看着这只独角兽')print('它看着像是独角兽')print('你怎么办?')print('1、抚摸这只独角兽')print('2、杀死独角兽')d=int(input('>'))if d==1 :e=42if d ==2 :e=41if d==2:e=41if d==3:e=42
##################第四回大结局
if e==41:print('杀了独角兽\n')print('你赢了')print(end)x= int (input('输入0重启'))
if e==42:print('你请求地用你的手去抚摸独角兽的毛。独角兽温顺地发出叫声并用它\n的鼻子蹭你的脑袋。可是它的角却戳到了你的眼睛,你痛得直往后\n退。此时你的脚踩到了一块松动的石头\n\n')print('你因此摔倒并扭断了你的脖子\n\n你死了\n')print(end)x= int (input('输入0重启'))

虽然是很臃肿的代码,但还是实现了这个游戏

重开的小思考:
为了解决“没有重新开始”的选项的问题,我把整个游戏的内容放入到了一个循环中,循环有两个条件:
e=0 x=1 while e == 0 or x==0:
我把“e”用于决定各种结局,e1,e2,e22、e23都是不同的选项导致的该回合的结局走向,这样极大的方便了我对剧情的编写
x我将之默认为1,当游戏想要重新开始时,将会有这样的选项:

print(end)
x= int (input('输入0重启'))

如果玩家输入0,while循环会判断条件x==0满足,然后重新开始一次循环,以满足“重新开始”功能

四、待解决问题及反思
一、待解决的问题
1.在重新编写时,中间有一段被注释的代码

'''if e==32:print(c2)print('你感觉到一个比恶魔还要恐怖的东西徘徊在走廊上。一块松动的石板\n从天花板上摔落下来\n')print('落在你头上并压断了你的脖子\n\n你现在死了\n')print(end)'''
if e==33:print(c3)print('你不了解魔法\n你想怎么办?')print('1、'+c1)print('2、'+c2)C=int(input('>'))if C==1:e=31if C==2:e=32
if e==32:print(c2)print('你感觉到一个比恶魔还要恐怖的东西徘徊在走廊上。一块松动的石板\n从天花板上摔落下来\n')print('落在你头上并压断了你的脖子\n\n你现在死了\n')print(end)x= int (input('输入0重启'))

我对这的想法是:
e== 33条件已满足
之后进行一次选择,选择到1就返回e == 31的结局,选2就去往e == 32的结局
这是因为我发现如果先写if==32的结局,会报错:
2.在做完一次选择后,应该让屏幕清空之前的流程,否则会影响玩家的观感
3.该程序没有打包,只能在有python的环境上运行
以上问题并未解决,后续会更新

本次行动的反思:
1.开发一个程序,一定要先有个大致的框架
2.用变量来干重复的工作
3.input()输入时为字符串类型,如果要将输入的内容与非字符串类型进行比较,应该先转化其类型

第一次用python写小游戏相关推荐

  1. 1.5万字详述 | 全开源:python写小游戏+AI强化学习与传统DFS/BFS控制分别实现

    简介:本周的强化学习我们来到实践部分.我以我在 GitHub 上开源的项目 PiperLiu / Amazing-Brick-DFS-and-DRL 为对象,从零开始与各位朋友分享:如何用 pytho ...

  2. 用java写2468游戏_关于第一次用java写小游戏(贪吃蛇)的体会记录

    作为一只菜鸡,对于编程的世界还一无所知,但是感觉应该要写点实用的东西.突然发现好像贪吃蛇应该能写出来(那种几乎没有用户界面的),于是就开始了. 1.关于对简单的动画呈现的资料准备 因为只有一些捉襟见肘 ...

  3. 一分钟教你学会python_十分钟教你学会python编写小游戏

    原标题:十分钟教你学会python编写小游戏 看过,估计大家都已经精通了吧,好的,话不多说,今天就活学活用,用python来编写纸牌游戏21点,江湖人称黑杰克,BLACK JACK-(注意法式卷舌). ...

  4. python能制作游戏吗_如何用Python制作小游戏

    要想用Python制作小游戏,必须要安装一个插件Pygame 什么是Pygame Pygame是跨平台Python模块,专为电子游戏设计,包含图像.声音.建立在SDL基础上,允许实时电子游戏研发而无需 ...

  5. 快来试试Python写的游戏《我的世界》

    <我的世界 Minecraft>大家应该都听说过,但你有没有想过自己用Python写一个这样的游戏呢?太难.太复杂了?也许吧,但是不试一试你怎么知道能不能成呢? 国外有位叫fogleman ...

  6. python外星人入侵小游戏

    python外星人入侵小游戏 python外星人入侵小游戏 项目结构如图所示: (1)alien.py中的代码: (2)alien_invasion.py中的代码: (3)bullet.py中的代码: ...

  7. Python文字小游戏

    Python文字小游戏 纪念我写下的第一个游戏 游戏介绍: 1.1V1文字小游戏 2.两种游戏角色 3.只有简单逻辑,比如选择人物等 #西游日记 #纪念我写下的第一个小游戏 print('*'*36+ ...

  8. python经典小游戏五子棋,适合python编程的小游戏

    python入门可以做的小游戏 1.Python入门拼图小游戏简单介绍:将图像分为m×n个矩形块,并将图像右下角的矩形块替换为空白块后,将这些矩形块随机摆放成原图像的形状. 2.Python入门推箱子 ...

  9. python编写小游戏17_十分钟教你学会python编写小游戏

    原标题:十分钟教你学会python编写小游戏 看过,估计大家都已经精通了吧,好的,话不多说,今天就活学活用,用python来编写纸牌游戏21点,江湖人称黑杰克,BLACK JACK-(注意法式卷舌). ...

最新文章

  1. www.sirim-global.com
  2. h5大转盘 php,HTML5 canvas实现中奖转盘的实例代码
  3. table表头固定4种方法_在常见的3种工资条场景中,教你4种批量打印工资条的方法...
  4. XX市公共租赁住房信息管理系统模板
  5. TCP/IP协议模型和OSI协议模型的概念
  6. 干货收藏!史上最强 Tomcat 8 性能优化来啦!| 原力计划
  7. python模块基础之OS模块
  8. FreeType 使用FT_MEM_ALLOC/FT_FREE内存操作
  9. Google 抓取工具(Googlebot)汇总
  10. Word文档,英文字母间隔非常大,解决方法
  11. 第四届中国软件开源创新大赛通知
  12. BAPI_PO_CREATE1 批量创建采购订单(可一个PO采购多个材料)
  13. 多个PDF文件怎么合并?PDF合并的方法教程
  14. Canvas制作简易涂鸦板
  15. ThinkPad T440s 改 T450s
  16. 程序员电影,荧屏里的程序员形象
  17. 跨境电商业务之云号码
  18. 基于Django的论坛系统项目
  19. ios swift UIActivityIndicatorView 菊花 加载中...
  20. 解决Could not find executable valgrind问题

热门文章

  1. json对象、字符串-数组和数学对象中的相关方法、BOM对象、JS中的DOM操作
  2. python 判断中英文、数字及全角半角等
  3. 揭秘站长写博客必备四大实用工具
  4. Unity:图片翻动浏览效果Demo
  5. 基于STM32大棚DHT11温湿度监测的Proteus仿真
  6. Carla自动驾驶仿真一:快速安装与运行Carla
  7. 文件资源管理器设置打开为此电脑
  8. tf第七讲:模型保存与加载(tf.train.Saver()tf.saved_model)及fine_tune(梯度冻结)
  9. java报表之JFreeChart_Java报表之JFreeChart
  10. vue 多条件密码强度校验