用Python和Pygame写游戏-从入门到精通(1)学习笔记

第一部分主要是实现游戏背景实现和第一游戏窗口。

Pygame有很多的模块,下面是一张一览表:


代码示例:

#-*- coding:utf-8 -*-
#指向背景图和光标图片
background_image_filename = './images/sushiplate.jpg'
mouse_image_filename = './images/fugu.png'
#导入相关模块
import pygame
#导入一些常用函数
from pygame.locals import *
#退出函数
from sys import exit
#初始化pygame
pygame.init()
#创建了一个长为640宽480的窗口来显示游戏界面
screen = pygame.display.set_mode((640, 480), 0, 32)
#设置窗口标题
pygame.display.set_caption("Hello, World!")
#image.load用来加载图片
background = pygame.image.load(background_image_filename).convert()
mouse_cursor = pygame.image.load(mouse_image_filename).convert_alpha()
#游戏主循环
while True:
    #点×退出程序
    for event in pygame.event.get():
        if event.type == QUIT:
            exit()
    #blit将背景图画到窗口上
    screen.blit(background, (0,0))
    #获得鼠标位置
    x, y = pygame.mouse.get_pos()
    #定位光标左上角,开始时光标在窗口中间
    x -= mouse_cursor.get_width() / 2
    y -= mouse_cursor.get_height() / 2
    #把光标画上去
    screen.blit(mouse_cursor, (x, y))
    #刷新画面
    pygame.display.update()

程序用到的背景图和光标图片:


实现:

set_mode会返回一个Surface对象,代表了在桌面上出现的那个窗口,三个参数第一个为元祖,代表分 辨率(必须);第二个是一个标志位,具体意思见下表,如果不用什么特性,就指定0;第三个为色深。


convert函数是将图像数据都转化为Surface对象,每次加载完图像以后就应该做这件事件(事实上因为 它太常用了,如果你不写pygame也会帮你做);convert_alpha相比convert,保留了Alpha 通道信息(可以简单理解为透明的部分),这样我们的光标才可以是不规则的形状。一般只有背景图会使用convert,其他图片如果只使用convert会是一个长方形,在图片不规则形状外全为黑色。可以选择不加convert或者convert_alpha,解决黑框。

游戏的主循环是一个无限循环,直到用户跳出。在这个主循环里做的事情就是不停地画背景和更新光标位置,虽然背景是不动的,我们还是需要每次都画它, 否则鼠标覆盖过的位置就不能恢复正常了。可以理解为一个一直循环播放的图片,就像放动画片一样,一直重复刷新画面。

扫描二维码关注公众号,回复: 1563425 查看本文章

blit是个重要函数,第一个参数为一个Surface对象,第二个为左上角位置。画完以后一定记得用update更新一下,否则画面一片漆黑。

以上内容学习至http://eyehere.net/2011/python-pygame-novice-professional-1/

猜你喜欢

转载自blog.csdn.net/qq_41805514/article/details/80632983