如何用python和pygame开发一个小游戏-慕课的python游戏开发入门01

学习了慕课的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格式图片,用于游戏元素的生成

由于是这一次写这类的博客,不知道如何写,就写到这里吧!希望对看到的人有用!


 

猜你喜欢

转载自blog.csdn.net/sygoodman/article/details/124345033