体验用ai做了个python小游戏

ops/2025/2/24 19:09:44/

体验用ai做了个python小游戏

  • 写在前面
  • 使用的工具
    • 2.增加功能
      • 1.要求增加视频作为背景。
      • 2.我让增加了一个欢迎页面。
      • 3.我发现中文显示有问题。
      • 4.我提出了背景修改意见,欢迎页面和结束页面背景是视频,游戏页面背景是静态图片。
      • 5.提出增加更多游戏元素。
  • 总结:

写在前面

最近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 = 8def move(self, direction):if direction == "left" and self.rect.left > 0:self.rect.x -= self.speedelif 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_imgself.image = pygame.transform.scale(self.image, (40, 40))self.rect = self.image.get_rect(center=(random.randint(20, WIDTH-20), -20))self.speed = 5def move(self):self.rect.y += self.speed# 游戏主循环
def main():skier = Skier()obstacles = []score = 0font = pygame.font.Font(None, 36)game_active = Truewhile True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()returnif 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 = Falseelse:score += 50obstacles.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 = Truescore = 0obstacles = []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
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/ops/161034.html

相关文章

安全面试3

文章目录 一个单位的一级域名可能不止一个&#xff0c;怎么收集某个单位的所有域名&#xff0c;注意不是子域名用转义字符防御时&#xff0c;如果遇到数据库的列名或是表名本身就带着特殊字符&#xff0c;应该怎么做宽字节注入原理防御宽字节注入的方法 基于黑白名单的修复&…

C++ 设计模式-访问者模式

C++访问者模式 一、模式痛点:当if-else成为维护噩梦 开发动物园管理系统,最初的需求很简单: class Animal {}; class Cat : public Animal {}; class Dog : public Animal {};// 处理动物叫声 void makeSound(Animal* a) {if (auto c = dynamic_cast<Cat*>(a)) {st…

火语言RPA--Excel插入空列

【组件功能】&#xff1a;在Excel内指定的位置插入空列 配置预览 配置说明 在第n列之前 支持T或# 填写插入添加插入第n列之前列名&#xff0c;列名从A开始&#xff0c;依次递增。 插入n列 支持T或# 插入多少列。 Sheet页名称 支持T或# Excel表格工作簿名称。 示例 Exc…

现场可以通过手机或者pad实时拍照上传到大屏幕的照片墙现场大屏电子照片墙功能

现场可以通过手机或者pad实时拍照上传到大屏幕的照片墙现场大屏电子照片墙功能&#xff0c;每个人都可以通过手机实时拍照上传到大屏幕上,同时还可以发布留言内容&#xff0c;屏幕上会同步滚动播放展示所有人的照片和留言。相比校传统的照片直播功能更加灵活方便&#xff0c;而…

javascript闭包在实际项目中有哪些应用场景?请举例说明。

javascript闭包在实际项目中有哪些应用场景&#xff1f;请举例说明。 闭包在 JavaScript 里就像是一个神奇的“小口袋”&#xff0c;它能让函数记住并访问其外部函数的变量&#xff0c;哪怕外部函数已经执行完了。下面用大白话详细介绍闭包在实际项目中的应用场景&#xff0c;…

【拥抱AI】GPT Researcher 源码试跑成功的心得与总结

一、引言 在人工智能领域&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术的发展日新月异。GPT Researcher 是一个基于大型语言模型&#xff08;LLM&#xff09;的开源研究工具&#xff0c;旨在帮助用户快速生成高质量的研究报告。通过自动化的方式&#xff0c;它能够…

车载DoIP协议 --- TCP详细解析

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 简单&#xff0c;单纯&#xff0c;喜欢独处&#xff0c;独来独往&#xff0c;不易合同频过着接地气的生活…

鸿蒙-阻塞式文件锁

一、背景 最近在做鸿蒙版本的埋点SDK&#xff0c; 涉及到多线程同步问题。我们都知道多线程存在并发问题&#xff08;多线程同步和互斥的问题&#xff09;。今天我介绍一下我在鸿蒙项目中&#xff0c;使用ArkTS的API实现阻塞式的同步锁&#xff0c;来确保线程安全。 1.1 鸿蒙…