前言:
目前咱们对“c语言写俄罗斯方块代码加背景音乐”大概比较注重,你们都需要分析一些“c语言写俄罗斯方块代码加背景音乐”的相关资讯。那么小编同时在网上网罗了一些对于“c语言写俄罗斯方块代码加背景音乐””的相关内容,希望看官们能喜欢,姐妹们快快来学习一下吧!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提供的游戏代码实现了俄罗斯方块游戏最基础的功能,我想它实现更复杂一点的功能,比如游戏计分、用户名,背景音乐,当发送申请到chatgpt,结果AI提醒我今天不能用了。
您今日使用次数已达上限,请明日再试!
那就等明天了,打算用更复杂的提示语,看看AI能不能给出想要的俄罗斯方块游戏源代码。
标签: #c语言写俄罗斯方块代码加背景音乐