117.info
人生若只如初见

怎么用python实现一个简单的贪吃蛇游戏

下面是一个简单的贪吃蛇游戏的Python实现代码示例:

import pygame
import time
import random

pygame.init()

# 设置窗口大小
win_width = 800
win_height = 600
win = pygame.display.set_mode((win_width, win_height))
pygame.display.set_caption("贪吃蛇游戏")

# 设置颜色
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)

# 设置蛇和食物初始位置
snake_block = 10
snake_speed = 15
snake_pos = [(win_width//2, win_height//2)]
food_pos = (random.randint(0, win_width//snake_block - 1) * snake_block, random.randint(0, win_height//snake_block - 1) * snake_block)

# 初始化方向
x_change = 0
y_change = 0

# 游戏主循环
run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                x_change = -snake_block
                y_change = 0
            elif event.key == pygame.K_RIGHT:
                x_change = snake_block
                y_change = 0
            elif event.key == pygame.K_UP:
                x_change = 0
                y_change = -snake_block
            elif event.key == pygame.K_DOWN:
                x_change = 0
                y_change = snake_block
    
    # 更新蛇的位置
    new_pos = (snake_pos[0][0] + x_change, snake_pos[0][1] + y_change)
    snake_pos.insert(0, new_pos)
    
    # 检查蛇是否吃到食物
    if snake_pos[0] == food_pos:
        food_pos = (random.randint(0, win_width//snake_block - 1) * snake_block, random.randint(0, win_height//snake_block - 1) * snake_block)
    else:
        snake_pos.pop()
    
    # 绘制窗口
    win.fill(black)
    for pos in snake_pos:
        pygame.draw.rect(win, white, (pos[0], pos[1], snake_block, snake_block))
    pygame.draw.rect(win, red, (food_pos[0], food_pos[1], snake_block, snake_block))
    
    pygame.display.update()
    
    # 控制蛇的速度
    pygame.time.Clock().tick(snake_speed)
    
# 退出游戏
pygame.quit()

这段代码实现了一个简单的贪吃蛇游戏,玩家可以通过方向键控制蛇的移动方向,吃到食物会增加蛇的长度,如果蛇撞到墙壁或者撞到自己就会游戏结束。希望对你有帮助!

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe15eAzsICQ5TB1w.html

推荐文章

  • python如何获取当前路径

    在 Python 中,你可以使用 `os` 模块来获取当前工作目录(当前路径)。你可以按照以下步骤来获取当前路径:1. 导入 `os` 模块:```pythonimport os```2. 使用 `o...

  • python怎么打印数组所有元素

    要打印数组中所有元素,可以使用循环遍历数组并逐个打印元素。下面是一个示例代码:
    # 定义一个数组
    arr = [1, 2, 3, 4, 5] # 使用for循环遍历数组并打...

  • python如何求矩阵特征值

    要求一个矩阵的特征值,你可以使用NumPy库中的numpy.linalg.eigvals函数。以下是一个示例代码:
    import numpy as np # 定义一个矩阵
    A = np.array([[1...

  • python打印数组要注意哪些事项

    在打印数组时,需要注意以下几点: 使用合适的打印函数:可以使用内置的print()函数打印数组,也可以使用numpy库中的print()函数(np.print())来打印数组。 控制...

  • MySQL基础入门之Case语句怎么使用

    在MySQL中,CASE语句可以根据条件执行不同的操作。下面是一个简单的例子,演示如何在MySQL中使用CASE语句: 使用CASE语句进行条件判断并返回结果: SELECT CASE ...

  • jQuery中removeClass()方法怎么使用

    removeClass()方法是用来移除元素的一个或多个CSS类的。它的基本语法如下:
    $("selector").removeClass("class1 class2 ..."); 其中,selector是要移除CSS类...

  • Java Arrays.sort()的使用方法是什么

    在Java中,Arrays类提供了一个sort()方法来对数组进行排序。使用方法如下: 导入Arrays类:import java.util.Arrays;
    调用sort()方法进行排序:int[] arr =...

  • jQuery中find()方法如何使用

    在jQuery中,find()方法用于查找匹配选择器的后代元素。语法如下:
    $(selector).find(filter) 其中,selector是要查找后代元素的基础元素,可以是任何有效的...