python自学 (六)pygame游戏编程

为了能在开学后更好地融入实验室,本人计划用一个月的时间进行python3语言入门,该系列笔记适合已经有一门编程语言基础的朋友参考使用,欢迎同道者前来交流~

使用教材:
1.《python从入门到精通》清华大学出版社;(自带教学视频【二维码形式】)
2.《机器学习》周志华(西瓜书) 清华大学出版社;
3.《python机器学习手册》 [美]Xhris Albon;
4. BiliBili 《和美女老师一起学python》视频。

………………………………

Pygame——游戏编程

pygame是跨平台python模块,专为电子游戏设计,包含图像和声音。

(一)安装Pygame

pygame的网址是www.pygame.org,在网址中有pygame的相关文档。
在cmd中输入下面这行,就安装上pygame了。

pip install pygame

运行结果如图:
在这里插入图片描述
………………………………

(二)Pygame常用模块

pygame做游戏的优点在于不需要考虑过多和底层相关的内容,可以更多地把工作重心放在游戏逻辑里。

pygame有很多和底层相关的模块,如下表所示:

———— pygame 底层工作模块 ————

模块名说明
pygame.cdrom访问光驱
pygame.cursors加载光标
pygame.display访问显示设备
pygame.draw绘制形状、线、点
pygame.event管理事件
pygame.font使用字体
pygame.image加载和存储图片
pygame.joystick使用游戏手柄或者类似的东西
pygame.key读取键盘按键
pygame.mixer声音
pygame.mouse鼠标
pygame.movie播放视频
pygame.music播放音频
pygame.overplay访问高级视频叠加
pygame.rect管理矩形区域
pygame.sndarray操作声音数据
pygame.sprite操作移动图像
pygame.surface管理图像和屏幕
pygame.time管理时间和帧信息
pygame.transform缩放和移动图像

下面使用 Pygame 的 display 模块event模块 创建一个 pygame窗口,代码如下:

# -*- coding:utf-8 -*-

import sys    #导入sys模块
import pygame  #导入pygame 模块

pygame.init()    #初始化 pygame
size= width,height =320,240    #初始化窗口
screen = pygame.display.set_mode(size)    #显示窗口

pygame.quit()   #退出pygame

………………………………

(三)Pygame 的基本使用

下面将引入一个“跳跃的小球”的游戏实例,在实例中总结pygame的基本使用方法。

【实例要求说明】
创建一个游戏窗口,并在窗口内创建一个小球。以一定的速度移动小球,当小球碰到游戏窗口的边缘时,小球弹回,继续移动。

【分步骤实现细解】

①创建一个游戏窗口,宽和高设置为 640 * 480。

# -*- coding:utf-8 -*-

import sys    #导入sys模块
import pygame  #导入pygame 模块

pygame.init()    #初始化 pygame
size= width,height =640,480    #初始化窗口
screen = pygame.display.set_mode(size)    #显示窗口


display模块用于显示窗口,它的常用方法如下:
———— display模块常用方法 ————

方法名功能
pygame.display.init初始化display模块
pygame.display.quit结束display模块
pygame.display.get_init如果display模块已经被初始化,则返回true
pygame.display.set_mode初始化一个准备显示的界面
pygame.display.get_surface获取当前的Surface对象
pygame.display.flip更新整个待显示的Surface对象到屏幕上
pygame.display.update更新部分内容显示到屏幕上,如果没有参数则与flip功能相同

………………………………

②如果执行上述代码,则窗口会一闪而过,因为程序执行后会自动关闭。如果要让窗口一直显示,就要使用一个死循环。

# -*- coding:utf-8 -*-

import sys    #导入sys模块
import pygame  #导入pygame 模块

pygame.init()    #初始化 pygame
size= width,height =640,480    #初始化窗口
screen = pygame.display.set_mode(size)    #显示窗口

#执行死循环,让窗口一直显示
'''while True:
    #检查事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:   #如果单击关闭窗口,则退出
            sys.exit()'''

pygame.quit()   #退出pygame

结果演示:
在这里插入图片描述
………………………………

③在窗口中添加小球(事件)。我们要实现准备好一张小球的图片 ball.png ,然后加载该图片,最后将图片显示在窗口中。
具体代码如下:

