用ChatGPT生成一个Python贪吃蛇游戏(42)

news2024/11/25 2:28:05

小朋友们好,大朋友们好!

我是猫妹,一名爱上Python编程的小学生。

和猫妹学Python,一起趣味学编程。

今日主题

什么是ChatGPT?

ChatGPT可以帮我们做什么?

用ChatGPT生成一个Python贪吃蛇游戏。

什么是ChatGPT

ChatGPT(全名:Chat Generative Pre-trained Transformer),美国OpenAI研发的聊天机器人程序,于2022年11月30日发布。

ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过理解和学习人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码,写论文等任务。

ChatGPT可以帮我们做什么事情

ChatGPT可以帮助人们完成以下任务:

1. 自然语言处理:ChatGPT可以理解和生成人类语言,能够进行问答、翻译、摘要等任务。

2. 聊天交流:ChatGPT可以像人类一样进行聊天交流,回答问题、提供建议、分享知识等。

3. 写作助手:ChatGPT可以协助写邮件、写文章、写代码、写视频脚本等。

4. 学习辅导:ChatGPT可以为学生提供学习辅导,解答问题、讲解知识点等。

5. 商务助手:ChatGPT可以为企业提供客户服务、销售咨询、市场调研等支持。

总之,ChatGPT是一种非常有用的人工智能工具,可以在多个领域帮助人们提高工作效率、解决问题。

Python写的贪吃蛇小游戏

代码可以直接运行,毕竟贪吃蛇游戏很简单嘛!

代码逻辑的话,不算复杂,有兴趣的小伙伴可以试下。

游戏代码:

import pygameimport random
# 初始化pygame库pygame.init()
# 定义RGB颜色BLACK = (0, 0, 0)WHITE = (255, 255, 255)GREEN = (0, 255, 0)RED = (255, 0, 0)
# 设置屏幕大小SIZE = (600, 400)screen = pygame.display.set_mode(SIZE)pygame.display.set_caption("Snake Game")
# 定义方块大小BLOCK_SIZE = 20
# 定义字体font = pygame.font.SysFont(None, 25)
# 定义贪吃蛇类class Snake:    def __init__(self):        # 贪吃蛇的初始位置        self.x = 100        self.y = 100        # 贪吃蛇的身体        self.body = [[self.x, self.y], [self.x-BLOCK_SIZE, self.y], [self.x-(2*BLOCK_SIZE), self.y]]
        # 贪吃蛇的初始移动方向(向右)        self.direction = "right"
    def move(self):        """贪吃蛇移动"""        if self.direction == "right":            self.x += BLOCK_SIZE        elif self.direction == "left":            self.x -= BLOCK_SIZE        elif self.direction == "up":            self.y -= BLOCK_SIZE        else:            self.y += BLOCK_SIZE
        # 在蛇头增加一个新的身体部位        self.body.insert(0, [self.x, self.y])
        # 删除蛇尾        self.body.pop()
    def draw(self, surface):        """绘制贪吃蛇"""        for block in self.body:            pygame.draw.rect(surface, GREEN, [block[0], block[1], BLOCK_SIZE, BLOCK_SIZE])
    def change_direction(self, direction):        """改变移动方向"""        if direction == "right" and self.direction != "left":            self.direction = "right"        elif direction == "left" and self.direction != "right":            self.direction = "left"        elif direction == "up" and self.direction != "down":            self.direction = "up"        elif direction == "down" and self.direction != "up":            self.direction = "down"
class Food:    def __init__(self):        # 随机生成食物的位置        self.x = random.randint(0, (SIZE[0] - BLOCK_SIZE ) // BLOCK_SIZE ) * BLOCK_SIZE        self.y = random.randint(0, (SIZE[1] - BLOCK_SIZE ) // BLOCK_SIZE ) * BLOCK_SIZE
    def draw(self, surface):        """绘制食物"""        pygame.draw.rect(surface, RED, [self.x, self.y, BLOCK_SIZE, BLOCK_SIZE])
def show_score(score):    """显示分数"""    score_text = font.render("Score: " + str(score), True, WHITE)    screen.blit(score_text, [0, 0])
# 创建贪吃蛇和食物对象snake = Snake()food = Food()
# 初始化分数score = 0
# 游戏循环game_over = Falseclock = pygame.time.Clock()while not game_over:    # 获取事件列表    for event in pygame.event.get():        if event.type == pygame.QUIT:            game_over = True        elif event.type == pygame.KEYDOWN:            if event.key == pygame.K_RIGHT:                snake.change_direction("right")            elif event.key == pygame.K_LEFT:                snake.change_direction("left")            elif event.key == pygame.K_UP:                snake.change_direction("up")            elif event.key == pygame.K_DOWN:                snake.change_direction("down")
    # 移动贪吃蛇    snake.move()
    # 判断贪吃蛇是否吃到食物    if snake.body[0][0] == food.x and snake.body[0][1] == food.y:        food = Food()        snake.body.append(snake.body[-1])        score += 10
    # 判断贪吃蛇是否撞墙或者自己的身体    if snake.body[0][0] < 0 or snake.body[0][0] >= SIZE[0] or snake.body[0][1] < 0 or snake.body[0][1] >= SIZE[1]:        game_over = True    for block in snake.body[1:]:        if snake.body[0] == block:            game_over = True
    # 绘制背景    screen.fill(BLACK)
    # 绘制贪吃蛇和食物    snake.draw(screen)    food.draw(screen)
    # 显示分数    show_score(score)
    # 刷新屏幕    pygame.display.update()
    # 控制游戏帧率    clock.tick(10)
