让Chatgpt帮你写个贪吃蛇游戏

好久不见~ 最近的ChatGPT非常智能非常火爆,于是,我想让他帮我写个贪吃蛇游戏,最后附代码。
# 前言
ChatGPT是一个基于自然语言处理技术的AI模型,由OpenAI公司开发出来。它可以进行对话、问答、生成文本等多项任务,并且在众多自然语言处理领域都取得了卓越的成就。ChatGPT的出现不仅极大地促进了人工智能和自然语言处理的发展,还为普通用户提供了一种全新的与机器交互的方式。本文将探讨ChatGPT的功能以及应用,希望能够让更多的人了解并认识这一强大的自然语言处理模型。

我:利用python写个贪吃蛇游戏
ChatGPT:

import pygame
import random

# 初始化pygame
pygame.init()

# 设置窗口大小和标题
window_size = (400, 400)
game_window = pygame.display.set_mode(window_size)
pygame.display.set_caption("Snake Game")

# 定义颜色
white = (255, 255, 255)
green = (0, 255, 0)
black = (0, 0, 0)

# 定义贪吃蛇起始位置、长度、速度和方向
snake_position = [100, 50]
snake_body = [[100, 50], [90, 50], [80, 50]]
snake_speed = 10
snake_direction = "RIGHT"

# 定义食物初始位置和颜色
food_position = [random.randrange(1, 40) * 10, random.randrange(1, 40) * 10]
food_color = green

# 显示得分
score = 0
font = pygame.font.SysFont(None, 35)

# 游戏主循环
game_over = False
while not game_over:

    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                snake_direction = "UP"
            elif event.key == pygame.K_DOWN:
                snake_direction = "DOWN"
            elif event.key == pygame.K_LEFT:
                snake_direction = "LEFT"
            elif event.key == pygame.K_RIGHT:
                snake_direction = "RIGHT"

    # 移动贪吃蛇
    if snake_direction == "RIGHT":
        snake_position[0] += snake_speed
    elif snake_direction == "LEFT":
        snake_position[0] -= snake_speed
    elif snake_direction == "UP":
        snake_position[1] -= snake_speed
    elif snake_direction == "DOWN":
        snake_position[1] += snake_speed

    # 如果贪吃蛇碰到边缘,或者撞到自己的身体,游戏结束
    if snake_position[0] >= window_size[0] or snake_position[0] < 0:
        game_over = True
    if snake_position[1] >= window_size[1] or snake_position[1] < 0:
        game_over = True
    for block in snake_body[1:]:
        if snake_position == block:
            game_over = True

    # 当贪吃蛇吃到食物时,更新贪吃蛇的长度并重新生成食物位置
    if snake_position == food_position:
        food_position = [random.randrange(1, 40) * 10, random.randrange(1, 40) * 10]
        snake_body.insert(0, list(snake_position))
        score += 10

    # 更新贪吃蛇身体块的位置列表,将头部加入最前面,将尾部删除
    snake_body.insert(0, list(snake_position))
    snake_body.pop()

    # 绘制窗口
    game_window.fill(black)

    # 绘制贪吃蛇和食物
    for position in snake_body:
        pygame.draw.rect(game_window, white, pygame.Rect(position[0], position[1], 10, 10))
    pygame.draw.rect(game_window, food_color, pygame.Rect(food_position[0], food_position[1], 10, 10))

    # 绘制得分
    score_text = font.render("Score: " + str(score), True, white)
    game_window.blit(score_text, [5, 5])

    # 更新屏幕
    pygame.display.update()

# 退出pygame
pygame.quit()

他直接帮我写了100多行代码,并附上注释以及说明:运行该程序之后,应该就能看到一个简单的贪吃蛇游戏窗口。玩家可以通过箭头键控制贪吃蛇的移动方向,移动并吃掉食物,使得贪吃蛇身体越来越长,并得到相应的得分。如果贪吃蛇碰到边缘或者自己的身体,则游戏结束。

