如果让GPT3.5用Python写一个贪吃蛇游戏……

<h2>第一次编写 不知怎么冒出来的msvcrt<h2/>

我:帮我用Python写一个贪吃蛇,不安装任何代码库

GPT3.5:

好的,我可以帮助你编写一个不依赖于任何第三方库的简单贪吃蛇游戏。以下是代码示例:

import os
import random
import msvcrt
import time

# 游戏画布大小
canvas_width = 40
canvas_height = 20

# 初始蛇头位置和方向
snake = [(canvas_width // 2, canvas_height // 2)]
snake_direction = (1, 0)

# 食物位置
food = (random.randint(0, canvas_width - 1), random.randint(0, canvas_height - 1))

# 游戏是否结束的标志
game_over = False

# 游戏循环
while not game_over:
    # 清空屏幕
    os.system("cls")

    # 绘制画布
    for y in range(canvas_height):
        for x in range(canvas_width):
            if (x, y) in snake:
                print("■", end="")
            elif (x, y) == food:
                print("★", end="")
            else:
                print("  ", end="")
        print()

    # 检测键盘输入
    if msvcrt.kbhit():
        key = ord(msvcrt.getch())
        if key == 224:  # 方向键的键码会以三个字符的形式输入(224, ?, ?)
            key = ord(msvcrt.getch())
            if key == 75:  # 左箭头
                if snake_direction != (1, 0):
                    snake_direction = (-1, 0)
            elif key == 77:  # 右箭头
                if snake_direction != (-1, 0):
                    snake_direction = (1, 0)
            elif key == 72:  # 上箭头
                if snake_direction != (0, 1):
                    snake_direction = (0, -1)
            elif key == 80:  # 下箭头
                if snake_direction != (0, -1):
                    snake_direction = (0, 1)

    # 蛇头移动
    new_head = (snake[0][0] + snake_direction[0], snake[0][1] + snake_direction[1])

    # 判断游戏结束的条件
    if new_head[0] < 0 or new_head[0] >= canvas_width or new_head[1] < 0 or new_head[1] >= canvas_height or new_head in snake:
        game_over = True

    # 更新蛇的位置
    snake.insert(0, new_head)

    # 判断是否吃到食物
    if new_head == food:
        # 随机生成新的食物位置
        while food in snake:
            food = (random.randint(0, canvas_width - 1), random.randint(0, canvas_height - 1))
    else:
        # 没有吃到食物时,删除蛇尾
        snake.pop()

    # 设置游戏速度
    time.sleep(0.2)

# 游戏结束后打印提示信息
print("游戏结束!得分:", len(snake)-1)

你可以直接运行这段代码,然后使用方向键控制蛇的移动方向。在Windows平台上,可以使用命令提示符来运行代码。

这是一个简化的版本,没有使用图形界面,仅通过字符在控制台中的输出来展示游戏画面。使用方向键控制蛇的移动,吃到食物得分加一,蛇碰到边界或自己的身体即游戏结束,最终会输出得分。

希望这能帮到你!如有其他问题,请随时提问。

各位可以放到Python运行一下看一看,前面我标粗了不安装调用任何代码库,不过我大体一看好像出现了msvcrt库,并且程序报错:

[Error] Line 3:

ModuleNotFoundError: No module named 'msvcrt'.

于是我又和GPT交谈了一下

<h2>第二次编写 把msvcrt去掉了<h2/>

我:贪吃蛇游戏调用了msvcrt库,请帮我重新写一个贪吃蛇

GPT3.5:好的,我来给你重新编写一个贪吃蛇游戏,这次使用纯Python实现,不依赖任何第三方库。以下是代码示例:

import os
import random
import time

# 游戏画布大小
canvas_width = 40
canvas_height = 20

# 初始蛇头位置和方向
snake = [(canvas_width // 2, canvas_height // 2)]
snake_direction = (1, 0)

# 食物位置
food = (random.randint(0, canvas_width - 1), random.randint(0, canvas_height - 1))

# 游戏是否结束的标志
game_over = False

# 获取键盘输入的函数
def get_key():
    try:
        import tty, termios
        fd = sys.stdin.fileno()
        old_settings = termios.tcgetattr(fd)
        try:
            tty.setraw(fd)
            ch = sys.stdin.read(1)
        finally:
            termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
        return ch
    except ImportError:
        import msvcrt
        return msvcrt.getch().decode()

# 游戏循环
while not game_over:
    # 清空屏幕
    os.system("cls" if os.name == "nt" else "clear")

    # 绘制画布
    for y in range(canvas_height):
        for x in range(canvas_width):
            if (x, y) in snake:
                print("■", end="")
            elif (x, y) == food:
                print("★", end="")
            else:
                print("  ", end="")
        print()

    # 检测键盘输入
    key = get_key()
    if key == "q":  # 按下q键退出游戏
        break
    elif key == "a" and snake_direction != (1, 0):  # 按下a键向左移动
        snake_direction = (-1, 0)
    elif key == "d" and snake_direction != (-1, 0):  # 按下d键向右移动
        snake_direction = (1, 0)
    elif key == "w" and snake_direction != (0, 1):  # 按下w键向上移动
        snake_direction = (0, -1)
    elif key == "s" and snake_direction != (0, -1):  # 按下s键向下移动
        snake_direction = (0, 1)

    # 蛇头移动
    new_head = (snake[0][0] + snake_direction[0], snake[0][1] + snake_direction[1])

    # 判断游戏结束的条件
    if new_head[0] < 0 or new_head[0] >= canvas_width or new_head[1] < 0 or new_head[1] >= canvas_height or new_head in snake:
        game_over = True

    # 更新蛇的位置
    snake.insert(0, new_head)

    # 判断是否吃到食物
    if new_head == food:
        # 随机生成新的食物位置
        while food in snake:
            food = (random.randint(0, canvas_width - 1), random.randint(0, canvas_height - 1))
    else:
        # 没有吃到食物时,删除蛇尾
        snake.pop()

    # 设置游戏速度
    time.sleep(0.2)

# 游戏结束后打印提示信息
print("游戏结束!得分:", len(snake)-1)

你可以直接运行这段代码,按下 WASD 键来控制蛇的移动方向。在Windows平台上,可以使用命令提示符来运行代码。

这个版本的贪吃蛇游戏同样使用字符输出在控制台中展示游戏画面。使用 W、A、S、D 键来控制蛇的移动方向,吃到食物得分加一,蛇碰到边界或自己的身体即游戏结束,最终会输出得分。

希望这次能满足你的需求!如有其他问题,请随时提问。

<h2>第三次编写 实在不行我去下载一个第三方库吧!<h2/>

我直接运行了,结果这次又双叒叕出了毛病:

[Error] Line 38:

ImportError: cannot import name 'system'.

所以system是个什么呢?我再次说了一遍。

我:贪吃蛇游戏又调用了错误的system,请再帮我重新写一个贪吃蛇

GPT3.5:非常抱歉,我给你的代码中调用了错误的 system 函数。以下是修复后的贪吃蛇游戏代码,这次使用了 curses 库来实现跨平台的终端界面:

import random
import curses
import time

# 游戏画布大小
canvas_width = 40
canvas_height = 20

# 初始蛇头位置和方向
snake = [(canvas_width // 2, canvas_height // 2)]
snake_direction = (1, 0)

# 食物位置
food = (random.randint(0, canvas_width - 1), random.randint(0, canvas_height - 1))

# 游戏是否结束的标志
game_over = False

# 初始化 curses 库
stdscr = curses.initscr()
curses.curs_set(0)
stdscr.nodelay(1)
stdscr.timeout(100)

# 游戏循环
while not game_over:
    # 清空屏幕
    stdscr.clear()

    # 绘制画布
    for y in range(canvas_height):
        for x in range(canvas_width):
            if (x, y) in snake:
                stdscr.addstr(y, x, "■")
            elif (x, y) == food:
                stdscr.addstr(y, x, "★")
    stdscr.refresh()

    # 检测键盘输入
    key = stdscr.getch()
    if key == ord("q"):  # 按下q键退出游戏
        break
    elif key == ord("a") and snake_direction != (1, 0):  # 按下a键向左移动
        snake_direction = (-1, 0)
    elif key == ord("d") and snake_direction != (-1, 0):  # 按下d键向右移动
        snake_direction = (1, 0)
    elif key == ord("w") and snake_direction != (0, 1):  # 按下w键向上移动
        snake_direction = (0, -1)
    elif key == ord("s") and snake_direction != (0, -1):  # 按下s键向下移动
        snake_direction = (0, 1)

    # 蛇头移动
    new_head = (snake[0][0] + snake_direction[0], snake[0][1] + snake_direction[1])

    # 判断游戏结束的条件
    if new_head[0] < 0 or new_head[0] >= canvas_width or new_head[1] < 0 or new_head[1] >= canvas_height or new_head in snake:
        game_over = True

    # 更新蛇的位置
    snake.insert(0, new_head)

    # 判断是否吃到食物
    if new_head == food:
        # 随机生成新的食物位置
        while food in snake:
            food = (random.randint(0, canvas_width - 1), random.randint(0, canvas_height - 1))
    else:
        # 没有吃到食物时,删除蛇尾
        snake.pop()

    # 设置游戏速度
    time.sleep(0.1)

# 结束 curses 库
curses.endwin()

# 游戏结束后打印提示信息
print("游戏结束!得分:", len(snake)-1)

请确保你的机器上已经安装了 curses 库。这次使用 curses 库来创建终端界面,可以在 Linux、Windows、MacOS 等平台上运行。使用 W、A、S、D 键来控制蛇的移动方向,吃到食物得分加一,蛇碰到边界或自己的身体即游戏结束,最终会输出得分。

希望这次能满足你的需求!如有其他问题,请随时提问。

 到头来又是第三方库,我去下载了一个cueses库,不然游戏只能自己编写后用意念玩。

代码:GPT3.5

编辑文章:小小的寒露

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值