我想用chatgpt寫一個貪吃蛇的遊戲,用python語言,結果真寫出來了,還可以運作,還可以每行注釋。太強了,程式員看來要大量失業了!
以下是使用Python和Pygame庫編寫的簡單貪吃蛇遊戲代碼:
```python
import pygame
import random
# 初始化pygame
pygame.init()
# 遊戲視窗大小
width = 500
height = 500
# 建立視窗
window = pygame.display.set_mode((width, height))
pygame.display.set_caption("貪吃蛇")
# 定義顔色
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
# 設定計時器
clock = pygame.time.Clock()
# 貪吃蛇頭部坐标,初始位置在螢幕中央
snake_head_x = width // 2
snake_head_y = height // 2
# 貪吃蛇身體坐标清單,初始長度為3
snake_body = []
for i in range(3):
snake_body.append([snake_head_x - i * 10, snake_head_y])
# 食物坐标,随機生成
food_x = round(random.randrange(0, width - 10) / 10.0) * 10.0
food_y = round(random.randrange(0, height - 10) / 10.0) * 10.0
# 初始方向向右
direction = "right"
# 分數
score = 0
# 遊戲結束标志
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 and direction != "right":
direction = "left"
elif event.key == pygame.K_RIGHT and direction != "left":
direction = "right"
elif event.key == pygame.K_UP and direction != "down":
direction = "up"
elif event.key == pygame.K_DOWN and direction != "up":
direction = "down"
# 移動貪吃蛇身體
for i in range(len(snake_body) - 1, 0, -1):
snake_body[i][0] = snake_body[i-1][0]
snake_body[i][1] = snake_body[i-1][1]
# 移動貪吃蛇頭部
if direction == "left":
snake_head_x -= 10
elif direction == "right":
snake_head_x += 10
elif direction == "up":
snake_head_y -= 10
elif direction == "down":
snake_head_y += 10
# 判斷貪吃蛇是否吃到食物
if snake_head_x == food_x and snake_head_y == food_y:
food_x = round(random.randrange(0, width - 10) / 10.0) * 10.0
food_y = round(random.randrange(0, height - 10) / 10.0) * 10.0
score += 10
# 吃到食物後,在貪吃蛇尾部添加一個身體點
snake_body.append([snake_body[-1][0], snake_body[-1][1]])
# 判斷是否碰到邊界或自身,遊戲結束
if snake_head_x 0 or snake_head_x > width-10 or snake_head_y 0 or snake_head_y > height-10:
game_over = True
for i in range(1, len(snake_body)):
if snake_head_x == snake_body[i][0] and snake_head_y == snake_body[i][1]:
game_over = True
# 繪制視窗,包括貪吃蛇、食物和分數
window.fill(white)
pygame.draw.rect(window, red, [food_x, food_y, 10, 10])
for i in range(len(snake_body)):
pygame.draw.rect(window, black, [snake_body[i][0], snake_body[i][1], 10, 10])
font = pygame.font.SysFont(None, 25)
text = font.render("Score: " + str(score), True, black)
window.blit(text, (10, 10))
pygame.display.update()
# 控制