这两天,很火的一个话题,我也尝试着用AI,结合deepseek和python,我尝试着,去做了一个小游戏。
目标:
根据数学教材纸片人锐锐,数学课本角色,也有了自己的二创,生成一个用python小游戏代码。
以下是一个基于数学教材角色"锐锐"的Python数学闯关游戏代码,结合了角色控制、数学题解答和关卡系统,使用Pygame库实现可视化操作:
import pygame
import random
import sys
# 初始化Pygame
pygame.init()
# 游戏窗口设置
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("锐锐的数学大冒险")
# 颜色定义
WHITE = (255, 255, 255)
BLUE = (0, 0, 255)
RED = (255, 0, 0)
# 加载锐锐角色图像
rurui_img = pygame.image.load('rurui.png') # 需自行准备图片
rurui_rect = rurui_img.get_rect(center=(400, 500))
# 游戏状态
current_level = 1
score = 0
question = ""
answer = ""
user_input = ""
# 字体设置
font = pygame.font.Font(None, 36)
def generate_question(level):
"""生成数学题目"""
operations = ['+', '-', '×', '÷']
a = random.randint(1, level*5)
b = random.randint(1, level*5)
op = random.choice(operations[:level+1])
if op == '+':
ans = a + b
elif op == '-':
ans = a - b
elif op == '×':
ans = a * b
elif op == '÷':
a = a * b # 确保整除
ans = a // b
return f"{
a} {
op} {
b} = ?", str(ans)
# 生成第一题
question, answer = generate_question(current_level)
def draw_game():
"""绘制游戏界面"""
screen.fill(WHITE)
screen.blit(rurui_img, rurui_rect)
# 绘制题目
text = font.render(f"第{
current_level}关: {
question}", True, BLUE)
screen.blit(text, (50, 50))
# 绘制输入框
pygame.draw.rect(screen, BLUE, (300, 100, 200, 40), 2)
input_text = font.render(user_input, True, BLUE)
screen.blit(input_text, (310, 105))
# 绘制得分
score_text = font.render(f"得分: {
score}", True, RED)
screen.blit(score_text, (650, 50))
# 游戏主循环
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
if user_input == answer:
score += 10
current_level += 1
question, answer = generate_question(current_level)
user_input = ""
# 让锐锐跳跃
rurui_rect.y -= 50
else:
user_input = ""
elif event.key == pygame.K_BACKSPACE:
user_input = user_input[:-1]
else:
if event.unicode.isdigit():
user_input += event.unicode
# 角色重力效果
if rurui_rect.y < 500:
rurui_rect.y += 2
draw_game()
pygame.display.flip()
pygame.time.Clock().tick(30)
pygame.quit()
操作步骤:
-
环境准备:
- 安装Python 3.6+
- 安装依赖库:
pip install pygame
- 准备角色图片"rurui.png"(尺寸建议100x100像素)
-
游戏玩法:
- 方向键:按回车提交答案
- 数字键:输入答案
- Backspace:删除输入
- 正确答案会使锐锐跳跃并进入下一关
- 错误答案会清空输入框
-
关卡系统:
- 第1关:加减法
- 第2关:增加乘法
- 第3关:增加除法
- 每关数字范围扩大5倍
- 得分每关+10分
-
扩展方法:
# 自定义题目生成规则(示例:添加分数运算) def generate_question(level): if level > 5: a = random.randint(1, 10) b = random.randint(1, 10) return f"{ a}/7 + { b}/7 = ?", f"{ (a+b)}/7" # 原有代码... # 添加角色动画(示例:旋转效果) rotated_rurui = pygame.transform.rotate(rurui_img, 45) screen.blit(rotated_rurui, rurui_rect) # 添加音效 pygame.mixer.init() correct_sound = pygame.mixer.Sound('correct.wav') if user_input == answer: correct_sound.play()
-
游戏改造建议:
- 在游戏目录创建assets文件夹存放资源
- 添加背景音乐和音效
- 增加成就系统(连续答对奖励)
- 添加可视化数学公式(使用LaTeX渲染)
- 制作关卡地图界面
数学知识拓展:
- 可在题目生成器中添加不同难度:
def generate_question(level): if level > 10: # 生成几何题:求三角形面积 base = random.randint(5, 15) height = random.randint(5, 15) return f"底{ base}cm 高{ height}cm的三角形面积?", str(base*height//2) # 原有代码...
这个代码框架可以通过以下方式深化数学教学:
- 在游戏胜利界面添加知识点解析
- 制作错题本功能记录错误题目
- 添加多人对战模式
- 连接题库API获取最新教育类题目
建议使用面向对象编程重构代码,创建独立的Character
类、QuestionGenerator
类和GameController
类,方便后续扩展更多玩法和教学场景。