python之pygame(一)初识pygame

一、pygame简介

Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发。允许你在 Python 程序中创建功能丰富的游戏和多媒体程序,Pygame 是一个高可移植性的模块可以支持多个操作系统。用它来开发小游戏非常适合。

pip install pygame 下载并安装使用pygame。

二、pygame使用

使用pygame的第一步是将pygame库导入到python程序中,以便来使用它

import pygame

然后需要引入pygame中的所有常量。

from pygame.locals import *

再经过初始化以后我们就可以尽情地使用pygame了。初始化pygame:

pygame.init()

通常来说我们需要先创建一个窗口,方便我们与程序的交互。下面创建了一个600 x 500的窗口

screen = pygame.display.set_mode((600,500))

1.打印字体

pygame支持使用pygame.font将文打印到窗口。要打印文本的话首先需要创建一个文字对象

myfont = pygame.font.Font(None,60)

这个文本绘制进程是一个重量级的进程,比较耗费时间,常用的做法是先在内存中创建文本图像,然后将文本当作一个图像来渲染。

white = 255,255,255
black= 0,0,0
textImage = myfont.render("Hello Pygame", True, white)

textImage 对象可以使用screen.blit()来绘制。上面代码中的render函数第一个参数是文本,第二个参数是抗锯齿字体,第三个参数是一个颜色值(RGB值)。

要绘制本文,通常的过程是清屏,绘制,然后刷新。

screen.fill(black)
screen.blit(textImage, (100,100))
pygame.display.update()

如果此时运行程序的话,会出现一个窗口一闪而过。为了让它长时间的显示,我们需要将它放在一个循环中。

import pygame
from pygame.locals import *

white = 255,255,255
black = 0,0,0

pygame.init()
screen = pygame.display.set_mode((600,500))

myfont = pygame.font.Font(None,60)
textImage = myfont.render("Hello Pygame", True, white)
while True:
    for event in pygame.event.get():
        if event.type in (QUIT, KEYDOWN):
            sys.exit()

    screen.fill(black)
    screen.blit(textImage, (100,100))
    pygame.display.update()

pygame除了打印字体,还有绘制各种常见图形的常见功能。(使用pygame.draw())

2.绘制一个圆形。

使用pygame.draw.circle()方法,该方法需要传递圆的大小,颜色和位置参数。

 color = 255,255,0
 position = 300,250
 radius = 100
 width = 10
 pygame.draw.circle(screen, color, position, radius, width)

3.绘制一个矩形。

为了增添一些乐趣,咱们这次绘制一个可以移动的矩形,而不只是单单的在屏幕中间绘制。

首先,需要设置pos_x, pos_y 两个变量来记录矩形的位置信息,然后在创建一对速度变量(vel_x,vel_y),在while循环内不断的更新矩形的位置。当矩形到达屏幕边缘的时候,将速度变量取反,这样就可以产生碰撞的效果了。

import pygame
from pygame.locals import *
import sys


#初始化pygame
pygame.init()
# 设置屏幕宽高
screen = pygame.display.set_mode((600, 400))
# 设置屏幕标题
pygame.display.set_caption("my first game")

# 设置字体类型及大小
myfont = pygame.font.SysFont('arial', 100)

white = 255, 255, 255
black = 0, 0, 0
# 创建要显示的文字
txtImage = myfont.render("hello world", True, white)
color = 255, 255, 0
speedX = 0.1
xPos = 50
while True:
    # 启动消息队列,获取消息并处理
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()

    screen.fill(black)  # 填充背景
    # screen.blit(txtImage, (100, 100))  #贴上文字
    # pygame.draw.line(screen, color, (0, 0), (100, 100), 3)
    # pygame.draw.circle(screen, color, (100, 100), 30, 1)

    if xPos >= (600 - 50):
        speedX = -speedX
    if xPos <= 0:
        speedX = -speedX

    pygame.draw.rect(screen, color, (xPos, 50, 50, 50), 0)
    pygame.display.update()
    xPos += speedX

4.绘制线条

使用pygame.draw.line()方法,该方法,需要传递起始点和终点,还有线条的颜色和宽度

#绘制线条
color = 255,255,0
width = 8
pygame.draw.line(screen, color, (100,100), (500,400), width)

猜你喜欢

转载自blog.csdn.net/wth_97/article/details/86612448