学习 Python 之 Pygame 开发坦克大战(一)

Pygame

什么是Pygame?

Pygame是一组Python用于编写视频游戏的模块。Pygame在优秀的SDL库上添加了功能。可以让我们使用python语言创建功能齐全的游戏和多媒体程序,并且Pygame是高度可移植的,几乎可以在所有平台和操作系统上运行。

初识pygame

官方文档

函数名称 作用 返回值
pygame.display.init() 初始化展示模块 None
pygame.display.set_mode(size = (0, 0)) 初始化窗口(窗口就是一个Surface对象) Surface
pygame.display.set_caption(title, icontitle = None) 设置窗口标题和图标 None
pygame.Surface.fill(color, rect = None) 用纯色填充表面Surface对象 None
pygame.Color(b, g, r) 创建用于颜色表示的Pygame对象 Color
pygame.display.update() 更新屏幕 None
pygame.event.get() 获取事件队列 Eventlist
pygame.image.load(filename) 从文件加载图片(图片跟窗口一样,也是Surface对象) Surface
pygame.Surface.get_rect() 获取Surface对象的rect属性 Rect
pygame.Surface.blit(source, dest, area = None) 在一个Surface对象上显示另一个Surface对象 Rect
pygame.font.init() 初始化字体模块 None
pygame.font.SysFont(name, size, bold = False, italic = False) 从系统字体创建字体对象 Font
pygame.font.render(text, antialias, color, background = None) 创建一个带有指定字体的Surface对象 Surface
pygame.mixer.init() 初始化混合器模块 None
pygame.mixer.Sound(filename) 从文件创建声音对象 Sound
pygame.mixer.Sound.play(loops = 0, maxtime = 0) 播放音乐,loops参数控制播放次数,播放次数为loops + 1次。默认为0,表示声音不会重复,只播放一次。如果loops为-1,声音将无限循环 Channel
pygame.mixer.Sound.stop() 声音停止播放 None
pygame.mixer.Sound.set_volume(value) 设置音量 None

1. 使用pygame创建窗口

import pygame


# 初始化展示模块
pygame.display.init()
# 设置窗口大小
SCREEN_WIDTH = 1100
SCREEN_HEIGHT = 600
size = (SCREEN_WIDTH, SCREEN_HEIGHT)
# 初始化窗口
window = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption('Tank Battle')

创建结果
在这里插入图片描述

2. 设置窗口背景颜色

# 设置窗口背景颜色
blue = 255
green = 0
red = 255
BACKGROUND_COLOR = pygame.Color(blue, green, red)
window.fill(BACKGROUND_COLOR)

# 更新窗口
pygame.display.update()

完整代码

import pygame

# 初始化展示模块
pygame.display.init()
# 设置窗口大小
SCREEN_WIDTH = 1100
SCREEN_HEIGHT = 600
size = (SCREEN_WIDTH, SCREEN_HEIGHT)
# 初始化窗口
window = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption('Tank Battle')

# 设置窗口背景颜色
blue = 255
green = 0
red = 255
BACKGROUND_COLOR = pygame.Color(blue, green, red)
window.fill(BACKGROUND_COLOR)

# 更新窗口
pygame.display.update()

在这里插入图片描述
不要忘记更新窗口,否则不会显示颜色的

3. 获取窗口中的事件

def getWindowEvent():
    for event in pygame.event.get():
        # 点击窗口右上角的关闭触发的事件
        if event.type == pygame.QUIT:
            sys.exit()
        # 鼠标按下事件
        elif event.type == pygame.MOUSEBUTTONDOWN:
            x, y = event.pos
            print('鼠标按下, 鼠标位置({x}, {y})'.format(x = x, y = y))
        # 鼠标抬起事件
        elif event.type == pygame.MOUSEBUTTONUP:
            print('鼠标抬起')
        # 键盘按键按下事件
        elif event.type == pygame.KEYDOWN:
            print('键盘按键按下')
            # 具体键盘事件触发
            if event.key == pygame.K_j:
                print('按下键盘 j 键')
        # 键盘按键抬起事件
        elif event.type == pygame.KEYUP:
            print('键盘按键抬起')

完整代码

import pygame
import sys