# -*- coding:utf-8 -*-

import sys    #导入sys模块
import pygame  #导入pygame 模块

pygame.init()    #初始化 pygame
size= width,height =640,480    #初始化窗口
screen = pygame.display.set_mode(size)    #显示窗口   

color = (0,0,0)#设置颜色

ball = pygame.image.load("E:\\ball.png")
ballrect = ball.get_rect()

#执行死循环,让窗口一直显示
# '''
while True:
    #检查事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:   #如果单击关闭窗口,则退出
            sys.exit()
 
    screen.fill(color)    #填充颜色
    screen.blit(ball, ballrect)   #将图片画到窗口上
    pygame.display.flip()   #更新全部显示

# '''

pygame.quit()   #退出pygame

效果展示: (在这里我用的是一张黑色背景的拉布拉多图片)
在这里插入图片描述………………………………

④让狗子动起来。
1) ball.get_rect方法犯规之ballrect是一个rect对象,该对象有一个move方法可以用于移动矩形。

move(x,y)函数有两个参数,第一个是x轴移动的距离,第二个是y轴移动的距离。窗体左上角的坐标为(0,0)

2) 为了实现让狗子不停移动,将move()函数添加到while循环中。

# -*- coding:utf-8 -*-

import sys    #导入sys模块
import pygame  #导入pygame 模块

pygame.init()    #初始化 pygame
size= width,height =640,480    #初始化窗口
screen = pygame.display.set_mode(size)    #显示窗口   

color = (0,0,0)#设置颜色

ball = pygame.image.load("E:\\ball.png")  #加载图片
ballrect = ball.get_rect()  #获得矩形区域
speed = [5,5]


#执行死循环,让窗口一直显示
# '''
while True:
    #检查事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:   #如果单击关闭窗口,则退出
            sys.exit()
 
    ballrect = ballrect.move(speed)   #移动小球
    screen.fill(color)    #填充颜色
    screen.blit(ball, ballrect)   #将图片画到窗口上
    pygame.display.flip()   #更新全部显示

# '''

pygame.quit()   #退出pygame

这个代码运行后,狗子会从左上角向右下角飞掠而过。
………………………………

⑤添加碰撞检测功能,让狗子来回飞
【当小球与窗体任意一边的边缘发生碰撞时,更改小球的移动方向。】

# -*- coding:utf-8 -*-

import sys    #导入sys模块
import pygame  #导入pygame 模块

pygame.init()    #初始化 pygame
size= width,height =800,800    #初始化窗口
screen = pygame.display.set_mode(size)    #显示窗口   

color = (0,0,0)#设置颜色

ball = pygame.image.load("E:\\ball.png")  #加载图片
ballrect = ball.get_rect()  #获得矩形区域
speed = [5,5]


#执行死循环,让窗口一直显示
# '''
while True:
    #检查事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:   #如果单击关闭窗口,则退出
            sys.exit()
 
    ballrect = ballrect.move(speed)   #移动小球
    #如果碰到左右边缘
    if ballrect.left <0 or ballrect.right >width:
        speed[0] = -speed[0]  #改变方向
    #如果碰到上下边缘
    if ballrect.top < 0 or ballrect.bottom >height:
        speed[1] = -speed[1]

        
    screen.fill(color)    #填充颜色
    screen.blit(ball, ballrect)   #将图片画到窗口上
    pygame.display.flip()   #更新全部显示

# '''

pygame.quit()   #退出pygame

这个时候就已经实现狗子在屏幕中四处乱晃的样子了(太傻了我笑了hhhhhhh):
【效果展示】
在这里插入图片描述
………………………………

⑤如果需要一个“时钟”来控制时间
这个时候就要用到pygame的time模块,使用pygame之前,必须先创建Clock对象的一个实例,然后在while循环中设置多长时间运行一次。
代码如下:

# -*- coding:utf-8 -*-

import sys    #导入sys模块
import pygame  #导入pygame 模块

pygame.init()    #初始化 pygame
size= width,height =800,800    #初始化窗口
screen = pygame.display.set_mode(size)    #显示窗口   

color = (0,0,0)#设置颜色

