尝试用AI写一个小游戏

date
May 27, 2024
slug
game
status
Published
tags
Website
summary
尝试用ai写个简单的跳跃游戏
type
Post
网址
URL
使用大语言模型工具为chatgpt-4o模型和gemini1.5flash模型,前者拆解需求,后者编写代码; 使用绘图工具为dalle-3,生成背景图片和障碍物; 音效从FREESOUND淘的;

制作截图:

notion image
notion image
notion image
notion image
💡
”开发一个复古风格的无尽奔跑游戏,包括跳跃和躲避障碍的机制。其中障碍物体会向左侧移动,主人公只
能通过向上跳跃的方式躲避,如果未成功躲避,则游戏结束。可以使用像素风格表示主人公和障碍物,也
可以采用其他图形。每跨越一个障碍物,需要至少加 1 分,随着分数增高,游戏节奏需加快(3 分一个挡
位)。游戏需显示当前得分,结束时显示总分。“
请将以上的需求整理成一条条的需求清单,针对每一条细化需求指向和给出具体的实现方式
GPT-4o

复古风格无尽奔跑游戏需求清单

1. 游戏核心机制:
  • 需求指向: 游戏需要实现经典的无尽奔跑玩法,玩家控制角色持续前进,并通过跳跃躲避障碍物。
  • 实现方式:
    • 使用循环机制,让角色持续向前移动。
    • 设计障碍物生成机制,随机生成不同类型的障碍物。
    • 实现跳跃机制,玩家控制角色向上跳跃,并控制跳跃高度。
    • 判定碰撞机制,检测角色与障碍物之间的碰撞,碰撞则游戏结束。
2. 障碍物移动:
  • 需求指向: 障碍物需要持续向左侧移动,模拟角色不断前进的场景。
  • 实现方式:
    • 为每个障碍物设置一个速度值,并使用计时器控制障碍物位置的更新。
    • 障碍物速度随着游戏进行而逐渐加快。
3. 角色控制:
  • 需求指向: 玩家需要控制角色进行跳跃,躲避障碍物。
  • 实现方式:
    • 使用键盘或触控方式作为输入方式,控制角色进行跳跃。
    • 通过按键或触控的持续时间控制跳跃高度。
4. 计分机制:
  • 需求指向: 每跨越一个障碍物,玩家需要获得至少 1 分。
  • 实现方式:
    • 使用计数器记录玩家跨越的障碍物数量。
    • 当角色成功越过障碍物时,计数器加 1。
    • 显示当前分数。
5. 游戏节奏加速:
  • 需求指向: 随着玩家分数的增加,游戏节奏需要加快。
  • 实现方式:
    • 每 3 分为一个档位,当分数达到每个档位时,增加障碍物速度或生成频率。
    • 也可以考虑随着分数增加,增加角色移动速度。
6. 游戏结束:
  • 需求指向: 当角色与障碍物发生碰撞时,游戏结束。
  • 实现方式:
    • 当角色与障碍物碰撞时,停止游戏循环。
    • 显示最终得分。
7. 画面风格:
  • 需求指向: 游戏需要呈现复古风格。
  • 实现方式:
    • 使用像素风格表示角色和障碍物。
    • 可以选择像素风格的背景和音效。
    • 也可以采用其他复古风格的图形,例如卡通风格等。
8. 游戏界面:
  • 需求指向: 游戏需要显示分数信息。
  • 实现方式:
    • 使用文字或数字显示当前分数。
    • 可以设计一个分数显示区域,例如屏幕顶部或底部。
    • 在游戏结束时,显示最终得分。
9. 音效:
  • 需求指向: 游戏需要加入音效,提升玩家的游戏体验。
  • 实现方式:
    • 加入跳跃音效、碰撞音效、背景音乐等。
    • 可以使用复古风格的音效。
以上需求清单只是对游戏功能的基本描述,实际开发过程中还需要根据具体情况进行调整和补充。
💡
请根据以上需求进行代码开发,使用python的pygame库,将以上需求全部写入一个main.py函数中,留出背景、人物、障碍物、音效的资源名称,这些资源统一在source文件夹中
Genmini1.5Flash
Explanation of the Fix:
  1. Initialize score_checked: Before the game loop starts, initialize score_checked as an empty list using score_checked = [].
Now, score_checked will be defined before it is used inside the if statement, and the error will be resolved.
Key Points:
  • Variable Scope: Remember that variables in Python are defined within specific scopes. In this case, you need to define score_checked outside the for loop so that it can be accessed throughout the game loop.
  • Data Structures: Lists like score_checked are useful for storing data like the obstacles that have already been scored.
💡
我的背景图片尺寸为1792和1024,人物尺寸为260x260,障碍物尺寸为290x327,请适应修改人物跳跃高度和速度,以适应背景大小,修改障碍物为同一水平出现

© chen_yan 2024 - 2025