体验用ai做了个python小游戏

体验用ai做了个python小游戏

写在前面

最近ai确实比较火。各种生成式AI,包括文字、图片、视频。之前听说ai生产代码能力比较强,一直想试试。所以及就有了本问

使用的工具

deepinseek :用来生成python代码

即梦:用来生成图片素材

Remove.bg:用来对生成的图片素材去除背景

pixabay.com:用来下载音乐素材

#游戏建立步骤

##1.设立游戏建立背景

我使用了深度思考

整个深度思索的过程,让我了解到deepseek为啥选择pygame库,为啥选择收集物品得分的模式。主要是我前面的提示词:小学生。我觉得符合我预期。

很快他就生成了python代码

python 复制代码
import pygame
import random

# 初始化游戏
pygame.init()
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("哈尔滨冰雪大冒险")
clock = pygame.time.Clock()

# 加载哈尔滨元素素材
bg = pygame.image.load("snow_bg.jpg")  # 冰雪大世界背景
player_img = pygame.image.load("skier.png")  # 滑雪运动员
ice_img = pygame.image.load("ice_block.png")  # 冰障碍物
flag_img = pygame.image.load("finish_flag.png")  # 终点旗

# 颜色定义
WHITE = (255, 255, 255)
BLUE = (0, 100, 255)

# 玩家类
class Skier:
    def __init__(self):
        self.image = pygame.transform.scale(player_img, (60, 60))
        self.rect = self.image.get_rect(center=(WIDTH//2, HEIGHT-100))
        self.speed = 8

    def move(self, direction):
        if direction == "left" and self.rect.left > 0:
            self.rect.x -= self.speed
        elif direction == "right" and self.rect.right < WIDTH:
            self.rect.x += self.speed

# 障碍物类
class Obstacle:
    def __init__(self):
        self.type = random.choice(["ice", "flag"])
        self.image = ice_img if self.type == "ice" else flag_img
        self.image = pygame.transform.scale(self.image, (40, 40))
        self.rect = self.image.get_rect(center=(random.randint(20, WIDTH-20), -20))
        self.speed = 5

    def move(self):
        self.rect.y += self.speed

# 游戏主循环
def main():
    skier = Skier()
    obstacles = []
    score = 0
    font = pygame.font.Font(None, 36)
    game_active = True

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                return

        if game_active:
            keys = pygame.key.get_pressed()
            if keys[pygame.K_LEFT]:
                skier.move("left")
            if keys[pygame.K_RIGHT]:
                skier.move("right")

            # 生成障碍物
            if random.random() < 0.05:  # 5%概率生成
                obstacles.append(Obstacle())

            # 移动障碍物
            for obstacle in obstacles:
                obstacle.move()
                if skier.rect.colliderect(obstacle.rect):
                    if obstacle.type == "ice":
                        game_active = False
                    else:
                        score += 50
                        obstacles.remove(obstacle)
                if obstacle.rect.top > HEIGHT:
                    obstacles.remove(obstacle)
                    if obstacle.type == "ice":
                        score += 10

            # 更新界面
            screen.blit(bg, (0, 0))
            screen.blit(skier.image, skier.rect)
            for obstacle in obstacles:
                screen.blit(obstacle.image, obstacle.rect)

            # 显示得分
            score_text = font.render(f"得分: {score}", True, WHITE)
            screen.blit(score_text, (10, 10))
        else:
            # 游戏结束界面
            screen.fill(BLUE)
            end_text = font.render("游戏结束!最终得分: " + str(score), True, WHITE)
            screen.blit(end_text, (WIDTH//2-150, HEIGHT//2))
            restart_text = font.render("按R重新开始", True, WHITE)
            screen.blit(restart_text, (WIDTH//2-100, HEIGHT//2+50))

            keys = pygame.key.get_pressed()
            if keys[pygame.K_r]:
                game_active = True
                score = 0
                obstacles = []
                skier = Skier()

        pygame.display.update()
        clock.tick(60)

if __name__ == "__main__":
    main()

代码的完整度非常好,拷贝图片素材基本就可以运行了。代码中有注释,方便阅读代码。他还给出了后续的建议。游戏就是避障,然后接住游戏元素得分。碰到障碍物游戏结束,提示分数,提示按R键继续游戏。逻辑比较简单。

2.增加功能

在这个基础上,我对deepseek提了一些要求,或者觉得有问题的让他解决。总体上都解决了。而且效果我认为满意。

1.要求增加视频作为背景。

因为pygame是不支持视频元素的。我 看看deepseek怎么解决的哦,他比较了opencv和moviepy库,在小学生这个条件下,给出opencv更适合。这段深度思考部分,我觉得给出moviepy和opencv的比较逻辑有点欠缺。但是实际的思路还是比较清晰的使用第三方库从视频中取帧,然后绘制到pygame的surface上。

它还贴心的给出了如何安装opencv库,怎么引用素材

2.我让增加了一个欢迎页面。

它的思路,通过设置变量,把游戏过程分为欢迎页,游戏进行中,游戏结束3个状态。逻辑没毛病。还贴心的提供修改说明和建议。





3.我发现中文显示有问题。

提出了问题,deepseek也给出可行的解决方案,我使用了他给的方案2 ,因为自定义字体可以使得游戏画面更优。还贴心的给出了注意事项。


4.我提出了背景修改意见,欢迎页面和结束页面背景是视频,游戏页面背景是静态图片。


5.提出增加更多游戏元素。

deepseek增加了加速道具,护盾道具,磁铁道具,减速道具。

总结:

deepseek的代码输出能力完全没有问题,对于需求的分析也很精确。给出的修改提示和建议也非常有用。我的结论,deepseek完全可以作为生产力工具给程序员提供更快的代码输出,也可以帮助程序员学习新的知识点,通过项目一点点增加功能打磨代码。

最后给出我最终的代码(我没有加上更多元素)

链接: https://github.com/edzjx/snows-deepseek


相关推荐
孤独野指针*P13 分钟前
深度学习中的目标检测:从 PR 曲线到 AP
python·深度学习·yolo
IT信息技术学习圈13 分钟前
Python程序打包为EXE文件的全面指南
开发语言·python
大有数据可视化1 小时前
人工智能如何革新数据可视化领域?探索未来趋势
人工智能·信息可视化
AI technophile2 小时前
OpenCV计算机视觉实战(4)——计算机视觉核心技术全解析
人工智能·opencv·计算机视觉
云和数据.ChenGuang2 小时前
人工智能 机器学习期末考试题
开发语言·人工智能·python·机器学习·毕业设计
珊珊而川3 小时前
3.1监督微调
人工智能
我是小伍同学3 小时前
基于卷积神经网络和Pyqt5的猫狗识别小程序
人工智能·python·神经网络·qt·小程序·cnn
lllsure5 小时前
Python基础语法
开发语言·python
界面开发小八哥5 小时前
界面控件DevExpress WinForms v25.1新功能预览 - 功能区组件全新升级
人工智能·.net·界面控件·winform·devexpress
zhz52146 小时前
开源数字人框架 AWESOME-DIGITAL-HUMAN 技术解析与应用指南
人工智能·ai·机器人·开源·ai编程·ai数字人·智能体