用AI在5分钟内编个贪吃蛇游戏

一、工具准备

1、python环境

2、人工智能工具:豆包

二、安装python

1、登录到python官网,下载安装包

2、双击进行安装

三、编写游戏代码

1、打开AI工具、登录

2、选择AI编程

3、输入“我希望做一个贪吃蛇游戏,给小孩子玩的,你能帮我写好python代码吗”

4、AI返回代码,并给出操作方法

以下是一个使用 Python 的pygame库实现的简单贪吃蛇游戏代码,适合小孩子体验游玩。在运行代码前,请确保你已经安装了pygame库,可以使用pip install pygame进行安装。

收起

import pygame
import time
import random

# 初始化 Pygame
pygame.init()

# 定义颜色
white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)

# 定义游戏窗口的大小
dis_width = 800
dis_height = 600

# 创建游戏窗口
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('贪吃蛇游戏')

# 控制游戏帧率
clock = pygame.time.Clock()

# 蛇的每个方块的大小
snake_block = 10
snake_speed = 15

# 定义字体样式
font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)


# 显示得分
def Your_score(score):
    value = score_font.render("你的得分: " + str(score), True, yellow)
    dis.blit(value, [0, 0])


# 绘制蛇
def our_snake(snake_block, snake_list):
    for x in snake_list:
        pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])


# 显示消息
def message(msg, color):
    mesg = font_style.render(msg, True, color)
    dis.blit(mesg, [dis_width / 6, dis_height / 3])


# 主游戏循环
def gameLoop():
    game_over = False
    game_close = False

    # 蛇的初始位置
    x1 = dis_width / 2
    y1 = dis_height / 2

    # 蛇每次移动的距离
    x1_change = 0
    y1_change = 0

    # 蛇的身体列表
    snake_List = []
    Length_of_snake = 1

    # 食物的随机位置
    foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
    foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0

    while not game_over:

        while game_close == True:
            dis.fill(blue)
            message("你输了!按 Q-退出 或 C-重新开始", red)
            Your_score(Length_of_snake - 1)
            pygame.display.update()

            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_over = True
                        game_close = False
                    if event.key == pygame.K_c:
                        gameLoop()

        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:
                    x1_change = -snake_block
                    y1_change = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = snake_block
                    y1_change = 0
                elif event.key == pygame.K_UP:
                    y1_change = -snake_block
                    x1_change = 0
                elif event.key == pygame.K_DOWN:
                    y1_change = snake_block
                    x1_change = 0

        # 检查蛇是否撞到边界
        if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
            game_close = True
        x1 += x1_change
        y1 += y1_change
        dis.fill(blue)
        pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])
        snake_Head = []
        snake_Head.append(x1)
        snake_Head.append(y1)
        snake_List.append(snake_Head)
        if len(snake_List) > Length_of_snake:
            del snake_List[0]

        # 检查蛇是否撞到自己
        for x in snake_List[:-1]:
            if x == snake_Head:
                game_close = True

        our_snake(snake_block, snake_List)
        Your_score(Length_of_snake - 1)

        pygame.display.update()

        # 蛇吃到食物
        if x1 == foodx and y1 == foody:
            foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
            foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
            Length_of_snake += 1

        clock.tick(snake_speed)

    pygame.quit()
    quit()


gameLoop()

代码说明:

  1. 初始化与颜色定义:初始化pygame库,并定义了游戏中用到的各种颜色,如白色、黄色、黑色等。
  2. 游戏窗口设置:设置游戏窗口的大小,并为窗口添加标题。
  3. 游戏元素函数
    • Your_score函数:用于在屏幕上显示玩家的得分。
    • our_snake函数:绘制蛇的身体。
    • message函数:在游戏结束等情况下显示提示消息。
  4. 主游戏循环
    • 处理用户的键盘输入,控制蛇的移动方向。
    • 检查蛇是否撞到边界或自己的身体,如果是则游戏结束。
    • 当蛇吃到食物时,蛇的长度增加,并随机生成新的食物位置。
    • 控制游戏的帧率,保证游戏的流畅性。

运行代码后,你就可以使用上下左右箭头键控制贪吃蛇的移动,尝试吃到更多的食物,增加自己的得分。

四、运行代码

1、打开IDLE,这是python自带的运行环境

2、新建python文件,并粘贴代码

3、运行代码

4、优化代码

比如贪吃蛇过于灵敏,速度太快,可以调整速度,不需要自己调整代码,直接丢给AI工具

五、更进一步

写一些大型游戏,比如 Football bros - Football Bros里面的游戏

Snake-AI,这是一个用 C/C 语言写的贪吃蛇游戏的人工智能。AI 的目的是让蛇尽可能的吃更多的食物,直到吃满整个地图。想参与这个项目,请查看todos。Demo使用方法译与运行:$ make $ make run为了解详细使用方法, 请查看主函数main()算法介绍函数Snake.decideNext(): 计算蛇S1的下一个移动方向D计算从蛇S1的头部到达食物的最短路径P1。派一条与蛇S1完全一样的虚拟蛇S2沿路径P1吃掉食物。计算从蛇S2的头部到其尾部的最长路径P2。如果路径P2存在,将移动方向D设置为路径P1的第一个方向,否则进行步骤4。计算从蛇S1的头部到达其尾部的最长路径P3。如果P3存在,将移动方向D设置为路径P3的第一个方向,否则进行步骤5。将移动方向D设置为离食物最远的方向。函数Map.findMinPath(): 计算两个位置间的最短路径算法建立在BFS的基础上。为了使路径尽可能直,每次遍历邻接点时,在当前移动方向上的位置会被优先遍历。效果展示:(绿色区域为搜索算法扫描到的区域,红色区域为最后计算出的最短路径,每个位置上的数字表示了从起始位置开始到该位置的最短距离)函数Map.findMaxPath(): 计算两个位置间的最长路径算法建立在DFS与贪心算法的基础上。每次遍历邻接点时,离目标位置最远(使用曼哈顿距离估计)的位置将会被优先遍历到。另外,为了使路径尽可能直,如果两个位置到目标位置的距离相等,在当前移动方向上的位置将被优先遍历到。这个问题是一个NP完全问题,此算法得出的结果路径只是一个近似最长路径。效果展示:(绿色区域为搜索算法扫描到的区域,红色区域为最后计算出的最长路径,每个位置上的数字表示了从该位置开始到目标位置的估计距离) 标签:Snake
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值