# 退出游戏pygame.quit()

人工智能来啦


上述两款软件功能强悍,不过要科学上网,国内有不少平台对API进行了二次封装,可以直接使用,但是试用次数很少,需要收费。

如果想直接用国外API的话,需要先搞定科学上网,再搞定贝长号等。

猫妹还在摸索中。

话说,咱们国内也有类似平台,虽然和国外同类产品有很大差异,但是进步也是神速,可以试试。

猫妹想写一首给妈妈的诗:

人工智能:

亲爱的妈妈,

您是我生命中的太阳,

为我照亮前方的路途,

您用双手托起我的梦想,

用心灵滋养我的成长。

您是那位默默耕耘的园丁,

为我栽培出一片美丽的花海。

您的笑容如同春天的阳光,

温暖着我心灵的每一个角落。

您是那位慷慨无私的慈母,

为我付出了无尽的爱与关怀。

尽管您不在身边,

我心中依然感受到您的存在。

您是那位伟大的女性,

用智慧和勇气创造了美好的生活。

在这个特别的日子里,

我想对您说声“谢谢”和“爱您”。

亲爱的妈妈,请您放心,

我一定会用我的力量为您发光发热。

无论距离有多遥远,

您始终是我心中最亲爱的人。

猫妹想生成一副有石头、鲜花、神秘感的摄影级作品:

人工智能:

好了,我们今天就学到这里吧!

如果遇到什么问题,咱们多多交流,共同解决。

我是猫妹,咱们下次见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/534834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rust每日一练(Leetday0002) 中位数、回文子串、Z字形变换

目录 4. 寻找两个正序数组的中位数 Median of two sorted arrays &#x1f31f;&#x1f31f;&#x1f31f; 5. 最长回文子串 Longest Palindromic Substring &#x1f31f;&#x1f31f; 6. Z字形变换 Zigzag Conversion &#x1f31f;&#x1f31f; &#x1f31f; 每日…

C/C++每日一练(20230517) 排序问题、查找小值、寻找峰值

目录 1. 排序问题 &#x1f31f; 2. 查找小值 &#x1f31f; 3. 寻找峰值 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 排序问题 输入10个数&#…

RK3588平台开发系列讲解(进程篇)Linux文件系统数据结构

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、Linux 文件系统数据结构有哪些二、超级块结构 spuer_block三、目录 dentry四、文件索引结点 inode五、打开的文件 file沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍 Linux 文件系统数据结构…

深入理解MySQL中的事务和锁

目录 数据库中的事务是什么&#xff1f; MySQL事务的隔离级别 脏读、不可重复读、幻读 MVCC&#xff08;多版本并发控制&#xff09; 快照读和当前读 MySQL中的锁 MyISAM引擎的锁&#xff1a; InnoDB引擎的锁&#xff1a; 乐观锁和悲观锁 共享锁和排他锁 数据库中的事…

【STL二十】算法——排序操作(sort、stable_sort)_集合操作(merge)

