这节课你要做

一个完整的文字冒险游戏:有剧情、有选择、有战斗、有结局。做完它,你就正式从这门课毕业了。

先回顾:你学会的一切

十课知识地图

01 你好,Python:程序是写给电脑的菜谱;print 会说话;报错不可怕

02 和电脑聊天:input 会提问;变量是贴标签的盒子;f 字符串拼话

03 数字和数学:+ - * / // % **;文字"5"和数字 5 不是一回事;int() 转换

04 教电脑做选择:if / elif / else 岔路口;== 是提问 = 是装东西;缩进是语法

05 重复的魔法:for 循环;range 从 0 开始;自己给自己加的记账本

06 猜数字大战:while 循环;random 随机数;组合就是游戏

07 百宝袋:列表:[] 装一串;编号从 0 开始;append / remove;和 for 是黄金搭档

08 教电脑新本领:def 定义函数;参数是入口;return 是交回结果

09 海龟画图:forward / left;360 ÷ 边数 的秘密;代码能变成画

结业项目:地下城探险

文字冒险游戏是最经典的游戏类型——整个游戏就是一段段故事,你在关键处做选择,走向不同结局。我们要做的《地下城探险》:你是一位勇者,闯进地下城寻宝,路上会遇到怪兽,结局由你的选择和运气决定。

搭建计划(跟猜数字游戏一样的套路:分解!)

第 1 步:游戏开场,介绍主角和目标

第 2 步:第一个选择:走左边还是右边

第 3 步:用函数做一个"战斗环节",还会随机掉血

第 4 步:两个结局:找到宝藏(胜利)或血量归零(失败)

第 1 步和第 2 步:开场与选择

print("===== 地下城探险 =====")
name = input("勇者,报上你的名号:")
hp = 100   # 血量
print(f"勇者 {name},你带着 100 点血量进入了地下城。")
print("你的目标是找到传说中隐藏的宝藏!")

print("你走到一个岔路口。")
choice = input("走左边还是右边?(输入 左 或 右)")

if choice == "左":
    print("你走进一条幽暗的通道……")
else:
    print("你走进一条堆满骨头的通道……")

第 3 步:战斗函数(第八课的本领)

战斗要做三件事:告诉你遇到谁、随机扣血、报告血量。参数是怪兽名字,return 剩下的血量:

import random

def battle(monster, hp):
    print(f"!!!一只 {monster} 跳了出来!")
    print(f"你和 {monster} 展开激战……")
    lose = random.randint(10, 40)   # 这一战随机掉这么多血
    hp = hp - lose
    print(f"你赢了,但掉了 {lose} 点血,还剩 {hp} 点。")
    return hp

第 4 步:把一切拼起来

import random

def battle(monster, hp):
    print(f"!!!一只 {monster} 跳了出来!")
    lose = random.randint(10, 40)
    hp = hp - lose
    print(f"你战胜了 {monster},掉了 {lose} 点血,还剩 {hp} 点。")
    return hp

# ===== 游戏开始 =====
print("===== 地下城探险 =====")
name = input("勇者,报上你的名号:")
hp = 100
print(f"勇者 {name},你带着 100 点血量进入了地下城!")

print("你走到一个岔路口。")
choice = input("走左边还是右边?(输入 左 或 右)")

if choice == "左":
    print("你走进一条幽暗的通道……")
    hp = battle("蝙蝠王", hp)
    print("通道尽头闪着金光!")
    print("🏆 你找到了宝藏!胜利!")
else:
    print("你走进一条堆满骨头的通道……")
    hp = battle("骷髅将军", hp)
    if hp > 0:
        print("骷髅将军倒下,身后就是宝箱!")
        print("🏆 你找到了宝藏!胜利!")
    else:
        print("你倒下了…… 💀 游戏结束。")
        print(f"但你的名字将被铭记:勇者 {name}!")
一局实录
===== 地下城探险 =====
勇者,报上你的名号:小明
勇者 小明,你带着 100 点血量进入了地下城!
你走到一个岔路口。
走左边还是右边?(输入 左 或 右)右
你走进一条堆满骨头的通道……
!!!一只 骷髅将军 跳了出来!
你战胜了 骷髅将军,掉了 33 点血,还剩 67 点。
骷髅将军倒下,身后就是宝箱!
🏆 你找到了宝藏!胜利!

注意这个细节:hp = battle(…, hp)

血量作为参数进函数(你的血量交给战斗环节),battle 算完后用 return 交回来,再用等号装回 hp 盒子。参数是入口,return 是出口——第八课的知识在一个真正的游戏里跑起来了。

让它成为"你的"游戏

跑通之后,这个游戏就归你了。至少改造三处,让它和任何人的都不一样:

毕业任务(完成它!)

1. 跑通《地下城探险》。

2. 至少改造三处,做出你的专属版本,取名,写上作者。

3. 展示时间:给家人演示你的游戏,让他们玩一局。

4. 领取证书:完成后打开 结业证书,它属于你。

毕业后往哪走?

你现在已经会:变量、判断、两种循环、列表、函数、随机数,还做过两个游戏。这是真正的编程基础,不是玩具水平——接下来的路:

最后想说的话

十课之前,你可能觉得"编程"是件很遥远的事。现在,你能让电脑听你的话做事,能做出别人能玩的游戏。以后遇到更难的问题时,请记住你在这门课里学到的方法:把它拆小,一步一步来,错了就改,报错了就查。这就是程序员改变世界的方式。祝贺你,小小程序员!🎉