贪吃蛇代码复制打开就能玩(Python实现简单的贪吃蛇游戏)

Python实现简单的贪吃蛇游戏

贪吃蛇作为一个经典的小游戏,已经成为了程序员们练手的必备项目之一。今天,我们将利用Python语言来实现一个简单的贪吃蛇游戏,让大家能够快速上手,享受游戏的乐趣。

准备工作

在开始编写贪吃蛇游戏之前,我们需要先准备好开发环境,我们需要使用到的工具有:

  • Python,建议使用3.6.x或以上版本
  • Pygame,一个Python编写的简单游戏库
  • 一个文本编辑器,例如Notepad++或Sublime Text

请确保你已经正确安装了以上工具,并且能够在命令行或终端中正常运行Python命令。

编写代码

在我们开始编写贪吃蛇游戏的代码之前,我们需要先了解一些基本概念。

游戏窗口

游戏窗口是贪吃蛇游戏的核心,所有的游戏元素都会在窗口中进行显示。在Python中,我们可以使用Pygame库创建游戏窗口。

游戏循环

游戏循环是游戏的运行核心,它会不断地进行游戏更新和绘制。在每次循环中,我们需要检测用户输入、更新游戏状态、绘制游戏界面等。

游戏元素

在贪吃蛇游戏中,我们需要定义一些游戏元素,例如蛇、食物、障碍物等。这些元素是游戏逻辑的核心,我们需要定义它们的属性和行为,以实现游戏的正常运行。

现在,我们开始编写贪吃蛇游戏的代码。

import pygame
import time
import random
 
pygame.init()
 
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
green = (0, 155, 0)
 
display_width = 800
display_height = 600
 
game_display = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('贪吃蛇游戏')
 
block_size = 10
clock = pygame.time.Clock()
 
font = pygame.font.SysFont(None, 25)
 
def snake(block_size, snake_list):
    for x_y in snake_list:
        pygame.draw.rect(game_display, green, [x_y[0], x_y[1], block_size, block_size])
 
def message_to_screen(msg, color):
    screen_text = font.render(msg, True, color)
    game_display.blit(screen_text, [display_width / 6, display_height / 6])
 
