原作者:xishui

学程序一开始我们总会写一个Hello world程序,但那只是在屏幕上写了两个字,现在我们来点更帅的!写好以后会是这样的效果:

pygame入门第一个游戏作品

源码:

#!/usr/bin/env python
#指定图像文件名称
background_image_filename = './img/Spaceship.png'
mouse_image_filename = './img/star.png'
#导入pygame库
import pygame
#导入一些常用的函数和常量
from pygame.locals import *
#向sys模块借一个exit函数用来退出程序
from sys import exit

#初始化pygame,为使用硬件做准备
pygame.init()

 #创建了一个窗口
screen = pygame.display.set_mode((960, 720), 0, 32)
#设置窗口标题
pygame.display.set_caption("Hello, World!")
#加载并转换图像
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()
     #将背景图画上去
    screen.blit(background, (0,0))
   #获得鼠标位置
    x, y = pygame.mouse.get_pos()
    #计算光标的左上角位置,坐标需要整数
    x-= int(mouse_cursor.get_width() / 2)
    y-= int(mouse_cursor.get_height() / 2)
    #把光标画上去
    screen.blit(mouse_cursor, (x, y))
   #刷新一下画面
    pygame.display.update()

这个程序需要两张图片,一张图作为界面的背景,另一张作为跟随鼠标的小图标。为了达到最佳效果,背景图片的分辨率要跟创建窗口的大小一致:

screen = pygame.display.set_mode((960, 720), 0, 32)#960x720是背景图的分辨率。

set_mode方法等下会详细介绍;而且图片需要要有Alpha通道,否则可能会报如下错误,那么你需要换张图。

pygame入门第一个游戏作品

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

pygame入门第一个游戏作品

convert函数是将图像数据都转化为Surface对象,每次加载完图像以后就应该做这件事件(事实上因为 它太常用了,如果你不写pygame也会帮你做);convert_alpha相比convert,保留了Alpha 通道信息(可以简单理解为透明的部分),这样我们的光标才可以是不规则的形状。

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

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

这是一个最最大概的Pygame程序的印象,接下来我们会学习更多深层次的东西,并且把各条语句都真正读懂。


本站内容未经许可,禁止任何网站及个人进行转载。