jjzjj

【第三篇:利用ChatGPT编写贪食蛇小游戏】

jifeng_lr 2023-07-07 原文

好像现在最近对ChatGPT讨论越来越热,ChatGPT的出现应该会引发“一次新的社会变革”,未来很多码农会失业啊!与其坐着被改变,不如尝试主动改变,我今天就利用ChatGPT编写贪食蛇小游戏,看看一个小白是否真的可以编出这个程序。
下面是我用ChatGPT3.5的真实应用。

然后我点击复制,现在把代码全部粘贴在PyCharm ,看语法完全合规,没有报错,居然还有注释(太震惊了!)。代码如下:

import pygame
import random

# 初始化 Pygame 库
pygame.init()

# 定义屏幕宽度和高度
screen_width = 500
screen_height = 500

# 创建屏幕对象并设置窗口大小
screen = pygame.display.set_mode((screen_width, screen_height))

# 设置窗口标题
pygame.display.set_caption("贪食蛇")

# 定义颜色变量
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)

# 定义贪食蛇移动速度
snake_speed = 15

# 初始贪食蛇位置和长度
snake_x = 250
snake_y = 250
snake_size = 10
snake_list = []
snake_length = 1

# 初始化食物位置
food_x = round(random.randrange(0, screen_width - snake_size) / 10.0) * 10.0
food_y = round(random.randrange(0, screen_height - snake_size) / 10.0) * 10.0

# 定义函数来显示贪食蛇
def draw_snake(snake_list):
    for x in snake_list:
        pygame.draw.rect(screen, black, [x[0], x[1], snake_size, snake_size])

# 游戏主循环
game_over = False
while not game_over:

    # 获取所有事件
    for event in pygame.event.get():

        # 如果是退出事件,则游戏结束
        if event.type == pygame.QUIT:
            game_over = True

        # 如果是键盘按下事件
        if event.type == pygame.KEYDOWN:

            # 如果是左箭头按下,蛇向左移动
            if event.key == pygame.K_LEFT:
                x_change = -snake_size
                y_change = 0

            # 如果是右箭头按下,蛇向右移动
            elif event.key == pygame.K_RIGHT:
                x_change = snake_size
                y_change = 0

            # 如果是上箭头按下,蛇向上移动
            elif event.key == pygame.K_UP:
                x_change = 0
                y_change = -snake_size

            # 如果是下箭头按下,蛇向下移动
            elif event.key == pygame.K_DOWN:
                x_change = 0
                y_change = snake_size

    # 移动贪食蛇
    snake_x += x_change
    snake_y += y_change

    # 如果贪食蛇碰到边界,则游戏结束
    if snake_x >= screen_width or snake_x < 0 or snake_y >= screen_height or snake_y < 0:
        game_over = True

    # 绘制屏幕背景和食物
    screen.fill(white)
    pygame.draw.rect(screen, red, [food_x, food_y, snake_size, snake_size])

    # 存储贪食蛇头部坐标
    snake_head = []
    snake_head.append(snake_x)
    snake_head.append(snake_y)
    snake_list.append(snake_head)

    # 如果贪食蛇长度超过 snake_length,则删除贪食蛇尾部
    if len(snake_list) > snake_length:
        del snake_list[0]

    # 绘制贪食蛇
    draw_snake(snake_list)

    # 如果贪食蛇吃到了食物,增加贪食蛇长度并重新生成食物位置
    if snake_x == food_x and snake_y == food_y:
        food_x = round(random.randrange(0, screen_width - snake_size) / 10.0) * 10.0
        food_y = round(random.randrange(0, screen_height - snake_size) / 10.0) * 10.0
        snake_length += 1

    # 更新屏幕显示
    pygame.display.update()

    # 控制帧率
    clock = pygame.time.Clock()
    clock.tick(snake_speed)

# 退出 Pygame

试着运行下,报了一个小错误

稍微检查下,发现一个小错误,x_change,y_change没有初始赋值,改下。再运行下,居然成功了

以上代码,欢迎大家测试,只有一点小bug,稍微改下就可以用哈!

