Python之贪吃蛇代码实现

Python之贪吃蛇代码实现


下面是一个简单的使用 Python 的 pygame 库实现的贪吃蛇游戏。这个示例只是一个简单的版本,没有很多高级功能,但它可以作为一个起点,你可以在此基础上添加更多功能。

import pygame  
import random 

from tkinter import messagebox
  
# 初始化pygame  
pygame.init()  
  
# 设置游戏窗口的大小和标题  
width, height = 640, 480  
screen = pygame.display.set_mode((width, height))  
pygame.display.set_caption('Snake Game')  
  
# 定义颜色  
white = (255, 255, 255)  
black = (0, 0, 0)  
red = (255, 0, 0)  
  
# 定义蛇和食物的初始位置和大小  
snake_pos = [[320, 240]]  
snake_len = 1  
food_pos = [random.randint(0, 31) * 20, random.randint(0, 23) * 20]  
  
# 定义游戏结束标志和分数  
game_over = False  
score = 0  
  
# 定义蛇的移动方向和速度  
direction = 'space'  
speed = [0, 0]  
  
# 加载字体和音效  
font = pygame.font.Font(None, 36)  
# sound_eat = pygame.mixer.Sound('eat.wav')  
# sound_hit = pygame.mixer.Sound('hit.wav')  
  
# 游戏循环  
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_UP and direction != 'down':  
                direction = 'up'  
                speed = [0, -20]  
            elif event.key == pygame.K_DOWN and direction != 'up':  
                direction = 'down'  
                speed = [0, 20]  
            elif event.key == pygame.K_LEFT and direction != 'right':  
                direction = 'left'  
                speed = [-20, 0]  
            elif event.key == pygame.K_RIGHT and direction != 'left':  
                direction = 'right'  
                speed = [20, 0]   
            elif event.key == pygame.K_SPACE and direction != 'space':  
                direction = 'space'  
                speed = [0, 0]     
            elif event.key == pygame.K_ESCAPE and direction != 'ESC':  
                direction = 'esc'  
                game_over = True 
      
    # 更新蛇的位置和长度  
    snake_pos.insert(0, [snake_pos[0][0] + speed[0], snake_pos[0][1] + speed[1]])  
    if snake_pos[0] == food_pos:  
        food_pos = [random.randint(0, 31) * 20, random.randint(0, 23) * 20]  
        snake_len += 1  
        score += 10  
        # sound_eat.play()  
    else:  
        snake_pos.pop()  
    if len(snake_pos) > snake_len:  
        snake_pos.pop()  
    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  
        # sound_hit.play()  
    for i in range(1, len(snake_pos)):  
        if snake_pos[0] == snake_pos[i]:  
            game_over = True  
            # sound_hit.play()  
      
    # 在屏幕上绘制游戏元素  
    screen.fill(black)  
    pygame.draw.rect(screen, white, [food_pos[0], food_pos[1], 20, 20])  
    for pos in snake_pos:  
        pygame.draw.rect(screen, red, [pos[0], pos[1], 20, 20])  
    score_text = font.render('Score: ' + str(score), True, white)  
    screen.blit(score_text, [10, 10])  
    pygame.display.flip() 
    #pygame.time.wait(200)
    # 控制游戏速度,数值越小速度越快,可以根据需要调整。
    # 注意,该数值不能太大,否则游戏会变慢。
    # 另外,该数值也不能太小,否则游戏会变快,而且可能会因为计算机性能不够而出现卡顿现象。
    # 最好的办法是根据自己的计算机性能进行尝试和调整。另外,也可以使用pygame.time.Clock()对象来控制游戏速度。
    # 具体使用方法可以参考pygame官方文档。例如:clock = pygame.time.Clock();clock.tick(60)。这样
    pygame.time.wait(200) 

messagebox.showinfo("Message", "Game, over!")

《AUTOSAR谱系分解(ETAS工具链)》之总目录

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的Python实现贪吃蛇游戏的代码,其中使用了Pygame库来实现游戏界面的绘制和事件的处理: ```python import pygame import random # 初始化Pygame pygame.init() # 定义游戏界面大小、背景颜色和标题 screen_width = 640 screen_height = 480 bg_color = (255, 255, 255) caption = '贪吃蛇' font_size = 36 # 定义游戏界面和字体 screen = pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption(caption) font = pygame.font.SysFont(None, font_size) # 定义贪吃蛇的初始位置、大小和移动速度 snake_size = 20 snake_x = screen_width // 2 snake_y = screen_height // 2 snake_speed = 20 snake_body = [[snake_x, snake_y]] # 定义食物的初始位置和大小 food_size = 20 food_x = random.randint(0, screen_width // food_size - 1) * food_size food_y = random.randint(0, screen_height // food_size - 1) * food_size # 定义游戏循环标志和时钟 game_over = False clock = pygame.time.Clock() # 定义游戏循环 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_UP: snake_speed = [-snake_size, 0] elif event.key == pygame.K_DOWN: snake_speed = [snake_size, 0] elif event.key == pygame.K_LEFT: snake_speed = [0, -snake_size] elif event.key == pygame.K_RIGHT: snake_speed = [0, snake_size] # 移动贪吃蛇 snake_x += snake_speed[0] snake_y += snake_speed[1] snake_body.insert(0, [snake_x, snake_y]) snake_body.pop() # 判断是否吃到食物 if snake_x == food_x and snake_y == food_y: food_x = random.randint(0, screen_width // food_size - 1) * food_size food_y = random.randint(0, screen_height // food_size - 1) * food_size snake_body.append([snake_x, snake_y]) # 判断是否撞墙或撞到自己 if snake_x < 0 or snake_x >= screen_width or snake_y < 0 or snake_y >= screen_height or [snake_x, snake_y] in snake_body[1:]: game_over = True # 绘制游戏界面 screen.fill(bg_color) pygame.draw.rect(screen, (255, 0, 0), (food_x, food_y, food_size, food_size)) for pos in snake_body: pygame.draw.rect(screen, (0, 255, 0), (pos[0], pos[1], snake_size, snake_size)) score_text = font.render('Score: {}'.format(len(snake_body) - 1), True, (0, 0, 0)) screen.blit(score_text, (10, 10)) pygame.display.update() # 控制游戏帧率 clock.tick(10) # 退出Pygame pygame.quit() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值