ball = pygame.image.load("E:\\ball.png")  #加载图片
ballrect = ball.get_rect()  #获得矩形区域
speed = [5,5]
clock = pygame.time.Clock()   #设置时钟


#执行死循环,让窗口一直显示
# '''
while True:
    clock.tick(60)   #每秒执行六十次
    #检查事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:   #如果单击关闭窗口,则退出
            sys.exit()
 
    ballrect = ballrect.move(speed)   #移动小球
    #如果碰到左右边缘
    if ballrect.left <0 or ballrect.right >width:
        speed[0] = -speed[0]  #改变方向
    #如果碰到上下边缘
    if ballrect.top < 0 or ballrect.bottom >height:
        speed[1] = -speed[1]

        
    screen.fill(color)    #填充颜色
    screen.blit(ball, ballrect)   #将图片画到窗口上
    pygame.display.flip()   #更新全部显示

# '''

pygame.quit()   #退出pygame

效果展示:

在这里插入图片描述

【狗子乱飞】实例到这里就演示完毕啦!
………………………………

(四)开发Flappy Bird游戏

【要学习开发完整游戏惹!激动!】

游戏规则简介:
Flappy 是一款鸟类飞行游戏(障碍躲避类),玩家单击屏幕,小鸟就向上飞;否则小鸟下降,以此来躲避障碍(管道),每通过一组管道就得一分。

游戏分析:

  1. 游戏的主体是小鸟和管道,所以建立两个主要的类: Bird类Pineline类
  2. 因为小鸟要上下飞行来躲避管道,所以在Bird类中家里一个控制小鸟上行的方法:birdUpdate();
  3. 如果要让小鸟看起来像是在管道里飞行,也可让管道不断向左移动,视觉上是统一的。因此要在管道类中添加一个 updatePipeline() 方法,实现管道不断向左移动。
  4. 此外还有三个函数:绘制地图,判断小鸟生命状态,获取最后分数。

———— 用到的类名及方法名————

名称使用说明
Bird【类】小鸟类
Pineline【类】管道类
birdUpdate()【小鸟类方法】控制小鸟向上飞行
updatePineline()【管道类方法】控制管道不断向左
createMap()方法——用于绘制地图
checkDead()方法——用户判断小鸟的生命状态
getResult()方法——用于获取最终分数

………………………………

1. 搭建主框架

先创建两个类,具体实现方法可以用pass语句替代,然后创建一个绘制地图的函数createMap() ;最后,在侏罗纪中绘制背景图片。

关键代码如下:

import pygame
import sys
import random

class Bird(object):
    '''小鸟类'''
    def __init__(self):
        '''定义初始化方法'''
        pass

    def birdUpdate(self):
        pass


class Pipeline(object):
    '''定义一个管道类'''
    def __init__(self):
        '''定义初始化方法'''
        pass

    def updatePipeline(self):
        '''水平移动'''
        pass
def createMap():
    '''定义创建地图的方法'''
    screen.fill((255,255,255))  #填充颜色
    screen.blit(background,(0,0))    # 填入到背景
    pygame.display.update()   #更新显示

if __name__ == '__main__':
    '''主程序'''
    pygame.init()                                   #初始化pygame
    size = width, height = 500,493                 #设置窗口
    screen = pygame.display.set_mode(size)          #显示窗口
    clock = pygame.time.Clock()                     #设置时钟
    Pipeline = Pipeline()           #实例化管道类
    Bird = Bird()                   #实例化小鸟类

    while True:
        clock.tick(60)      #每秒执行六十次
        #轮询事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()

        background = pygame.image.load("E:\\background.png")  #加载背景图片
        createMap()       #绘制地图

    pygame.quit()         #退出
       

效果演示(是我自己用画图做的丑图hhhh):

在这里插入图片描述

2. 创建小鸟类

对小鸟类的编辑中应该完成以下几个任务:

  1. 构造函数进行参数初始化;
  2. 定义birdUpdate方法,实现小鸟的跳跃和坠落;
  3. 在主逻辑轮询实践中添加键盘按下事件和鼠标单击事件(按下某个键小鸟高度提升);
  4. 最后,在createMap中显示小鸟的图像。

关键代码如下:

import pygame
import sys
import random

