使用python pygame库写基础“贪吃蛇游戏”

这篇博客介绍了如何使用Python的pygame库制作一个简单的贪吃蛇游戏。作者详细注释了代码,包括食物和蛇的类定义,游戏设置,响应处理以及运行机制。游戏包含食物初始化、蛇的移动和绘制等功能。文章提到了该基础版本可以进一步扩展,如增加高分显示、墙壁、背景图片、声音效果等。
摘要由CSDN通过智能技术生成

笔者参考《Python编程从入门到实践》、开源代码等资源,写了一个简单的贪吃蛇游戏。

最初学习pygame库的时候遇到的难点笔者也深有体会,所以为了方便新手学习理解,特地将注释写的非常详细。因此不再进行多余讲解。阅读需要一定pygame库基础知识。阅读代码不理解时请及时查阅pygame官方英文文档,会有详细介绍。

游戏由下图几部分组成:



因为工程量较小,笔者使用IDLE开发,整个游戏由这6个文件组成。双击run_game文件运行游戏。


    food文件包含食物类,包含图片初始化、置于随机位置、获得食物坐标、获得外接矩形、绘制食物功能。
    snake文件包含蛇类、初始化蛇头、获得各点位置列表、移动蛇、吃掉食物、绘制蛇功能。
    settings文件包含设置类、修改速度、窗口大小、背景颜色功能,便于修改设置。
    response文件包含响应鼠标键盘事件、修改移动方向、控制蛇移动功能。

    run_game文件为运行文件,协调各文件。功能详见代码。

    apple2为图片,用于加载食物。

以下是具体代码:

food文件:

import pygame
import random


class Food:
    """食物类"""
    
    def __init__(self,screen):
        """随机初始化第一个食物的位置"""


        self.screen = screen
 
        #加载食物图片并获取外接矩形 (pygame通过外接矩阵操作图片)
        self.image = pygame.image.load('apple2.png')


        #获得图片外接矩阵
        self.rect = self.image.get_rect()
               
        #随机获得图片中心横纵坐标
        #(randint获得10~490的int类型随机数,包括10和490)
        #(rect.centerx为中心横坐标)
        self.rect.centerx = random.randint(20,480)   
        self.rect.centery = random.randint(20,480)
        
    def reinit(self):
        """ 随机获得一个食物,并返回食物坐标"""


        self.rect.centerx = random.randint(20,480)
        self.rect.centery = random.randint(20,480)
        return [self.rect.centerx,self.rect.centery]
    def position(self):
        """ 返回食物坐标"""
        
        return [self.rect.centerx,self.rect.centery]


    def foodrect(self):
        """返回外接矩矩形"""
        
        return self.rect
        
    def blitme(self):
        """在指定位置绘制食物"""
        
        self.screen.blit(self.image,self.rect)
response文件:
import pygame


#初始化移动状态,使一开始向上移动
move_u
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值