使用文心快码(Baidu Comate)用python写贪吃蛇

vs code安装插件

登陆

游戏效果图

文心快码(Baidu Comate)智能代码助手简介

文心快码(Baidu Comate)智能编码助手是基于文心大模型,打造的新一代编码辅助工具,拥有代码智能、场景丰富、创造价值、广泛应用等多重产品优势。文心快码(Baidu Comate)智能编码助手支持 100 多种语言和多种 IDE(集成开发环境)平台,可以推荐代码、生成代码注释、查找代码缺陷、给出优化方案,还能深度解读企业与个人私域代码库等。同时文心快码(Baidu Comate)内置1w+个Github 热门代码库,支持基于以上代码库的检索和问答;也支持了Web在线检索,直接实时获取最新技术知识,这也是国内首个支持实时检索智能代码助手。此外,只需给出任意API链接,文心快码(Baidu Comate)即可生成调用代码和对应的测试用例。目前,文心快码(Baidu Comate)已升级至2.5版本,在知识增强、研发流程全域赋能、企业级安全等方面实现了能力提升。在之前续写、解释代码、问答等能力的基础上,新版本可深度解读代码库、关联权威公域和私域知识生成新的代码,生成的代码更加安全,并且可以智能检测安全漏洞、一键修复漏洞,支持混合云部署等。

使用过程

给出的代码

import pygame
import sys
import random

# 初始化pygame
pygame.init()

# 定义颜色
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)

# 设置屏幕大小和标题
SCREEN_WIDTH, SCREEN_HEIGHT = 400, 300
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("贪吃蛇游戏")

# 蛇的初始位置和初始身体
SNAKE_START = [100, 50, 30, 30]  # [x, y, width, height]
snake = [
    [SNAKE_START[0], SNAKE_START[1]],
    [SNAKE_START[0] - 15, SNAKE_START[1]],
    [SNAKE_START[0] - 30, SNAKE_START[1]]
]

# 食物的位置
FOOD_SIZE = 15
food_pos = [random.randint(0, (SCREEN_WIDTH-FOOD_SIZE)//15)*15, random.randint(0, (SCREEN_HEIGHT-FOOD_SIZE)//15)*15]

# 蛇的移动方向
direction = 'RIGHT'

# 游戏主循环
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif 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'

    # 移动蛇
    if direction == 'RIGHT':
        snake.insert(0, [snake[0][0] + 15, snake[0][1]])
    elif direction == 'LEFT':
        snake.insert(0, [snake[0][0] - 15, snake[0][1]])
    elif direction == 'UP':
        snake.insert(0, [snake[0][0], snake[0][1] - 15])
    elif direction == 'DOWN':
        snake.insert(0, [snake[0][0], snake[0][1] + 15])

    # 删除蛇尾
    snake.pop()

    # 碰撞检测
    if snake[0] in snake[1:]:
        running = False  # 碰到自己,游戏结束
    if snake[0] == food_pos:
        # 吃到食物,增加长度
        snake.append([food_pos[0], food_pos[1]])
        food_pos = [random.randint(0, (SCREEN_WIDTH-FOOD_SIZE)//15)*15, random.randint(0, (SCREEN_HEIGHT-FOOD_SIZE)//15)*15]

    # 绘制
    screen.fill(WHITE)
    pygame.draw.rect(screen, GREEN, (food_pos[0], food_pos[1], FOOD_SIZE, FOOD_SIZE))
    for segment in snake:
        pygame.draw.rect(screen, RED, (segment[0], segment[1], SNAKE_START[2], SNAKE_START[3]))

    pygame.display.flip()

    # 控制帧率
    pygame.time.Clock().tick(15)

# 退出游戏
pygame.quit()
sys.exit()

运行结果:

贪吃蛇会跑出窗口

import pygame
import random
import sys

# 初始化pygame
pygame.init()

# 定义颜色
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)

# 设置屏幕大小和标题
SCREEN_WIDTH, SCREEN_HEIGHT = 400, 300
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("贪吃蛇游戏")

# 蛇的初始位置和初始身体
SNAKE_START = [100, 50, 20, 20]  # [x, y, width, height]
# 蛇的初始位置和初始身体
SNAKE_SIZE = 20  # 蛇的方块大小
snake = [
    [SNAKE_START[0], SNAKE_START[1]]
]

# 初始时生成一个食物
FOOD_SIZE = 20
food_pos = [random.randint(0, (SCREEN_WIDTH-FOOD_SIZE)//20)*20, random.randint(0, (SCREEN_HEIGHT-FOOD_SIZE)//20)*20]

# 蛇的移动方向
direction = 'RIGHT'

# 游戏主循环
clock = pygame.time.Clock()  # 创建一个时钟对象来控制帧率
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif 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'

    # 移动蛇
    if direction == 'RIGHT':
        new_head = [snake[0][0] + 20, snake[0][1]]
        if new_head[0] >= SCREEN_WIDTH:  # 如果超出右边界,从左边回来
            new_head[0] = 0
    elif direction == 'LEFT':
        new_head = [snake[0][0] - 20, snake[0][1]]
        if new_head[0] < 0:  # 如果超出左边界,从右边回来
            new_head[0] = SCREEN_WIDTH - SNAKE_START[2]
    elif direction == 'UP':
        new_head = [snake[0][0], snake[0][1] - 20]
        if new_head[1] < 0:  # 如果超出上边界,从下边回来
            new_head[1] = SCREEN_HEIGHT - SNAKE_START[3]
    elif direction == 'DOWN':
        new_head = [snake[0][0], snake[0][1] + 20]
        if new_head[1] >= SCREEN_HEIGHT:  # 如果超出下边界,从上边回来
            new_head[1] = 0

    # 检查是否吃到食物
    if new_head == food_pos:
        snake.insert(0, new_head)  # 增加蛇的长度
        # 重新生成食物位置
        food_pos = [random.randint(0, (SCREEN_WIDTH-FOOD_SIZE)//20)*20, random.randint(0, (SCREEN_HEIGHT-FOOD_SIZE)//20)*20]
        # 确保新生成的食物位置不与蛇的当前位置重叠
        while food_pos in [(seg[0], seg[1]) for seg in snake]:
            food_pos = [random.randint(0, (SCREEN_WIDTH-FOOD_SIZE)//20)*20, random.randint(0, (SCREEN_HEIGHT-FOOD_SIZE)//20)*20]
    else:
        snake.insert(0, new_head)  # 移动蛇头
        if len(snake) > 1:
            snake.pop()  # 删除蛇尾

    # 碰撞检测
    if snake[0] in snake[1:]:
        running = False  # 碰到自己,游戏结束

    # 绘制
    screen.fill(WHITE)
    pygame.draw.rect(screen, GREEN, (food_pos[0], food_pos[1], FOOD_SIZE, FOOD_SIZE))
    for segment in snake:
        pygame.draw.rect(screen, RED, (segment[0], segment[1], SNAKE_SIZE, SNAKE_SIZE))

    pygame.display.flip()

    # 控制帧率
    clock.tick(15)

已经可以完成游戏功能了。

使用感受

使用文心快码最直观的感受是工作效率的显著提升。通过智能预测、自动补全代码片段或文章段落,减少了手动输入的时间,让开发者或写作者能够更专注于创意和逻辑的实现,而非基础性的编码或写作任务。并且代码补全和整体代码风格非常好,像贪吃蛇这种难度的代码基本可以完美完成。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值