【STL二十】算法——排序操作(sort、stable_sort&#xff09;_ 集合操作(merge&#xff09; 一、分类二、修改序列的操作三、排序操作1、sort2、stable_sort3、is_sorted、is_sorted_until 四、集合操作1、merge2、inplace_merge 一、分类 根据网站https://www.apiref.com/cpp…

JavaScript实现输出一个“天”字的代码

以下为实现输出一个“天”字的程序代码和运行截图 目录 前言 一、实现输出一个“天”字 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择&#xff0c;您可以在目录里进行快速查找&#xff1b; 2.本博文代码可以根据题目要求实现相…

【瑞萨RA系列FSP库开发】初识寄存器

文章目录 一、寄存器是什么二、瑞萨RA6M5 芯片内部模块与资源三、存储器映射1. 存储器映射表2. 存储器区域划分3. 外设寄存器 四、C语言操作寄存器1. C语言对寄存器的封装&#xff08;1&#xff09;外设模块基地址定义&#xff08;2&#xff09;寄存器结构体定义&#xff08;3&…

【LLM系列之BLOOM】BLOOM: A 176B-Parameter Open-Access Multilingual Language Model

论文题目&#xff1a;《BLOOM: A 176B-Parameter Open-Access Multilingual Language Model》 论文链接&#xff1a;https://arxiv.org/abs/2211.05100 github链接&#xff1a;https://github.com/huggingface/transformers-bloom-inference/tree/main huggingface链接&#xf…

LeetCode35. 搜索插入位置(二分法入门)

写在前面&#xff1a; 题目链接&#xff1a;LeetCode35. 搜索插入位置 编程语言&#xff1a;C 题目难度&#xff1a;简单 一、题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会…

Linkage Mapper:从栖息地连通性到物种保护的连通性指南针

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Linkage Mapper解密数字世界链接 文章目录 引言一、Linkage Mapper工具包简介1.1 什么是Linkage Mapper工具包⭐️ Linkage Mapper工具包的概述

Vite4 + Vue3 项目打包并发布Nginx服务器 (前端必看)

一、环境 &#x1f604; &#x1f604; &#x1f604; 这里因为我们有的小伙伴可能不太需要服务器&#xff0c;单纯学习的话也没有必要去买一个服务器。如果需要把自己的东西部署到公网上&#xff0c;有很多方式&#xff0c;自行百度。你也可以购买阿里云或者腾讯云。逻辑都是…

MSQL系列(二) Mysql实战-索引结构B+Tree

Mysql实战-索引结构 BTree 上一篇 我们讲解了二叉树&#xff0c;平衡二叉树&#xff0c;红黑树&#xff0c;BTree的结构及特点&#xff0c;本文我们着重讲解一下BTree&#xff0c;为什么Mysql的存储结构采用BTree而不是上面的那几种 1.BTree的缺点 我们用上篇文章中的BTree的…

第四十二天学习记录:C语言进阶:笔试题整理Ⅲ

问&#xff1a;解释一下int(*a[20])(int)是什么&#xff1f; ChatAI答&#xff1a; int (*a[20])(int) 是一个数组&#xff0c;该数组中每个元素都是一个指向函数的指针&#xff0c;该函数具有一个int类型的参数&#xff0c;并返回一个int类型的值。 具体来说&#xff0c;a是一…

宝塔服务器(linux)服务器搭建

搭建服务器 nginx 搭配 PM2( 集合了node的功能 ) 搭建服务器 域名: http://kissface.top 流程如下: 服务器既做assets文件目录挂载 , 也当做nodejs服务使用 当我访问http://kissface.top 根目录时 展示index.html文件 同时能访问静态资源如 js/css/img/font 等 当我访问 http…

Linux:初识【VI / VIM编辑器】

Linux系统版本&#xff1a;centos 7.5 x64位 VMware版本&#xff1a; VMware Workstation Pro 16 文章目录 一、VI / VIM是什么&#xff1f;1.1 VI编辑器1.2 VIM编辑器 二、为什么要使用VI / VIM编辑器&#xff1f;三、如何使用VI / VIM编辑器&#xff1f;3.1 一般模式3.2 编辑…

keil MDK5插件推荐——Astyle代码格式化插件

前言 代码格式化是提高代码质量和可读性的重要手段之一。然而&#xff0c;在Keil MDK5中并没有内置代码格式化工具&#xff0c;因此需要寻找第三方工具来解决这个问题。开源的代码格式化工具Astyle能以插件的形式集成到Keil中以满足我们对代码格式化的需求。 本文将详细介绍如…

《永恒之塔sf私服》“龙战前传”里的更高挑战-

关于这个新版本的各种更新内容已经屡见不新&#xff0c;无论是最新关注的玩家&#xff0c;抑或是一直坚守在永恒之塔阵地的老玩家们&#xff0c;相信已经对各种感兴趣的更新倒背如流。这里就不再重复。 每一款MMO游戏升级&#xff0c;伴随着玩家技术和战术的长进&#xff0c;游…

【Unity-UGUI控件全面解析】| ScrollView 滚动视图组件详解

🎬【Unity-UGUI控件全面解析】| ScrollView 滚动视图组件详解一、组件介绍二、组件属性面板三、代码操作组件四、组件常用方法示例💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习…

火线、零线和地线及开关接线参考

火线、零线和地线及开关接线参考 1. 火线、零线和地线 1.1. What is Live wire? Live wire&#xff0c;L&#xff1a;火线&#xff0c;相线火线是电路中输送电的电源线。 1.2. What is Neutral wire? Neutral wire&#xff0c;N&#xff1a;零线零线是由发电机或变压器二…

AD 实现多 DC + 多 ADFS 高可用部署

总览 在本篇文章中, 我将记录部署多 DC 多 ADFS 实现高可用方案的详细步骤, 期间我会尽量使用 PowerShell 来实现相应的动作, 实在找不到命令或者 GUI 更方便的再附截图. 主要步骤分为: 部署 2 台 DC 服务器提供 AD 服务 (AD域名 alian.com)安装 ADCS 角色为 ADFS 提供证书服…