元宵佳节,是阖家团圆的时刻,也是中华传统文化的重要载体。马年元宵即将到来,为大家准备了一份特别的礼物——用Python代码“复活”传统元宵猜谜游戏!
元宵节除了吃汤圆、赏花灯,猜灯谜更是流传千年的智慧游戏。如何让这项传统活动焕发新生,吸引现代孩子的兴趣?答案就在代码里,用不到50行Python代码,就把古老的谜语游戏变成了互动性十足的电子游戏。这不仅是一次技术实践,更是一次文化与科技的美丽相遇。
以下是元宵猜谜的完整代码:
import turtle as timport timet.colormode(255)t.hideturtle()t.setup(800,600)t.title("过元宵 猜谜语")t.bgpic("0.gif")t.penup()t.color(0,100,255)t.write("过元宵 猜谜语",align="center",font=("经典行楷简",80))time.sleep(1)t.clear()t.goto(0,-100)for i in range(3,0,-1): t.write(i,align="center",font=("经典行楷简",100)) time.sleep(1) t.clear() t.write("开始",align="center",font=("经典行楷简",100))n = 1md = ["草莓","外强中干","不毛之地","斤斤计较","丛","有机可乘","长春","糖葫芦","孤","深不可测","三五成群","只手遮天"]c = ['yellow','blue','purple','red','black']t.goto(0,0)while True: time.sleep(1) t.clear() t.bgpic(str(n)+'.gif') word = t.textinput("谜底输入框","请输入答案") if word == md[n-1]: n += 1 t.color("green") if n > 12: t.clear() t.bgpic('0.gif') for i in range(5): t.color(c[i]) t.write("恭喜你,全答对!",align="center",font=("经典行楷简",40)) time.sleep(0.2) break t.write("猜对了,下一题",align="center",font=("经典行楷简",40)) time.sleep(0.5) t.clear() else: t.color("red") t.write("猜错了,重新猜",align="center",font=("经典行楷简",40))t.done()
首先,你需要安装Python,打开Python自带的IDLE或者你喜欢的代码编辑器。(通过网盘分享的文件:python-3.8.2.exe[Windows版本]https://pan.baidu.com/s/1CvYjs1ze3amD8xHJCjSjyw?pwd=ghsz 提取码: ghsz )
让我们一起来看看这个神奇的程序是如何工作的:
import turtle as timport time
• 导入turtle绘图库并简称为t,用于绘制图形界面,简化名称,方便后续实验。• 导入time库用于控制时间间隔(如倒计时、延迟)。• 设置颜色模式为RGB(0-255的整数范围),便于后续通过数字设置颜色。R、G、B分别表示红色、绿色、蓝色,不同的数值表示不同的颜色深浅,三种颜色可混合设置为其他颜色。• 将当前目录下的"0.gif"图片设为窗口背景,将元宵节的图片设置为背景,传统文化的气息扑面而来!背景图片和谜语图片可自行设计,如需原图片请留言获取。2. 显示标题和倒计时
t.penup()t.color(0,100,255)t.write("过元宵 猜谜语", align="center", font=("经典行楷简", 80))
• 抬起画笔(避免移动时划线)
• 设置颜色为浅蓝色
• 在窗口中央显示“过元宵 猜谜语”,使用“经典行楷简”,字号80。字体要确保电脑已经安装有才行,字体安装查看位置C:\Windows\Fonts 。
• 等待1秒,清空当前画面。
t.goto(0, -100)for i in range(3, 0, -1): t.write(i, align="center", font=("经典行楷简", 100)) time.sleep(1) t.clear()t.write("开始", align="center", font=("经典行楷简", 100))
• 将画笔移到坐标(0, -100)。
• for循环,从3到1进行倒计时显示,每秒显示一个数字,每次显示后清空。
• 最后显示“开始”
通过以上代码营造紧张刺激的游戏氛围。
3. 猜谜游戏主逻辑
n = 1md = ["草莓","外强中干","不毛之地","斤斤计较","丛","有机可乘","长春","糖葫芦","孤","深不可测","三五成群","只手遮天"]c = ['yellow','blue','purple','red','black']t.goto(0,0)
• 初始化谜题编号n=1。
• 定义列表md存放12个谜语的正确答案。把12个谜底存储在列表中,就像把糖果放进不同格子的糖果盒。其索引编号从0开始,即md[0]表示“草莓”,其他以此类推。
• 定义颜色列表c用于后续的彩色文字效果。
• 将画笔移到坐标原点(0,0)。
while True: time.sleep(1) t.clear() t.bgpic(str(n) + '.gif')
• 游戏的核心是一个while循环,每次循环先等待1秒后清屏,然后设置背景图片为当前谜题对应的图片(如1.gif、2.gif等)。
word = t.textinput("谜底输入框", "请输入答案")
• 弹出一个输入对话框,标题为“谜底输入框”,提示语为“请输入答案”,获取用户输入的答案存入word。
• if条件语句,判断用户输入是否等于当前谜题的正确答案(md[n-1])。
n += 1 t.color("green") if n > 12: t.clear() t.bgpic('0.gif') for i in range(5): t.color(c[i]) t.write("恭喜你,全答对!", align="center", font=("经典行楷简", 40)) time.sleep(0.2) break
• 谜题编号n加1进入下一题。
• 将文字颜色设为绿色。
• 如果n>12,说明12道题全部答对,清屏并恢复初始背景0.gif,然后用五种颜色(c列表)交替显示“恭喜你,全答对!”五次,每次间隔0.2秒,最后用break结束循环。
t.write("猜对了,下一题", align="center", font=("经典行楷简", 40)) time.sleep(0.5) t.clear()
• 还没答完所有题,显示“猜对了,下一题”0.5秒,然后清屏进入下一题。
else: t.color("red") t.write("猜错了,重新猜", align="center", font=("经典行楷简", 40))
• 将文字颜色设为红色,显示“猜错了,重新猜”,不改变n的值,因此下一轮循环会继续显示同一道谜题背景,直到答对为止。
while True: t.bgpic(str(n)+'.gif') word = t.textinput("谜底输入框","请输入答案") if word == md[n-1]: # 答对了,进入下一题 if n > 12: # 全部答对 break # 结束循环 else: # 答错了,继续猜当前题
这个逻辑清晰地展示了编程中的“条件判断”思维:如果答案正确,就进入下一题;否则,继续猜当前题。这正是编程思维的核心——逻辑推理与问题分解。
4.结尾
• 确保绘图窗口保持显示,可省略。
代码总结
这是一个用图形界面实现的猜谜游戏,包含倒计时开场、12道谜题循环答题、答案对错判断和通关彩色祝贺。谜题以背景图片形式呈现(1.gif~12.gif),用户通过输入框提交答案。这个程序虽然简单,但涵盖了编程学习的多个重要知识点:
这个程序的特别之处在于,它不只是技术的展示,更是文化的传承:美学与技术的结合。程序使用了“经典行楷简”字体,让数字时代的界面依然散发着墨香。背景图片可以设计成传统的灯笼、剪纸、中国结等元宵元素,在潜移默化中培养孩子的审美。猜谜语需要发散思维和联想能力,编程需要逻辑思维和系统思考。当孩子同时运用这两种思维方式时,大脑的左右半球得到了均衡锻炼。家长可以和孩子一起讨论谜语背后的文化内涵,设计自己的谜语和背景图片,尝试修改代码,增加新功能。这个基础版本还可以无限扩展:- 难度分级:为不同年龄段的孩子设置简单、中等、困难三个级别
- 主题扩展:设计春节、中秋、端午等传统节日的专题游戏
当“恭喜你,全答对!”在屏幕上闪烁五彩光芒时,您看到的不仅是技术的神奇,更是传统文化的生机焕发。编程不再只是冰冷的代码,而是连接过去与未来的桥梁,是传统文化在数字时代的生动表达。让孩子在游戏中学习,在学习中传承,这才是编程教育最温暖的样子。如果你需要视频讲解或者你有更多创意想法,请让我看到你的留言!
温馨提示:运行程序前,将对应的背景图片放在同一代码文件目录下,电脑中安装有相应的字体。与孩子一起探索时,不妨聊聊每个谜语背后的文化故事,让这个元宵节既有科技的炫酷,也有传统的温度。
期待您的点赞、留言、推荐