好像现在最近对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,很多人会失业,会引发很多社会问题。大佬们暂停【人工智能】的开发是有理由的!
未来已来!终结者时代可能就在不远的将来。。。。。。
我想用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中编写命令行实用程序
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古
我使用rails3.1+rspec和factorygirl。我对必填字段(validates_presence_of)的验证工作正常。我如何让测试将该事实用作“成功”而不是“失败”规范是:describe"Addanindustrywithnoname"docontext"Unabletocreatearecordwhenthenameisblank"dosubjectdoind=Factory.create(:industry_name_blank)endit{shouldbe_invalid}endend但是我失败了:Failures:1)Addanindustrywithnona
修改(澄清问题)我已经花了几天时间试图弄清楚如何从Facebook游戏中抓取特定信息;但是,我遇到了一堵又一堵砖墙。据我所知,主要问题如下。我可以使用Chrome的检查元素工具手动查找我需要的html-它似乎位于iframe中。但是,当我尝试抓取该iframe时,它是空的(属性除外):如果我使用浏览器的“查看页面源代码”工具,这与我看到的输出相同。我不明白为什么我看不到iframe中的数据。答案不是它是由AJAX之后添加的。(我知道这既是因为“查看页面源代码”可以读取Ajax添加的数据,也是因为我有b/c我一直等到我可以看到数据页面之后才抓取它,但它仍然不存在)。发生这种情况是因为
我正在尝试用Ruby(Rails)编写一个正则表达式,以便用户名的字符仅包含数字和字母(也没有空格)。我有这个正则表达式,/^[a-zA-Z0-9]+$/,但它似乎没有用,我在Rails中收到一个错误,说“The如果正则表达式使用多行anchor(^或$),这可能会带来安全风险。您是要使用\A和\z,还是忘记添加:multiline=>true选项?"我的user.rb模型中此实现的完整代码是:classUser我做错了什么以及如何修复此正则表达式,使其仅对数字和字母有效而不对空格有效?谢谢。 最佳答案 简短回答:使用/\A[a-z
我有两个文本文件,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
为了减少我的小Rails应用程序中的代码重复,我一直致力于将我的模型之间的通用代码放入它自己的单独模块中,到目前为止一切顺利。模型的东西相当简单,我只需要在开头包含模块,例如:classIso这工作正常,但是现在,我将有一些Controller和View代码,这些代码也将在这些模型之间通用,到目前为止,我有这个用于我的可发送内容:#Thisisamodulethatisusedforpages/formsthatarecanbe"sent"#eitherviafax,email,orprinted.moduleSendablemoduleModeldefself.included(kl
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion是否有适用于这些的3d游戏引擎?
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。Ruby是一种美丽的语言,但有一个我讨厌写很多次的关键词“结束”。有什么方法可以写出简洁的代码而不用每次都写“end”吗?