当前位置: 首页 > news >正文

体验用ai做了个python小游戏

体验用ai做了个python小游戏

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

写在前面

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

使用的工具

deepinseek :用来生成python代码
即梦:用来生成图片素材
Remove.bg:用来对生成的图片素材去除背景
pixabay.com:用来下载音乐素材

#游戏建立步骤
##1.设立游戏建立背景
在这里插入图片描述

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

很快他就生成了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
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

体验用ai做了个python小游戏

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

谷粒商城—分布式高级②.md

认证服务 1. 环境搭建 创建gulimall-auth-server模块,导依赖,引入login.html和reg.html,并把静态资源放到nginx的static目录下 2. 注册功能 (1) 验证码倒计时 //点击发送验证码按钮触发下面函数 $("#sendCode").click(function () {//如果有disabled,说明最近…...

阿里云ECS命名规则解析与规格选型实战指南

阿里云ECS实例的命名规则通常采用 “ecs.{实例族}.{规格大小}” 的结构,各部分含义如下: 命名字段说明ecs代表“弹性计算服务”(Elastic Compute Service)。{实例族}标识实例的用途和代次(如 g7、c7、r7),由字母+数字组成。{规格大小}表示实例的资源配置(如 large、2xl…...

Spring MVC 的核心以及执行流程

Spring MVC的核心 Spring MVC是Spring框架中的一个重要模块&#xff0c;它采用了经典的MVC&#xff08;Model-View-Controller&#xff09;设计模式。 MVC是一种软件架构的思想&#xff0c;它将软件按照模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;…...

ai json处理提示词

在解析JSON数据时&#xff0c;提示词的设计需要明确任务目标、输入格式以及期望的输出格式。以下是一些常用的提示词示例&#xff0c;适用于不同的JSON解析场景&#xff1a; 1. 提取特定字段 用于从JSON中提取特定字段的值。 示例&#xff1a; 从以下JSON数据中提…...

2025开源数据工程全景图

作者 | Alireza Sadeghi 译自Practical Data Engineering 2025年开源数据工程领域呈现蓬勃创新与生态重构的双重态势&#xff0c;九大技术赛道在实时化、轻量化与云原生架构驱动下加速演进。一份来自外网的2025年开源数据工程全景图全面地展示了这一领域的发展态势与走向&…...

438. 找到字符串中所有字母异位词(LeetCode 热题 100)

题目来源&#xff1a; 438. 找到字符串中所有字母异位词 - 力扣&#xff08;LeetCode&#xff09; 题目内容&#xff1a; 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s &…...

c++标准io与线程,互斥锁

封装一个 File 类&#xff0c; 用有私有成员 File* fp 实现以下功能 File f "文件名" 要求打开该文件 f.write(string str) 要求将str数据写入文件中 string str f.read(int size) 从文件中读取最多size个字节&#xff0c; 并将读取到的数据返回 析构函数 #…...

java简单实现请求deepseek

1.deepseek的api创建 deepseek官网链接 点击右上API开放平台后找到API keys 创建APIkey&#xff1a; 注意&#xff1a;创建好的apikey只能在创建时可以复制&#xff0c;要保存好 2.java实现请求deepseek 使用springbootmaven 2.1 pom文件&#xff1a; <?xml version&…...

Ext系列文件系统 -- 磁盘结构,磁盘分区,inode,ext文件系统,软硬链接

目录 1.理解硬盘 1.1 磁盘、服务器、机柜、机房 1.2 磁盘物理结构 1.3 磁盘的存储结构 1.4 磁盘的逻辑结构 1.4.1 理解逻辑结构 1.4.2 真实过程 1.5 CHS地址和LBA地址的相互转换 2.引入文件系统 2.1 “块”概念 2.2 “分区”概念 2.3 “inode”概念 3.ext2文件系…...

PyTorch Tensor 形状变化操作详解

PyTorch Tensor 形状变化操作详解 在深度学习中&#xff0c;Tensor 的形状变换是非常常见的操作。PyTorch 提供了丰富的 API 来帮助我们调整 Tensor 的形状&#xff0c;以满足模型输入、计算或数据处理的需求。本文将详细介绍 PyTorch 中常见的 Tensor 形状变换操作&#xff0…...

文字识别软件cnocr学习笔记

• 安装 pip install cnocr • 基础的使用方法 首次运行会下载安装模型&#xff0c;如果没有梯子&#xff0c;会报错&#xff1a; 在网络上查找cnocr的模型资源&#xff0c;并下载到本地。https://download.csdn.net/download/qq_33464428/89514689?ops_request_misc%257B%2…...

本地部署DeepSeek R1 + 界面可视化open-webui【ollama容器+open-webui容器】

本地部署DeepSeek R1 界面可视化open-webui 本文主要讲述如何用ollama镜像和open-webui镜像部署DeepSeek R1&#xff0c; 镜像比较方便我们在各个机器之间快速部署。 显卡推荐 模型版本CPU内存GPU显卡推荐1.5B4核8GB非必需4GBRTX1650、RTX20607B、8B8核16GB8GBRTX3070、RTX…...

macOS部署DeepSeek-r1

好奇&#xff0c;跟着网友们的操作试了一下 网上方案很多&#xff0c;主要参考的是这篇 DeepSeek 接入 PyCharm&#xff0c;轻松助力编程_pycharm deepseek-CSDN博客 方案是&#xff1a;PyCharm CodeGPT插件 DeepSeek-r1:1.5b 假设已经安装好了PyCharm PyCharm: the Pyth…...

基于STM32与BD623x的电机控制实战——从零搭建无人机/机器人驱动系统

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 一、为什么选择这两个芯片&#xff1f;1.1 STM32微控制器1.2 ROHM BD623x电机驱动 二、核心控制原理详解2.1 H桥驱动奥…...

基于ffmpeg+openGL ES实现的视频编辑工具-字幕添加(六)

在视频编辑领域,字幕的添加是一项极为重要的功能,它能够极大地丰富视频内容,提升观众的观看体验。当我们深入探究如何实现这一功能时,FreeType 开源库成为了强大助力。本文将详细阐述借助 FreeType 库生成字幕数据的过程,以及如何实现字幕的缩放、移动、旋转、颜色修改、对…...

C++中const T为什么少见?它有什么用途?

在C中&#xff0c;右值引用&#xff08;T&&&#xff09;是移动语义和完美转发的核心特性之一&#xff0c;但你是否注意到&#xff0c;const T&&&#xff08;const右值引用&#xff09;却很少被使用&#xff1f;它到底有什么用途&#xff1f; 今天我们就来深入…...

Leetcode 位计算

3095. 或值至少 K 的最短子数组 I 3097. Shortest Subarray With OR at Least K II class Solution:def minimumSubarrayLength(self, nums: List[int], k: int) -> int:n len(nums)bits [0] * 30res infdef calc(bits):return sum(1 << i for i in range(30) if…...

SpringBoot3.x整合WebSocket

SpringBoot3.x整合WebSocket 本文主要介绍最新springboot3.x下如何整合WebSocket. WebSocket简述 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议&#xff0c;它允许在浏览器和服务器之间进行实时的、双向的通信。相对于传统的基于请求和响应的 HTTP 协议&#xff…...

猿大师办公助手对比其他WebOffice在线编辑Office插件有什么优势

1. 原生Office功能完整嵌入&#xff0c;排版一致性保障 猿大师办公助手直接调用本地安装的微软Office、金山WPS或永中Office&#xff0c;支持所有原生功能&#xff08;如复杂公式、VBA宏等&#xff09;&#xff0c;确保网页编辑与本地打开的文档排版完全一致。 提供OLE嵌入和完…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生&#xff0c;系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler&#xff0c;它是Thread的子类&#xff08;就是package java.lang;里线程的Thread&#xff09;。本文将利用它将设备信息、报错信息以及错误的发生时间都…...