class Bird(object):
    '''小鸟类'''
    def __init__(self):
        '''定义初始化方法'''
        self.birdRect = pygame.Rect(65,50,50,50) #鸟的矩形
        #定义鸟的三种状态列表
        self.birdStatus = [pygame.image.load("E://bao1.png"),
                           pygame.image.load("E://bao2.png"),
                           pygame.image.load("E://bao3.png")]

        self.status = 0  #默认飞行状态
        self.birdX = 120  #鸟所在X轴坐标
        self.birdY = 350  #鸟所在Y轴坐标,即上下飞行高度
        self.jump = False  #默认情况小鸟自动降落
        self.jumpSpeed = 100  #跳跃高度
        self.gravity = 2    #重力
        self.dead = False   #默认小鸟状态为活着

    def birdUpdate(self):
        if self.jump:
            #小鸟跳跃
            self.jumpSpeed -=1   #速度递减,上升越来越慢
            self.birdY -= self.jumpSpeed  #鸟Y轴坐标减小,小鸟上升
        else:
            #小鸟坠落
            self.gravity += 0.0   #重力递增,下降越来越快
            self.birdY += self.gravity   #鸟Y轴坐标增加,小鸟下降
        self.birdRect[1] = self.birdY   #更改Y轴位置
        
   

class Pipeline(object):
    '''定义一个管道类'''
    def __init__(self):
        '''定义初始化方法'''
        pass

    def updatePipeline(self):
        '''水平移动'''
        pass
    
def createMap():
    '''定义创建地图的方法'''
    screen.fill((255,255,255))  #填充颜色
    screen.blit(background,(0,0))    # 填入到背景

    #显示小鸟
    if Bird.dead:
        Bird.status = 2   #撞到管道的状态
    elif Bird.jump:
        Bird.status = 1  #起飞状态
    screen.blit(Bird.birdStatus[Bird.status],(Bird.birdX,Bird.birdY)) #设置小鸟的坐标
    Bird.birdUpdate()  #鸟移动    
    pygame.display.update()   #更新显示

if __name__ == '__main__':
    '''主程序'''
    pygame.init()                                   #初始化pygame
    size = width, height = 400,720                #设置窗口
    screen = pygame.display.set_mode(size)          #显示窗口
    clock = pygame.time.Clock()                     #设置时钟
    Pipeline = Pipeline()           #实例化管道类
    Bird = Bird()                   #实例化小鸟类

    while True:
        clock.tick(60)      #每秒执行六十次
        #轮询事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            if (event.type == pygame.KEYDOWN)and not Bird.dead:
                Bird.jump = True  #跳跃
                Bird.gravity = 5
                Bird.jumpSpeed = 10

        background = pygame.image.load("E:\\background.png")  #加载背景图片
        createMap()       #绘制地图

    pygame.quit()         #退出
        

效果展示:
(我有很努力地截gif了)
在这里插入图片描述

3. 创建管道类

对管道类的编辑中应该完成以下几个任务:

  1. 管道类构造函数对参数进行初始化;
  2. 在updatePipeline方法中,定义管道向左移动的速度;且当管道移出屏幕时,会出现下一组管道;
  3. 最后,在createMap()函数中显示管道。

关键代码如下:

import pygame
import sys
import random

class Bird(object):
    '''小鸟类'''
    def __init__(self):
        '''定义初始化方法'''
        self.birdRect = pygame.Rect(65,50,50,50) #鸟的矩形
        #定义鸟的三种状态列表
        self.birdStatus = [pygame.image.load("E://bao1.png"),
                           pygame.image.load("E://bao2.png"),
                           pygame.image.load("E://bao3.png")]

        self.status = 0  #默认飞行状态
        self.birdX = 120  #鸟所在X轴坐标
        self.birdY = 350  #鸟所在Y轴坐标,即上下飞行高度
        self.jump = False  #默认情况小鸟自动降落
        self.jumpSpeed = 100  #跳跃高度
        self.gravity = 2    #重力
        self.dead = False   #默认小鸟状态为活着

    def birdUpdate(self):
        if self.jump:
            #小鸟跳跃
            self.jumpSpeed -=1   #速度递减,上升越来越慢
            self.birdY -= self.jumpSpeed  #鸟Y轴坐标减小,小鸟上升
        else:
            #小鸟坠落
            self.gravity += 0.0   #重力递增,下降越来越快
            self.birdY += self.gravity   #鸟Y轴坐标增加,小鸟下降
        self.birdRect[1] = self.birdY   #更改Y轴位置
        
   

