别卷了,玩会游戏吧-----贪吃蛇游戏(附Python代码)

import random
import pygame

# 初始化Pygame
pygame.init()


# 设置游戏窗口大小和标题
window_width = 800
window_height = 600
window = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption("贪吃蛇")

# 定义颜色
black = pygame.Color(0, 0, 0)
white = pygame.Color(255, 255, 255)
red = pygame.Color(255, 0, 0)
green = pygame.Color(0, 255, 0)
blue = pygame.Color(0, 0, 255)

# 设置蛇头初始位置和速度
snake_position = [100, 50]
snake_body = [[100, 50], [90, 50], [80, 50]]
food_position = [random.randrange(1, (window_width // 10)) * 10, random.randrange(1, (window_height // 10)) * 10]
food_spawn = True
direction = 'RIGHT'
changeto = ''

# 设置时钟对象
clock = pygame.time.Clock()


# 定义游戏结束的函数
def game_over():
    font = pygame.font.SysFont('consolas', 72)
    text = font.render('Game Over', True, red)
    text_rect = text.get_rect()
    text_rect.midtop = (window_width / 2, window_height / 4)
    window.fill(black)
    window.blit(text, text_rect)
    pygame.display.flip()
    pygame.time.wait(5000)
    pygame.quit()


# 游戏主循环
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT or event.key == ord('d'):
                changeto = 'RIGHT'
            if event.key == pygame.K_LEFT or event.key == ord('a'):
                changeto = 'LEFT'
            if event.key == pygame.K_UP or event.key == ord('w'):
                changeto = 'UP'
            if event.key == pygame.K_DOWN or event.key == ord('s'):
                changeto = 'DOWN'

    # 确定蛇移动的方向
    if changeto == 'RIGHT' and direction != 'LEFT':
        direction = 'RIGHT'
    if changeto == 'LEFT' and direction != 'RIGHT':
        direction = 'LEFT'
    if changeto == 'UP' and direction != 'DOWN':
        direction = 'UP'
    if changeto == 'DOWN' and direction != 'UP':
        direction = 'DOWN'

    # 根据方向移动蛇头
    if direction == 'RIGHT':
        snake_position[0] += 10
    if direction == 'LEFT':
        snake_position[0] -= 10
    if direction == 'UP':
        snake_position[1] -= 10
    if direction == 'DOWN':
        snake_position[1] += 10

    # 增加蛇身体长度
    snake_body.insert(0, list(snake_position))
    if snake_position[0] == food_position[0] and snake_position[1] == food_position[1]:
        food_spawn = False
    else:
        snake_body.pop()

    # 生成新的食物位置
    if not food_spawn:
        food_position = [random.randrange(1, (window_width // 10)) * 10,
                         random.randrange(1, (window_height // 10)) * 10]
    food_spawn = True

    # 绘制游戏窗口
    window.fill(black)
    for pos in snake_body:
        pygame.draw.rect(window, green, pygame.Rect(pos[0], pos[1], 10, 10))
    pygame.draw.rect(window, white, pygame.Rect(food_position[0], food_position[1], 10, 10))

    # 判断游戏结束条件
    if snake_position[0] < 0 or snake_position[0] > window_width - 10:
        game_over()
    if snake_position[1] < 0 or snake_position[1] > window_height - 10:
        game_over()
    for block in snake_body[1:]:
        if snake_position[0] == block[0] and snake_position[1] == block[1]:
            game_over()

    # 更新游戏显示
    pygame.display.update()
    # 设置刷新率为15帧
    clock.tick(15)

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,以下是一个简单版的Python贪吃游戏代码: ```python import pygame import random # 初始化pygame pygame.init() # 游戏区域大小 width = 800 height = 600 # 创建游戏窗口 screen = pygame.display.set_mode((width, height)) pygame.display.set_caption("贪吃") # 定义颜色 BLACK = (0, 0, 0) WHITE = (255, 255, 255) GREEN = (0, 255, 0) RED = (255, 0, 0) # 的初始位置,长度和速度 snake_pos = [(width / 2, height / 2)] snake_len = 1 snake_speed = 10 # 食物的初始位置和大小 food_pos = (random.randint(0, width), random.randint(0, height)) food_size = 10 # 移动的方向 direction = "right" # 游戏循环 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_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 == "left": snake_pos.insert(0, (snake_pos[0][0] - snake_speed, snake_pos[0][1])) elif direction == "right": snake_pos.insert(0, (snake_pos[0][0] + snake_speed, snake_pos[0][1])) elif direction == "up": snake_pos.insert(0, (snake_pos[0][0], snake_pos[0][1] - snake_speed)) elif direction == "down": snake_pos.insert(0, (snake_pos[0][0], snake_pos[0][1] + snake_speed)) # 判断是否吃到食物 if snake_pos[0][0] < food_pos[0] + food_size and snake_pos[0][0] > food_pos[0] - food_size and \ snake_pos[0][1] < food_pos[1] + food_size and snake_pos[0][1] > food_pos[1] - food_size: food_pos = (random.randint(0, width), random.randint(0, height)) snake_len += 1 # 删除尾 if len(snake_pos) > snake_len: snake_pos.pop() # 绘制游戏区域 screen.fill(BLACK) # 绘制食物 pygame.draw.circle(screen, GREEN, food_pos, food_size) # 绘制 for pos in snake_pos: pygame.draw.rect(screen, WHITE, (pos[0], pos[1], snake_speed, snake_speed)) # 判断是否游戏结束 if snake_pos[0][0] < 0 or snake_pos[0][0] > width or snake_pos[0][1] < 0 or snake_pos[0][1] > height: game_over = True for pos in snake_pos[1:]: if pos == snake_pos[0]: game_over = True # 更新屏幕 pygame.display.update() # 退出pygame pygame.quit() ``` 运行代码后,弹出一个游戏窗口,按方向键控制的移动,尽可能地吃到食物并防止撞墙或咬到自己,直到游戏结束。 ### 回答2: 贪吃是一款非常经典的游戏,而Python是一种功能强大的编程语言。在Python中,我们可以利用各种图形库创建一个贪吃游戏。 首先,我们需要导入适当的图形库,例如Pygame。然后,我们可以创建一个窗口来显示游戏界面,并设置好窗口的大小和标题。 接下来,我们需要定义贪吃的初始位置、大小和颜色。可以使用列表或数组来表示的身体,每个元素代表一个身体部分的位置。初始时的长度较短,可以在游戏界面的某个位置生成。 然后,我们需要定义的移动规则。可以使用键盘事件来控制的移动方向,例如“上”、“下”、“左”、“右”键对应的移动方向。每次移动一步,身体的每个部分都跟随头的移动方向。 与此同时,我们还需要定义食物的位置和生成规则。可以在游戏界面中的一个随机位置生成食物。当头与食物重合时,的长度增加,并在新的位置生成食物。 另外,我们还需要考虑游戏的结束条件。例如,当头碰到游戏界面的边缘或自己的身体时,游戏结束。此时,我们可以显示游戏结束的界面,并显示家的得分。 最后,我们可以通过循环来不断更新游戏界面,使实时移动。同时,还需要监听键盘事件,以便控制的移动方向。每次循环时,都需要检测头与食物的碰撞,并更新的位置和长度。 总的来说,通过利用Python编写贪吃游戏可以帮助我们学习和巩固编程知识,同时也能够体验到游戏开发的乐趣。 ### 回答3: Python贪吃游戏是一种经典的游戏模拟,通过编程实现了贪吃的移动、成长、吃食物等操作。 在这个游戏中,家控制一条移动,目标是吃掉尽可能多的食物,使身体变长。的身体由一系列方块组成,初始时只有一个小方块作为头部。 通过键盘的上下左右键,家可以控制的移动方向。头每次移动一个方块的距离,身体紧随其后。当头碰到墙壁或者碰到自己的身体时,游戏结束。 游戏界面通常使用ASCII字符进行表示,墙壁用“#”表示,食物用“@”表示,头用“O”表示,身用“#”表示。当头和食物重合时,的长度增加,并且在尾生成一个新的食物。 在这个游戏中,有一些需要考虑的逻辑,例如不能向相反的方向移动,即不能直接掉头;头和食物的坐标要实时更新,以便判断是否吃到食物;的身体长度的增加要与移动一致,不能出现断节的情况。 通过编写代码,我们可以使用循环来实现游戏的持续进行,每次循环根据用户操作更新的坐标,并判断头是否与墙壁或者自己的身体相碰。同时,当头与食物重合时,需要更新的长度和生成新的食物。 总之,Python贪吃游戏是一种通过编程实现的经典游戏模拟,它不仅考验了家的反应能力,还能锻炼编程逻辑和思维能力。让我们一起来挑战这个有趣的游戏吧!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

杜十六

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

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

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

打赏作者

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

抵扣说明:

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

余额充值