游戏,也可以3D先从简单的入手吧,先看一下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.overlay | 访问高级视频叠加 |
pygame | 就是我们在学的这个东西了…… |
pygame.rect | 管理矩形区域 |
pygame.sndarray | 操作声音数据 |
pygame.sprite | 操作移动图像 |
pygame.surface | 管理图像和屏幕 |
pygame.surfarray | 管理点阵图像数据 |
pygame.time | 管理时间和帧信息 |
pygame.transform | 缩放和移动图像 |
可以使用一个简单的小代码测试一下。
Python
if pygame.font is None: print "The font module is not available!" exit()
123 | if pygame.font is None: print "The font module is not available!" exit() |
---|
全部测试的源代码,在github上:
现在来试着写一个小程序。
因为截图的原因会跟随鼠标移动的路飞的头像跑到下面去了。大家参看下源代码就很快能明白了,非常直观。
Python
#coding:utf-8 ''' 本测试样例将创建一个窗口,然后显示一张图片, ''' #!/usr/bin/env python background_image_filename = '1.1.jpg' mouse_image_filename = '2.jpg' #制定图像文件名称 import pygame from pygame.locals import * from sys import exit #从sys中使用结束函数 pygame.init() #初始化pygame、 screen = pygame.display.set_mode((1280,800),RESIZABLE,32) #创建一个窗口,并且制定大小。 pygame.display.set_caption("hello, world! ly first game!") #设置窗口标题 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 -= mouse_cursor.get_width()/2 #获取鼠标图像的宽高计算新的xy的值,目的是为了能居中 y -= mouse_cursor.get_height()/2 screen.blit(mouse_cursor,(x,y)) #在新的值画上x,y。以及鼠标的图案。 pygame.display.update() #刷新一下画面
12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | #coding:utf-8'''本测试样例将创建一个窗口,然后显示一张图片,'''#!/usr/bin/env python background_image_filename = '1.1.jpg'mouse_image_filename = '2.jpg'#制定图像文件名称 import pygamefrom pygame.locals import *from sys import exit#从sys中使用结束函数 pygame.init()#初始化pygame、 screen = pygame.display.set_mode((1280,800),RESIZABLE,32)#创建一个窗口,并且制定大小。 pygame.display.set_caption("hello, world! ly first game!")#设置窗口标题 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 -= mouse_cursor.get_width()/2 #获取鼠标图像的宽高计算新的xy的值,目的是为了能居中 y -= mouse_cursor.get_height()/2 screen.blit(mouse_cursor,(x,y)) #在新的值画上x,y。以及鼠标的图案。 pygame.display.update() #刷新一下画面 |
---|
set_mode会返回一个Surface对象,代表了在桌面上出现的那个窗口,三个参数第一个为元祖,代表分 辨率(必须);第二个是一个标志位,具体意思见下表,如果不用什么特性,就指定0;第三个为色深。
标志位 | 功能 |
---|---|
FULLSCREEN | 创建一个全屏窗口 |
DOUBLEBUF | 创建一个“双缓冲”窗口,建议在HWSURFACE或者OPENGL时使用 |
HWSURFACE | 创建一个硬件加速的窗口,必须和FULLSCREEN同时使用 |
OPENGL | 创建一个OPENGL渲染的窗口 |
RESIZABLE | 创建一个可以改变大小的窗口 |
NOFRAME | 创建一个没有边框的窗口 |
convert函数是将图像数据都转化为Surface对象,每次加载完图像以后就应该做这件事件(事实上因为 它太常用了,如果你不写pygame也会帮你做);convert_alpha相比convert,保留了Alpha 通道信息(可以简单理解为透明的部分),这样我们的光标才可以是不规则的形状。
游戏的主循环是一个无限循环,直到用户跳出。在这个主循环里做的事情就是不停地画背景和更新光标位置,虽然背景是不动的,我们还是需要每次都画它, 否则鼠标覆盖过的位置就不能恢复正常了。
blit是个重要函数,第一个参数为一个Surface对象,第二个为左上角位置。画完以后一定记得用update更新一下,否则画面一片漆黑。
原创文章,转载请注明: 转载自URl-team
本文链接地址: pygame-游戏开发学习笔记(二)–模块表与背景图样例。
Related posts:
- pygame-游戏开发学习笔记(三)–event事件捕捉
- pygame-游戏开发学习笔记(四)–pygame.display.set_mode()显示的问题
- pygame-游戏开发学习笔记(五)–pygame.Font,字体与中文以及错误检测的问题
- 学习-用Python和Pygame写游戏-从入门到精通(6)
- pygame-游戏开发学习笔记(七)–pygame.draw,画图。
- pygame-游戏开发学习笔记(八)–pygame.time&&fps 动画制作