总结:
1、ChatGPT3.5已经完全能理解文字含义,是绝对【人工智能】,以上的编程无懈可击!
2、即使一个熟练的程序员,也达不到这个程度,更别谈速度。如果使用ChatGPT4,相信能解决更复杂的编程问题,还能识别图像,太厉害啦太厉害啦太厉害啦!
3、如果大规模使用GPT,很多人会失业,会引发很多社会问题。大佬们暂停【人工智能】的开发是有理由的!
未来已来!终结者时代可能就在不远的将来。。。。。。

 

 

 

有关【第三篇:利用ChatGPT编写贪食蛇小游戏】的更多相关文章

  1. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  2. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  3. 亚特兰蒂斯的回声(中文版): chatGPT 的杰作 - 2

    英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古

  4. ruby-on-rails - 如何为空白字段编写 rspec? [Rails3.1] - 2

    我使用rails3.1+rspec和factorygirl。我对必填字段(validates_presence_of)的验证工作正常。我如何让测试将该事实用作“成功”而不是“失败”规范是:describe"Addanindustrywithnoname"docontext"Unabletocreatearecordwhenthenameisblank"dosubjectdoind=Factory.create(:industry_name_blank)endit{shouldbe_invalid}endend但是我失败了:Failures:1)Addanindustrywithnona

  5. ruby - 我需要从 facebook 游戏中抓取数据——使用 ruby - 2

    修改(澄清问题)我已经花了几天时间试图弄清楚如何从Facebook游戏中抓取特定信息;但是,我遇到了一堵又一堵砖墙。据我所知,主要问题如下。我可以使用Chrome的检查元素工具手动查找我需要的html-它似乎位于iframe中。但是,当我尝试抓取该iframe时,它​​是空的(属性除外):如果我使用浏览器的“查看页面源代码”工具,这与我看到的输出相同。我不明白为什么我看不到iframe中的数据。答案不是它是由AJAX之后添加的。(我知道这既是因为“查看页面源代码”可以读取Ajax添加的数据,也是因为我有b/c我一直等到我可以看到数据页面之后才抓取它,但它仍然不存在)。发生这种情况是因为

  6. ruby-on-rails - 尝试为 Rails 中的用户名验证编写 REGEX - 2

    我正在尝试用Ruby(Rails)编写一个正则表达式,以便用户名的字符仅包含数字和字母(也没有空格)。我有这个正则表达式,/^[a-zA-Z0-9]+$/,但它似乎没有用,我在Rails中收到一个错误,说“The如果正则表达式使用多行anchor(^或$),这可能会带来安全风险。您是要使用\A和\z,还是忘记添加:multiline=>true选项?"我的user.rb模型中此实现的完整代码是:classUser我做错了什么以及如何修复此正则表达式,使其仅对数字和字母有效而不对空格有效?谢谢。 最佳答案 简短回答:使用/\A[a-z

  7. ruby - 尝试比较两个文本文件,并根据信息创建第三个 - 2

    我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende

  8. ruby-on-rails - 如何编写跨模型、 Controller 和 View 的 Rails mixin - 2

    为了减少我的小Rails应用程序中的代码重复,我一直致力于将我的模型之间的通用代码放入它自己的单独模块中,到目前为止一切顺利。模型的东西相当简单,我只需要在开头包含模块,例如:classIso这工作正常,但是现在,我将有一些Controller和View代码,这些代码也将在这些模型之间通用,到目前为止,我有这个用于我的可发送内容:#Thisisamodulethatisusedforpages/formsthatarecanbe"sent"#eitherviafax,email,orprinted.moduleSendablemoduleModeldefself.included(kl

  9. python - Ruby 或 Python 的 3d 游戏引擎? - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion是否有适用于这些的3d游戏引擎?

  10. ruby - 在不添加 "end"的情况下编写 Ruby 的任何方法? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。Ruby是一种美丽的语言,但有一个我讨厌写很多次的关键词“结束”。有什么方法可以写出简洁的代码而不用每次都写“end”吗?

随机推荐