class Pipeline(object):
    '''定义一个管道类'''
    def __init__(self):
        '''定义初始化方法'''
        self.wallx = 400    #管道所在的X坐标
        self.pineUp = pygame.image.load("E://pinedown.png")  #加载上管道图片
        self.pineDown = pygame.image.load("E://pine.png")  #加载下管道图片
        


    def updatePipeline(self):
        '''水平移动'''
        self.wallx -=5   #管道X轴坐标递减,即管道向左移动
        if self.wallx <  -80:    #管道运行到一定位置,小鸟飞跃管道,分数加一
            self.wallx = 400
    
def createMap():
    '''定义创建地图的方法'''
    screen.fill((255,255,255))  #填充颜色
    screen.blit(background,(0,0))    # 填入到背景

    #显示管道
    screen.blit(Pipeline.pineUp,(Pipeline.wallx,0))   #上管道坐标位置
    screen.blit(Pipeline.pineDown,(Pipeline.wallx,350))  #下管道坐标位置
    Pipeline.updatePipeline()  #管道移动

    #显示小鸟
    if Bird.dead:
        Bird.status = 2   #撞到管道的状态
    elif Bird.jump:
        Bird.status = 1  #起飞状态
    screen.blit(Bird.birdStatus[Bird.status],(Bird.birdX,Bird.birdY)) #设置小鸟的坐标
    Bird.birdUpdate()  #鸟移动    
    pygame.display.update()   #更新显示

if __name__ == '__main__':
    '''主程序'''
    pygame.init()                                   #初始化pygame
    size = width, height = 900,550               #设置窗口
    screen = pygame.display.set_mode(size)          #显示窗口
    clock = pygame.time.Clock()                     #设置时钟
    Pipeline = Pipeline()           #实例化管道类
    Bird = Bird()                   #实例化小鸟类

    while True:
        clock.tick(60)      #每秒执行六十次
        #轮询事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            if (event.type == pygame.KEYDOWN)and not Bird.dead:
                Bird.jump = True  #跳跃
                Bird.gravity = 5
                Bird.jumpSpeed = 10

        background = pygame.image.load("E:\\background.png")  #加载背景图片
        createMap()       #绘制地图

    pygame.quit()         #退出
        

展现效果演示:(中间的是我家狗子,管道依然是我自己在画图里画的【注意尺寸】)
在这里插入图片描述

拟解决问题:
①两个管道用不同速度出现;
②同一界面多管道;
③管道长度随机。

4.计算得分和碰撞检测

在这一部分需要满足的功能有以下几点:

  1. 狗子与管道相撞,狗子变成灰色,游戏结束并显示分数。
  2. 在 checkDead()函数中通过pygame.Rect()可以分别获取狗子的矩形区域对象和管道的矩形区域对象,该对象有一个coliderect()方法可以判断两个矩形区域是否相撞。
  3. 如果相撞,设置Bird.dead属性为True。此外,如果小鸟飞出窗体,该属性也为true
  4. 最后用两行文字显示总成绩。

关键代码:

import pygame
import sys
import random

class Bird(object):
    '''小鸟类'''
    def __init__(self):
        '''定义初始化方法'''
        self.birdRect = pygame.Rect(65,50,50,50) #鸟的矩形
        #定义鸟的三种状态列表
        self.birdStatus = [pygame.image.load("E://bao1.png"),
                           pygame.image.load("E://bao2.png"),
                           pygame.image.load("E://bao3.png")]

        self.status = 0  #默认飞行状态
        self.birdX = 120  #鸟所在X轴坐标
        self.birdY = 350  #鸟所在Y轴坐标,即上下飞行高度
        self.jump = False  #默认情况小鸟自动降落
        self.jumpSpeed = 100  #跳跃高度
        self.gravity = 2    #重力
        self.dead = False   #默认小鸟状态为活着

    def birdUpdate(self):
        if self.jump:
            #小鸟跳跃
            self.jumpSpeed -=1   #速度递减,上升越来越慢
            self.birdY -= self.jumpSpeed  #鸟Y轴坐标减小,小鸟上升
        else:
            #小鸟坠落
            self.gravity += 0.0   #重力递增,下降越来越快
            self.birdY += self.gravity   #鸟Y轴坐标增加,小鸟下降
        self.birdRect[1] = self.birdY   #更改Y轴位置
        
   

