今天,我突然想起了另一项修改,所以原计划的多行+新僵尸就改到第九篇再介绍。这项“乱入”的修改就是:修改目录结构,为多关卡作准备!上篇链接:从0开始用python写一个命令行小游戏(七)

多关卡目录结构

我计划把目录结构改成这样:

levels
- 0.json
- 1.json
- ...          # 关卡文件,0.json是关卡用完后的默认配置
level.txt
game_obj.py
game.py

其中level.txt是目前的关卡数,为0表示关卡已经用完,使用默认关卡。在game.pyGame__init__()方法开头加上:

with open('level.txt') as lv:
    try:
        level = lv.read()
        with open('levels/%s.json' % level) as fw:
            self.steps = json.load(fw)
        print("Level " + level)
    except FileNotFoundError:
        with open('levels/0.json') as fw:
            self.steps = json.load(fw)
        with open('level.txt', 'w') as lv_w:
            lv_w.write('0')
        print("Default level")

并在这个类start()方法的末尾加上:

with open('level.txt') as fr:
    current_level = int(fr.read())
with open('level.txt', 'w') as lv_w:
    lv_w.write(str(current_level + 1))
if os.path.exists('.git'):
    os.popen("git commit -am \"commit level change\"")

该文件开头加上import os。这里简单介绍一下最后那个if语句的作用:os.path.exists()查看在当前目录下有没有这个文件或文件夹,os.popen()执行系统命令,并将输出返回。这里我们没有接收返回,即不处理输出。整句语句意思就是:如果.git目录存在,则自动执行Git提交命令。如果该目录不存在,则不执行提交命令,以免引起错误。Git是一个版本控制软件,有兴趣的话可以了解一下,这里不作介绍。好了,我们又成功添加了一个功能,只要加上对应的配置文件(在此不贴出)就可以实现多关卡游戏了!至此为我的游戏v1.0 beta 4发布状态。

下集预告

下次,我保证,没有“乱入”的修改,新僵尸+多行网格,敬请期待!


leosz
30 声望6 粉丝

喜欢Python的业余程序猿