结业项目与复习
做出你的文字冒险游戏,然后毕业!
这节课你要做
一个完整的文字冒险游戏:有剧情、有选择、有战斗、有结局。做完它,你就正式从这门课毕业了。
先回顾:你学会的一切
十课知识地图
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 是出口——第八课的知识在一个真正的游戏里跑起来了。
让它成为"你的"游戏
跑通之后,这个游戏就归你了。至少改造三处,让它和任何人的都不一样:
- 改剧情:地下城可以换成神秘森林、太空站、恐龙岛……怪兽随便你起名
- 加岔路:每条通道里再加一个选择,游戏立刻变长一倍
- 加宝物:用列表做背包(第七课),捡到"治疗药水"可以回血
- 加循环:用 while 做"再来一局"(第六课的开关技巧)
毕业任务(完成它!)
1. 跑通《地下城探险》。
2. 至少改造三处,做出你的专属版本,取名,写上作者。
3. 展示时间:给家人演示你的游戏,让他们玩一局。
4. 领取证书:完成后打开 结业证书,它属于你。
毕业后往哪走?
你现在已经会:变量、判断、两种循环、列表、函数、随机数,还做过两个游戏。这是真正的编程基础,不是玩具水平——接下来的路:
- 把第十课的作品继续做大——最好的练习就是改自己的游戏
- 进阶课程
python_advanced——文件读写、更复杂的项目,等你准备好就开始 - 保持每周写一点——编程像游泳,光看视频学不会,下水才会
最后想说的话
十课之前,你可能觉得"编程"是件很遥远的事。现在,你能让电脑听你的话做事,能做出别人能玩的游戏。以后遇到更难的问题时,请记住你在这门课里学到的方法:把它拆小,一步一步来,错了就改,报错了就查。这就是程序员改变世界的方式。祝贺你,小小程序员!🎉