学习了慕课的python游戏开发入门,现将主要内容如下:
一、采用pygame开发
二、先给出了一个最小开发框架,并在最小开发框架的基础上逐步填充
(一)最小开发框架
# Unit PYG02: Pygame Hello World Game
import pygame,sys
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pygame游戏之旅")
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
pygame.display.update()
第一部分:引入pygame 和sys
第二部分:初始化及设置
1、对pygame内部模块进行初始化
2、初始化显示窗口
3、设置窗口标题
第三部分:获取事件并逐步响应
第四部分:刷新屏幕
部分代码解释:
import pygame,sys
sys.exit()
其中:
• sys 是Python的标准库
• sys提供Python运行时环境变量的操控
• sys.exit()用于退出结束游戏并退出
pygame.init()
• 对Pygame内部各功能模块进行初始化创建及 变量设置,默认调用
pygame.display.set_mode(size)
• 初始化显示窗口,第一个参数size是一个二 值元组,分别表示窗口的宽度和高度
pygame.display.set_caption(title)
•设置显示窗口的标题内容,参数title是一 个字符串类型
while True:
•无限循环,直到Python运行时退出结束
pygame.event.get()
•从Pygame的事件队列中取出事件,并从队列 中删除该事件,例如:键盘按下是一个事件。
event.type
pygame.QUIT
•获得事件类型,并逐类响应;
•pygame.QUIT 是Pygame中定义的退出事件常量
pygame.display.update()
•对显示窗口进行更新,默认窗口全部重绘
三、根据功能需要进行了代码的扩充,展示进行扩充后的壁球游戏
# Unit PYG02: Pygame Wall Ball Game version 3 操控型
import pygame,sys
pygame.init()
size = width, height = 600, 400
speed = [1,1]
BLACK = 0, 0, 0
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pygame壁球")
ball = pygame.image.load("PYG02-ball.gif")
ballrect = ball.get_rect()
fps = 300
fclock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1)*int(speed[0]/abs(speed[0]))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
elif event.key == pygame.K_DOWN:
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1)*int(speed[1]/abs(speed[1]))
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(BLACK)
screen.blit(ball, ballrect)
pygame.display.update()
fclock.tick(fps)
部分代码解释:
fps = 300 # Frames per Second 每秒帧率参数
fclock = pygame.time.Clock()
#pygame.time.Clock() 创建一个Clock对象,用于操作时间
clock.tick(framerate)
#控制帧速度,即窗口刷新速度,例如: clock.tick(100)表示每秒钟100次帧刷新 视频中每次展示的静态图像称为帧
pygame.image.load(filename)
将filename路径下的图像载入游戏,支持JPG 、 PNG 、GIF(非动画 ) 等13种常用图片格式
ball = pygame.image.load("PYG02 ‐ball.gif")
ballrect = ball.get_rect()
Surface对象 :Pygame使用内部定义的Surface对象表示所有 载入的图像,
Rect对象:其中.get_rect()方法返回一个 覆盖图像的矩形Rect对象
Rect对象 Rect对象有一些重要属性,例如: top,bottom,left,right 表示上下左右 width,height 表示宽度、高度
ballrect.move(x,y)
矩形移动一个偏移量(x,y),即在横轴方向移 动 x像素,纵轴方向移动 y像素,xy为整数
pygame.KEYDOWN
Pygame对键盘敲击的事件定义,键盘每个键对应一个具体定义
pygame.K_UP
pygame.K_LEFT
pygame.K_DOWN
pygame.K_RIGHT
screen.blit(src, dest)
将一个图像绘制在另一个图像上,即将src绘制到dest位置上。通过Rect对象引导对壁球的绘制。
screen.fill(color)
显示窗口背景填充为color颜色,采用RGB色彩体系。由于壁球不断运动,运动后原有位置
将默认填充白色,因此需要不断刷新背景色
小结如下:
1、按最小框架结构搭建建构,引入库、建立主屏幕,建立循环响应事件,刷新屏幕实现输出。
2、根据需要对事件响应进行填充实现游戏功能
3、使用surface对象对游戏内元素进行生成,并用blit绑定到主屏显示输出
4、使用rect对象对游戏元素进行操作
5、event.type接收输入,从而实现鼠标、键盘控制
6、可以Clock对象操作时间,控制刷新频率等操作
7、需要准备大量的PNG格式图片,用于游戏元素的生成
由于是这一次写这类的博客,不知道如何写,就写到这里吧!希望对看到的人有用!