def gameLoop():
    game_exit = False
    game_over = False
 
    x1 = display_width / 2
    y1 = display_height / 2
 
    x1_change = 0
    y1_change = 0
 
    snake_list = []
    snake_length = 1
 
    food_x = round(random.randrange(0, display_width - block_size) / 10.0) * 10.0
    food_y = round(random.randrange(0, display_height - block_size) / 10.0) * 10.0
 
    while not game_exit:
 
        while game_over == True:
            game_display.fill(white)
            message_to_screen(\"游戏结束,按C键重新开始,按Q键退出游戏\", red)
            pygame.display.update()
 
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_exit = True
                        game_over = False
                    if event.key == pygame.K_c:
                        gameLoop()
 
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_exit = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x1_change = -block_size
                    y1_change = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = block_size
                    y1_change = 0
                elif event.key == pygame.K_UP:
                    y1_change = -block_size
                    x1_change = 0
                elif event.key == pygame.K_DOWN:
                    y1_change = block_size
                    x1_change = 0
 
        if x1 >= display_width or x1 < 0 or y1 >= display_height or y1 < 0:
            game_over = True
 
        x1 += x1_change
        y1 += y1_change
 
        game_display.fill(white)
 
        pygame.draw.rect(game_display, red, [food_x, food_y, block_size, block_size])
 
        snake_head = []
        snake_head.append(x1)
        snake_head.append(y1)
        snake_list.append(snake_head)
 
        if len(snake_list) > snake_length:
            del snake_list[0]
 
        for segment in snake_list[:-1]:
            if segment == snake_head:
                game_over = True
 
        snake(block_size, snake_list)
 
        pygame.display.update()
 
        if x1 == food_x and y1 == food_y:
            food_x = round(random.randrange(0, display_width - block_size) / 10.0) * 10.0
            food_y = round(random.randrange(0, display_height - block_size) / 10.0) * 10.0
            snake_length += 1
 
        clock.tick(15)
 
    pygame.quit()
    quit()
 
gameLoop()

代码非常简单易懂,让我们来一一解析一下。

首先,我们导入了必要的库和模块,定义了一些常用的变量和颜色。

import pygame
import time
import random
 
pygame.init()
 
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
green = (0, 155, 0)
 
display_width = 800
display_height = 600
 
game_display = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('贪吃蛇游戏')
 
block_size = 10
clock = pygame.time.Clock()
 
font = pygame.font.SysFont(None, 25)

然后,我们定义了一些函数和游戏逻辑。

def snake(block_size, snake_list):
    for x_y in snake_list:
        pygame.draw.rect(game_display, green, [x_y[0], x_y[1], block_size, block_size])
 
def message_to_screen(msg, color):
    screen_text = font.render(msg, True, color)
    game_display.blit(screen_text, [display_width / 6, display_height / 6])
 
def gameLoop():
    game_exit = False
    game_over = False
 
    x1 = display_width / 2
    y1 = display_height / 2
 
    x1_change = 0
    y1_change = 0
 
    snake_list = []
    snake_length = 1
 
    food_x = round(random.randrange(0, display_width - block_size) / 10.0) * 10.0
    food_y = round(random.randrange(0, display_height - block_size) / 10.0) * 10.0
 
    while not game_exit:
 
        while game_over == True:
            game_display.fill(white)
            message_to_screen(\"游戏结束,按C键重新开始,按Q键退出游戏\", red)
            pygame.display.update()
 
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_exit = True
                        game_over = False
                    if event.key == pygame.K_c:
                        gameLoop()
 
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_exit = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x1_change = -block_size
                    y1_change = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = block_size
                    y1_change = 0
                elif event.key == pygame.K_UP:
                    y1_change = -block_size
                    x1_change = 0
                elif event.key == pygame.K_DOWN:
                    y1_change = block_size
                    x1_change = 0
 
        if x1 >= display_width or x1 < 0 or y1 >= display_height or y1 < 0:
            game_over = True
 
        x1 += x1_change
        y1 += y1_change
 
        game_display.fill(white)
 
        pygame.draw.rect(game_display, red, [food_x, food_y, block_size, block_size])
 
        snake_head = []
        snake_head.append(x1)
        snake_head.append(y1)
        snake_list.append(snake_head)
 
        if len(snake_list) > snake_length:
            del snake_list[0]
 
        for segment in snake_list[:-1]:
            if segment == snake_head:
                game_over = True
 
        snake(block_size, snake_list)
 
        pygame.display.update()
 
        if x1 == food_x and y1 == food_y:
            food_x = round(random.randrange(0, display_width - block_size) / 10.0) * 10.0
            food_y = round(random.randrange(0, display_height - block_size) / 10.0) * 10.0
            snake_length += 1
 
        clock.tick(15)
 
    pygame.quit()
    quit()

最后,我们在主函数中调用游戏循环函数,开始运行游戏。

gameLoop()

运行游戏

现在,我们已经完成了贪吃蛇游戏的编写,让我们来看看它是如何运行的。

首先,我们需要将代码保存为.py文件,例如snake_game.py,并在命令行或终端中运行以下命令:

python snake_game.py

这样,我们就可以打开贪吃蛇游戏了。

在游戏中,我们可以通过方向键来控制蛇的运动方向,吃到食物会增加蛇的长度,如果蛇撞到边界或者自己的身体,游戏就会结束。

总结

贪吃蛇游戏是一个简单而经典的小游戏,适合初学者练习编程。通过这个项目,我们学习了如何使用Python和Pygame库来实现游戏开发的基础知识,包括游戏窗口、游戏循环、游戏元素等。

当然,在这个简单的版本中,还有很多可以拓展和改进的地方,例如添加音效、增加难度等。希望大家能够继续深入学习,探索游戏开发的更多技术,实现更加丰富和有趣的游戏。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如有侵权请联系网站管理员删除,联系邮箱3237157959@qq.com。
0