我:上面的游戏写的在高级些
ChatGPT:

import pygame
import random

class Snake:
    def __init__(self, position, speed):
        self.position = position
        self.body = [position]
        self.speed = speed
        self.direction = "RIGHT"
 
    def change_direction(self, direction):
        if direction == "RIGHT" and not self.direction == "LEFT":
            self.direction = "RIGHT"
        elif direction == "LEFT" and not self.direction == "RIGHT":
            self.direction = "LEFT"
        elif direction == "UP" and not self.direction == "DOWN":
            self.direction = "UP"
        elif direction == "DOWN" and not self.direction == "UP":
            self.direction = "DOWN"

    def move(self):
        if self.direction == "RIGHT":
            self.position[0] += self.speed
        elif self.direction == "LEFT":
            self.position[0] -= self.speed
        elif self.direction == "UP":
            self.position[1] -= self.speed
        elif self.direction == "DOWN":
            self.position[1] += self.speed
        self.body.insert(0, list(self.position))
        self.body.pop()

    def eat_food(self, food_position):
        if self.position == food_position:
            self.body.insert(0, list(self.position))
            return True
        return False

    def check_collision(self, window_size):
        if self.position[0] >= window_size[0] or self.position[0] < 0:
            return True
        if self.position[1] >= window_size[1] or self.position[1] < 0:
            return True
        for block in self.body[1:]:
            if self.position == block:
                return True
        return False
 
class Food:
    def __init__(self, position):
        self.position = position
        self.color = (0, 255, 0)
 
    def randomize_position(self, window_size):
        self.position = [random.randrange(1, window_size[0]//10) * 10, random.randrange(1, window_size[1]//10) * 10]
 
    def draw(self, game_window):
        pygame.draw.rect(game_window, self.color, pygame.Rect(self.position[0], self.position[1], 10, 10))
         
class Game:
    def __init__(self):
        pygame.init()
 
        self.window_size = (400, 400)
        self.game_window = pygame.display.set_mode(self.window_size)
 
        pygame.display.set_caption("Snake Game")
 
        self.white = (255, 255, 255)
        self.black = (0, 0, 0)
 
        self.font = pygame.font.SysFont(None, 35)
 
        self.score = 0

    def start(self):
        snake = Snake([100, 50], 10)
        food = Food([200, 200])

        game_over = False
        clock = pygame.time.Clock()

        while not game_over:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    game_over = True
                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_UP:
                        snake.change_direction("UP")
                    elif event.key == pygame.K_DOWN:
                        snake.change_direction("DOWN")
                    elif event.key == pygame.K_LEFT:
                        snake.change_direction("LEFT")
                    elif event.key == pygame.K_RIGHT:
                        snake.change_direction("RIGHT")

            snake.move()

            if snake.check_collision(self.window_size):
                game_over = True

            if snake.eat_food(food.position):
                food.randomize_position(self.window_size)
                self.score += 10

            self.game_window.fill(self.black)

            for position in snake.body:
                pygame.draw.rect(self.game_window, self.white, pygame.Rect(position[0], position[1], 10, 10))
            food.draw(self.game_window)

            score_text = self.font.render("Score: " + str(self.score), True, self.white)
            self.game_window.blit(score_text, [5, 5])

            pygame.display.update()

            clock.tick(15)

        pygame.quit()

if __name__ == "__main__":
    game = Game()
    game.start()

好家伙,他直接将贪吃蛇、食物和游戏分别封装为Snake、Food和Game类,使得不同功能的代码更好地组织在一起,增加了代码的可读性,并且也方便了代码扩展。同时,在碰撞检测、食物随机位置生成等方面也做了一些改进,让游戏更加完善和流畅。

这只不过是ChatGPT展示的冰山一角,你们说未来的ChatGPT会发展成什么样子,欢迎讨论!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apollo丶小杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值