class Pipeline(object):
    '''定义一个管道类'''
    def __init__(self):
        '''定义初始化方法'''
        self.wallx = 400    #管道所在的X坐标
        self.pineUp = pygame.image.load("E://pinedown.png")  #加载上管道图片
        self.pineDown = pygame.image.load("E://pine.png")  #加载下管道图片
        


    def updatePipeline(self):
        '''水平移动'''
        self.wallx -=5   #管道X轴坐标递减,即管道向左移动
        if self.wallx <  -80:    #管道运行到一定位置,小鸟飞跃管道,分数加一
            global score
            score += 1
            self.wallx = 400
    
def createMap():
    '''定义创建地图的方法'''
    screen.fill((255,255,255))  #填充颜色
    screen.blit(background,(0,0))    # 填入到背景

    #显示管道
    screen.blit(Pipeline.pineUp,(Pipeline.wallx,0))   #上管道坐标位置
    screen.blit(Pipeline.pineDown,(Pipeline.wallx,350))  #下管道坐标位置
    Pipeline.updatePipeline()  #管道移动

    #显示小鸟
    if Bird.dead:
        Bird.status = 2   #撞到管道的状态
    elif Bird.jump:
        Bird.status = 1  #起飞状态
    screen.blit(Bird.birdStatus[Bird.status],(Bird.birdX,Bird.birdY)) #设置小鸟的坐标
    Bird.birdUpdate()  #鸟移动

    #显示分数
    screen.blit(font.render(str(score),3,(255,255,255)),(200,50)) #设置颜色及位置坐标
    pygame.display.update()   #更新显示

def checkDead():
    #上方管子的矩形位置
    upRect = pygame.Rect(Pipeline.wallx,500,Pipeline.pineDown.get_width()-10,Pipeline.pineDown.get_height())

    #检测小鸟是否与上下方管子碰撞
    if upRect.colliderect(Bird.birdRect):
        Bird.dead = True

    #检测小鸟是否飞出上下边界
    if not 0 < Bird.birdRect[1] < height:
        Bird.dead = True
        return True
    else:
        return False

def getResult():
    final_text1 = "Game Over"
    final_text2 = "Your final score is: " + str(score)
    ft1_font = pygame.font.SysFont("Arial",70)
    ft1_surf = font.render(final_text1,1,(242,3,36))
    
    ft2_font = pygame.font.SysFont("Arial",50)
    ft2_surf = font.render(final_text2,1,(253,177,6))

    #设置第一行文字显示位置
    screen.blit(ft1_surf,[screen.get_width()/2 - ft1_surf.get_width()/2,100])

    #设置第二行文字显示位置
    screen.blit(ft2_surf,[screen.get_width()/2 - ft2_surf.get_width()/2,200])
    pygame.display.flip()

if __name__ == '__main__':
    '''主程序'''
    pygame.init()                                   #初始化pygame
    pygame.font.init()  #初始化字体
    font = pygame.font.SysFont(None,50)  #设置默认字体和大小
    size = width, height = 900,550               #设置窗口
    screen = pygame.display.set_mode(size)          #显示窗口
    clock = pygame.time.Clock()                     #设置时钟
    Pipeline = Pipeline()           #实例化管道类
    Bird = Bird()                   #实例化小鸟类
    score = 0

    while True:
        clock.tick(60)      #每秒执行六十次
        #轮询事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            if (event.type == pygame.KEYDOWN)and not Bird.dead:
                Bird.jump = True  #跳跃
                Bird.gravity = 5
                Bird.jumpSpeed = 10

        background = pygame.image.load("E:\\background.png")  #加载背景图片
        if checkDead():
            getResult()
        else:
            createMap()       #绘制地图

    pygame.quit()         #退出
       

效果展示:
在这里插入图片描述

在这里插入图片描述

———— pygame游戏编程部分入门完成!————

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值