尝试用ChatGpt写程序
AIGC(人工智能生成内容)最近火得不行,openAI公司的chatgpt成了当红炸子鸡,由于国内网络限制不好访问,我通过国内API接口访问chatgpt,看它写软件程序的能力。
我用的提示语是:用python写一个俄罗斯方块游戏。
过了大概半分钟,它给我贴了一段代码importpygame
importrandom
定义游戏区域的大小和方块的大小
WIDTH,HEIGHT300,600
BLOCKSIZE30
定义方块的形状和颜色
SHAPES〔
〔〔1,1,1〕,
〔0,1,0〕〕,
〔〔0,2,2〕,
〔2,2,0〕〕,
〔〔3,3,0〕,
〔0,3,3〕〕,
〔〔4,0,0〕,
〔4,4,4〕〕,
〔〔0,0,5〕,
〔5,5,5〕〕,
〔〔6,6〕,
〔6,6〕〕
〕
COLORS〔
(0,0,0),
(255,0,0),
(0,255,0),
(0,0,255),
(255,255,0),
(255,0,255),
(0,255,255)
〕
初始化游戏
definitgame():
初始化pygame
pygame。init()
创建游戏窗口
screenpygame。display。setmode((WIDTH,HEIGHT))
设置窗口标题
pygame。display。setcaption(俄罗斯方块)
创建时钟对象
clockpygame。time。Clock()
returnscreen,clock
随机生成一个方块
defgenerateblock():
shaperandom。choice(SHAPES)
colorrandom。randint(1,len(COLORS)1)
returnshape,color
将方块放到游戏区域中
defputblock(grid,block,x,y,color):
foriinrange(len(block)):
forjinrange(len(block〔i〕)):
ifblock〔i〕〔j〕!0:
grid〔yi〕〔xj〕color
returngrid
检查方块能否放下
defcheckblock(grid,block,x,y):
foriinrange(len(block)):
forjinrange(len(block〔i〕)):
ifblock〔i〕〔j〕!0:
ifyilen(grid)orxj0orxjlen(grid〔i〕)orgrid〔yi〕〔xj〕!0:
returnFalse
returnTrue
消除已经填满的行
defremovelines(grid):
newgrid〔〔0〕len(grid〔0〕)forinrange(len(grid))〕
rowlen(grid)1
foriinrange(len(grid)1,1,1):
if0notingrid〔i〕:
continue
forjinrange(len(grid〔i〕)):
newgrid〔row〕〔j〕grid〔i〕〔j〕
row1
returnnewgrid
绘制游戏区域
defdrawgrid(screen,grid):
foriinrange(len(grid)):
forjinrange(len(grid〔i〕)):
pygame。draw。rect(screen,COLORS〔grid〔i〕〔j〕〕,(jBLOCKSIZE,iBLOCKSIZE,BLOCKSIZE,BLOCKSIZE))
pygame。draw。rect(screen,(255,255,255),(jBLOCKSIZE,iBLOCKSIZE,BLOCKSIZE,BLOCKSIZE),1)
游戏主函数
defplaygame():
初始化游戏
screen,clockinitgame()
创建游戏区域
grid〔〔0〕int(WIDTHBLOCKSIZE)forinrange(int(HEIGHTBLOCKSIZE))〕
初始化方块
block,colorgenerateblock()
x,yint(len(grid〔0〕)2len(block〔0〕)2),0
循环掉落方块
whileTrue:
处理游戏事件
foreventinpygame。event。get():
ifevent。typepygame。QUIT:
pygame。quit()
return
elifevent。typepygame。KEYDOWN:
ifevent。keypygame。KLEFT:
ifcheckblock(grid,block,x1,y):
x1
elifevent。keypygame。KRIGHT:
ifcheckblock(grid,block,x1,y):
x1
elifevent。keypygame。KDOWN:
ifcheckblock(grid,block,x,y1):
y1
elifevent。keypygame。KUP:
rotatedblock〔〔block〔j〕〔i〕forjinrange(len(block))〕foriinrange(len(block〔0〕)1,1,1)〕
ifcheckblock(grid,rotatedblock,x,y):
blockrotatedblock
让方块自动下落
ifcheckblock(grid,block,x,y1):
y1
else:
gridputblock(grid,block,x,y,color)
block,colorgenerateblock()
x,yint(len(grid〔0〕)2len(block〔0〕)2),0
gridremovelines(grid)
绘制游戏区域
screen。fill((255,255,255))
drawgrid(screen,grid)
绘制方块
foriinrange(len(block)):
forjinrange(len(block〔i〕)):
ifblock〔i〕〔j〕!0:
pygame。draw。rect(screen,COLORS〔color〕,((xj)BLOCKSIZE,(yi)BLOCKSIZE,BLOCKSIZE,BLOCKSIZE))
pygame。draw。rect(screen,(255,255,255),((xj)BLOCKSIZE,(yi)BLOCKSIZE,BLOCKSIZE,BLOCKSIZE),1)
更新屏幕
pygame。display。update()
控制帧率
clock。tick(5)
运行游戏
playgame()
把代码copy到vscode中,安装好python3解释器和pygame插件,我的PC是win11x64,在vscode中配置好python运行环境,点击运行走起,结果出现:
AI写的俄罗斯方块游戏运行
俄罗斯方块
真能跑起来,虽然游戏界面比较简陋,但是可以玩,实现了俄罗斯方块游戏最基本功能,通过键盘方向键可以控制方块左右运行,向上键可以转动方块,不过程序好像不能判断一局结束,也没有重新开始交互按钮,有点意外的是程序源代码是中文注释。这是中国人写的还是AI翻译的?
AI提供的游戏代码实现了俄罗斯方块游戏最基础的功能,我想它实现更复杂一点的功能,比如游戏计分、用户名,背景音乐,当发送申请到chatgpt,结果AI提醒我今天不能用了。
您今日使用次数已达上限,请明日再试!
那就等明天了,打算用更复杂的提示语,看看AI能不能给出想要的俄罗斯方块游戏源代码。
战神!53岁巴蒂久违亮相1900亩庄园养老养2匹马,幼子接班踢球近段时间,阿根廷球星巴蒂斯图塔重返意大利,参加了一场友谊赛。虽然巴蒂斯图塔已经53岁,头发早已斑白,步履都显得有些蹒跚,但他依然凭借敏锐的嗅觉,一脚劲射完成破门。看到巴蒂进球,现场
足坛情报纳帅或称首位欧冠三次击败巴萨教练欧冠里斯本vs热刺后防遭重创!或被迫变阵里斯本竞技后防线遭遇伤病潮。主力中后卫圣朱斯特(6场)由于肌肉拉伤将无缘本场比赛。另外两名主力中后家卫内托(6场)确定缺席,伊纳西奥(6场)
李景明陈东俊郑喜三名小将联手为长沙队贡献9金1银市体操学校李景明陈东俊郑喜三名小将联手为长沙队贡献9金1银偶像是李小鹏,梦想是奥运冠军我叫李景明,今年9岁,学体操3年了。我叫陈东俊,今年10岁,学体操4年了。我叫郑喜,今年11岁
皇家马德里VS莱比锡红牛皇家马德里在上周41击败了马洛卡维尼修斯和罗德里戈。据报道,皇家马德里将会和主教练安切洛蒂达成一份新的合同。皇家马德里在新赛季七战全胜(欧洲冠军欧洲英超),7场比赛进20个球,平均
赤木晴子,也是健身达人呢赤木晴子,是动漫灌篮高手里的经典人物,长相甜美身材热辣,被万千粉丝所追捧。对此,粉丝们曾开玩笑说如果现实世界,也能有赤木晴子一样的女神,我要去提亲。这本是玩笑话,谁曾想,现如今的现
9中2!郭艾伦复出状态低迷仅得5分,杜锋弃用赵睿不明智北京时间8月25日,今天2023年世界杯亚洲区预选赛第四窗口期的比赛重新打响,今天中国男篮面对的对手是中亚球队哈萨克斯坦队。哈萨克斯坦队之前世预赛的战绩是非常不错的,但是由于中国男
马云银行不改变我们改变银行,我要让他们睡不着觉阿里巴巴创始人马云在一次演讲中谈到为什么创建支付宝时说到银行不改变我们改变银行,银行除了银监会他们还怕过谁,支付宝他们有点担心,至少睡不着觉,这几年来,很多银行纷纷降低自己的费用,
9。13午评简评CXO美国继芯片法案后,拜登准备签署一项行政命令以帮助扩大美国的生物制造,目标据称仍是针对中国为何制裁半导体大涨,而制裁CXO大跌呢?很简单的逻辑,半导体是替代作用,即美国不让干的,中国
费曼没有人懂得量子力学,超光速10000倍的量子会纠缠无解没人能懂量子力学我想我可以肯定地说没有人了解量子力学。这是理查德费曼经常挂在嘴边的一句话。理查德费曼在他的课堂上事实上这句话他说得并不无道理,作为20世纪最著名的物理学家之一,同时
孙宇晨将布局国内数字藏品币圈高热度之一的孙宇晨,最近又出动开始在社交软件上不断的博取人眼球,发表各种言论。一孙宇晨听到英国女王伊丽莎白二世去世的消息,我深感悲痛。我向王室和英联邦所有人表示最深切的哀悼。今
深入浅出HTTPS(详解版)原文链接httpswww。cnblogs。comhuanskyp13977181。html前言1990年互联网诞生之初,就已经开始用超文本传输协议HTTP传输数据,这也是为什么现在