第078讲: Pygame:初次见面请大家多多关照 | 学习记录(小甲鱼零基础入门学习Python)

版权声明:转载请标明出处: https://blog.csdn.net/qq_38970783/article/details/89056471

从这一节课开始,我们就来讲游戏开发,那么在Python中提到游戏开发,那肯定非 Pygame 莫属了,Pygame 是一个利用 SDL 库实现的模块,我们先来安装Pygame。

打开 CMD,输入 pip install Pygame,回车即可。

C:\Users\Admin>pip install pygame
Collecting pygame
  Using cached https://files.pythonhosted.org/packages/e2/60/2b6c8fcbed5d8817ae43fd36308ed683961002376a7be04b0d65ebce8466/pygame-1.9.4-cp35-cp35m-win_amd64.whl
Installing collected packages: pygame
Successfully installed pygame-1.9.4

打开IDLE,验证安装成功。

>>> import pygame
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
>>> pygame.ver
'1.9.4'

Pygame 作为一个游戏模块,主要具备哪些功能呢?

  • 绘制图形:能够绘制圆形、三角形、菱形、矩形这所有我们想象的到的图形,这跟我们的tkinter一样,能够绘制这些图形。
  • 显示图片:素材就是以图片的形式提供的,需要把它们显示出来。
  • 动画效果。
  • 与键盘、鼠标和游戏手柄等外设交互。
  • 播放声音。
  • 支持碰撞检测。

既然是最后一个章节,现在应该不需要一步一步给大家讲解了,目前最好的学习方法就是直接分析代码,来学习Python。

首先看一下这节课的代码:

import pygame
import sys
 
# 初始化Pygame
pygame.init()
 
size = width, height = 800, 600
speed = [-2, 1]
bg = (255, 255, 255) # RGB 白色
 
# 创建指定大小的窗口 Surface
screen = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption("初次见面,请大家多多关照!")
 
# 加在图片
turtle = pygame.image.load("python.png")
# 获得图像的位置矩形
position = turtle.get_rect()
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
 
    # 移动图像
    position = position.move(speed)
 
    if position.left < 0 or position.right > width:
        # 翻转图像
        turtle = pygame.transform.flip(turtle, True, False)#水平翻转,垂直不翻转
        # 反方向移动
        speed[0] = -speed[0]
 
    if position.top < 0 or position.bottom > height:
        speed[1] = -speed[1]
 
    # 填充背景
    screen.fill(bg)
    # 更新图像
    screen.blit(turtle, position)
    # 更新界面
    pygame.display.flip()
    # 延迟10毫秒
    pygame.time.delay(10)

在这里插入图片描述

运行的效果就是:一只小猪,到处走,撞墙之后自动掉头

我们现在来分析代码,通过代码来学习Pygame。

首先就是 import pygame。import sys 是退出程序要用的。

第一个要执行的就是 init(),初始化 pygame,为什么要初始化呢?因为我们的 pygame 事实上是一个包,一个包里面包含了各种不同功能的模块,init() 就是初始化这些模块,让它们做好准备,随时待命。

下面接下来是一些变量的设置,我们还不管它们,接着往下看。

我们调用 display.set_mode() 创建指定大小的窗口,创建的窗口就是一个 Surface 对象,size 就是上面定义的变量,实际上是一个元组。

然后设置标题。

我们使用 image.load() 加载图片,加载的图片也是一个 Surface对象。

把图片加载进去,我们通过 get_rect() 来获得它的当前矩形位置,赋值给 position

然后我们就进入死循环,在死循环里面,我们移动图像位置。

我们如何停止程序呢?我们就是通过检测是否点击了 X ,如果点击了,就退出,sys.exit()

移动图像就是使用 矩形位置对象的 move() 方法,偏移位置就是 speed,x轴偏移-2,y轴偏移 +1。

下面两个 if 语句 就是检测是否出了边界,通过 矩形位置对象的 left 、right、top、botton 属性来判断是否出界,如果要出界,就反方向走。同时,如果左右出界的话,还要水平翻转一下。

下面填充背景为纯白色(255,255,2550)

blit() 就是将 一个图像画到另一个图像上。

然后就是刷新界面。

最后就是延迟10毫秒,减缓图像移动速度。

这节课到此结束,大家好好分析一下代码,后面会加深难度哦。

猜你喜欢

转载自blog.csdn.net/qq_38970783/article/details/89056471