中年人学 Python 不用愁,跟着数学课本纸片人锐锐玩游戏

这两天,很火的一个话题,我也尝试着用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()

操作步骤:

  1. 环境准备

    • 安装Python 3.6+
    • 安装依赖库:pip install pygame
    • 准备角色图片"rurui.png"(尺寸建议100x100像素)
  2. 游戏玩法

    • 方向键:按回车提交答案
    • 数字键:输入答案
    • Backspace:删除输入
    • 正确答案会使锐锐跳跃并进入下一关
    • 错误答案会清空输入框
  3. 关卡系统

    • 第1关:加减法
    • 第2关:增加乘法
    • 第3关:增加除法
    • 每关数字范围扩大5倍
    • 得分每关+10分
  4. 扩展方法

    # 自定义题目生成规则(示例:添加分数运算)
    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()
    
  5. 游戏改造建议

    • 在游戏目录创建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)
        # 原有代码...
    

这个代码框架可以通过以下方式深化数学教学:

  1. 在游戏胜利界面添加知识点解析
  2. 制作错题本功能记录错误题目
  3. 添加多人对战模式
  4. 连接题库API获取最新教育类题目

建议使用面向对象编程重构代码,创建独立的Character类、QuestionGenerator类和GameController类,方便后续扩展更多玩法和教学场景。