def getWindowEvent():
    for event in pygame.event.get():
        # 点击窗口右上角的关闭触发的事件
        if event.type == pygame.QUIT:
            sys.exit()
        # 鼠标按下事件
        elif event.type == pygame.MOUSEBUTTONDOWN:
            x, y = event.pos
            print('鼠标按下, 鼠标位置({x}, {y})'.format(x = x, y = y))
        # 鼠标抬起事件
        elif event.type == pygame.MOUSEBUTTONUP:
            print('鼠标抬起')
        # 键盘按键按下事件
        elif event.type == pygame.KEYDOWN:
            print('键盘按键按下')
            # 具体键盘事件触发
            if event.key == pygame.K_j:
                print('按下键盘 j 键')
        # 键盘按键抬起事件
        elif event.type == pygame.KEYUP:
            print('键盘按键抬起')

# 初始化展示模块
pygame.display.init()
# 设置窗口大小
SCREEN_WIDTH = 1100
SCREEN_HEIGHT = 600
size = (SCREEN_WIDTH, SCREEN_HEIGHT)
# 初始化窗口
window = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption('Tank Battle')

# 设置窗口背景颜色
blue = 255
green = 0
red = 255
BACKGROUND_COLOR = pygame.Color(blue, green, red)
window.fill(BACKGROUND_COLOR)

while 1:
    # 获取键盘事件
    getWindowEvent()

    # 更新窗口
    pygame.display.update()

运行后按下鼠标左键,键盘j键,键盘s键

在这里插入图片描述

系统的事件都具有一组成员属性。下面是事件类型及其特定属性的列表图(图片来源链接
在这里插入图片描述

4. 在窗口中展示图片

(1). pygame中的直角坐标系

在这里插入图片描述

(2). 展示图片

import pygame


# 初始化展示模块
pygame.display.init()
# 设置窗口大小
SCREEN_WIDTH = 1100
SCREEN_HEIGHT = 600
size = (SCREEN_WIDTH, SCREEN_HEIGHT)
# 初始化窗口
window = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption('Tank Battle')

# 设置图片路径
path = './picture.jpg'
# 加载图片
image = pygame.image.load(path)
# 获取直角坐标
rect = image.get_rect()
# 设置图片的位置,在(0,0)处加载图片
rect.left = 0
rect.top = 0
# 在窗口显示
window.blit(image, rect)

# 更新窗口
pygame.display.update()

运行结果(图片太大了,超过了窗口的尺寸)
在这里插入图片描述

(3). 给部分区域设置颜色

import pygame

# 初始化展示模块
pygame.display.init()
# 设置窗口大小
SCREEN_WIDTH = 1100
SCREEN_HEIGHT = 600
size = (SCREEN_WIDTH, SCREEN_HEIGHT)
# 初始化窗口
window = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption('Tank Battle')

# 设置窗口背景颜色
blue = 255
green = 0
red = 255
BACKGROUND_COLOR = pygame.Color(blue, green, red)
window.fill(BACKGROUND_COLOR)

# 给部分区域设置颜色
rect = pygame.Rect(400, 400, 50, 50)
REGION_COLOR = pygame.Color(50, 50, 150)
window.fill(REGION_COLOR, rect)

# 更新窗口
pygame.display.update()

在这里插入图片描述

5. 在窗口中显示文字

import pygame


# 初始化展示模块
pygame.display.init()
# 设置窗口大小
SCREEN_WIDTH = 1100
SCREEN_HEIGHT = 600
size = (SCREEN_WIDTH, SCREEN_HEIGHT)
# 初始化窗口
window = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption('Tank Battle')

# 设置文字内容
text = 'Hello Pygame'

# 初始化字体
pygame.font.init()
# 设置文字字体和大小
fontSize = 16
font = pygame.font.SysFont('georgia', fontSize)
# 加载文字并设置颜色
fontColor = pygame.Color(255, 255, 255)
fontObject = font.render(text, True, fontColor)
# 设置展示位置
position = (50, 50)
# 展示文字
window.blit(fontObject, position)

# 更新窗口
pygame.display.update()

运行结果
在这里插入图片描述

6. 播放音乐

import pygame


# 初始化混合器模块
pygame.mixer.init()
# 加载音乐
sound = pygame.mixer.Sound('./star.wav')
# 播放音乐
sound.play()

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>