尝试用ChatGpt写程序

AIGC(人工智能生成内容)最近火得不行,openAI公司的chatgpt成了当红炸子鸡,由于国内网络限制不好访问,我通过国内API接口访问chatgpt,看它写软件程序的能力。

我用的提示语是:用python写一个俄罗斯方块游戏。

过了大概半分钟,它给我贴了一段代码

import pygame

import random

# 定义游戏区域的大小和方块的大小

WIDTH, HEIGHT = 300, 600

BLOCK_SIZE = 30

# 定义方块的形状和颜色

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)

]

# 初始化游戏

def init_game():

# 初始化pygame

pygame.init()

# 创建游戏窗口

screen = pygame.display.set_mode((WIDTH, HEIGHT))

# 设置窗口标题

pygame.display.set_caption("俄罗斯方块")

# 创建时钟对象

clock = pygame.time.Clock()

return screen, clock

# 随机生成一个方块

def generate_block():

shape = random.choice(SHAPES)

color = random.randint(1, len(COLORS)-1)

return shape, color

# 将方块放到游戏区域中

def put_block(grid, block, x, y, color):

for i in range(len(block)):

for j in range(len(block[i])):

if block[i][j] != 0:

grid[y+i][x+j] = color

return grid

# 检查方块能否放下

def check_block(grid, block, x, y):

for i in range(len(block)):

for j in range(len(block[i])):

if block[i][j] != 0:

if y+i >= len(grid) or x+j < 0 or x+j >= len(grid[i]) or grid[y+i][x+j] != 0:

return False

return True

# 消除已经填满的行

def remove_lines(grid):

new_grid = [[0]*len(grid[0]) for _ in range(len(grid))]

row = len(grid) - 1

for i in range(len(grid)-1, -1, -1):

if 0 not in grid[i]:

continue

for j in range(len(grid[i])):

new_grid[row][j] = grid[i][j]

row -= 1

return new_grid

# 绘制游戏区域

def draw_grid(screen, grid):

for i in range(len(grid)):

for j in range(len(grid[i])):

pygame.draw.rect(screen, COLORS[grid[i][j]], (j*BLOCK_SIZE, i*BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE))

pygame.draw.rect(screen, (255, 255, 255), (j*BLOCK_SIZE, i*BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE), 1)

# 游戏主函数

def play_game():

# 初始化游戏

screen, clock = init_game()

# 创建游戏区域

grid = [[0]*int(WIDTH/BLOCK_SIZE) for _ in range(int(HEIGHT/BLOCK_SIZE))]

# 初始化方块

block, color = generate_block()

x, y = int(len(grid[0])/2-len(block[0])/2), 0

# 循环掉落方块

while True:

# 处理游戏事件

for event in pygame.event.get():

if event.type == pygame.QUIT:

pygame.quit()

return

elif event.type == pygame.KEYDOWN:

if event.key == pygame.K_LEFT:

if check_block(grid, block, x-1, y):

x -= 1

elif event.key == pygame.K_RIGHT:

if check_block(grid, block, x+1, y):

x += 1

elif event.key == pygame.K_DOWN:

if check_block(grid, block, x, y+1):

y += 1

elif event.key == pygame.K_UP:

rotated_block = [[block[j][i] for j in range(len(block))] for i in range(len(block[0])-1, -1, -1)]

if check_block(grid, rotated_block, x, y):

block = rotated_block

# 让方块自动下落

if check_block(grid, block, x, y+1):

y += 1

else:

grid = put_block(grid, block, x, y, color)

block, color = generate_block()

x, y = int(len(grid[0])/2-len(block[0])/2), 0

grid = remove_lines(grid)

# 绘制游戏区域

screen.fill((255, 255, 255))

draw_grid(screen, grid)

# 绘制方块

for i in range(len(block)):

for j in range(len(block[i])):

if block[i][j] != 0:

pygame.draw.rect(screen, COLORS[color], ((x+j)*BLOCK_SIZE, (y+i)*BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE))

pygame.draw.rect(screen, (255, 255, 255), ((x+j)*BLOCK_SIZE, (y+i)*BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE), 1)

# 更新屏幕

pygame.display.update()

# 控制帧率

clock.tick(5)

# 运行游戏

play_game()

把代码copy到vscode中,安装好python3解释器和pygame插件,我的PC是win11x64,在vscode中配置好python运行环境,点击运行走起,结果出现:

AI写的俄罗斯方块游戏运行

俄罗斯方块

真能跑起来,虽然游戏界面比较简陋,但是可以玩,实现了俄罗斯方块游戏最基本功能,通过键盘方向键可以控制方块左右运行,向上键可以转动方块,不过程序好像不能判断一局结束,也没有重新开始交互按钮,有点意外的是程序源代码是中文注释。这是中国人写的还是AI翻译的?

AI提供的游戏代码实现了俄罗斯方块游戏最基础的功能,我想它实现更复杂一点的功能,比如游戏计分、用户名,背景音乐,当发送申请到chatgpt,结果AI提醒我今天不能用了。

您今日使用次数已达上限,请明日再试!

那就等明天了,打算用更复杂的提示语,看看AI能不能给出想要的俄罗斯方块游戏源代码。

展开阅读全文

页面更新:2024-02-16

标签:程序   方块   初始化   源代码   定义   大小   窗口   区域   代码   游戏

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top