pygame入门(千字详细版)

千字赘述,万字总结,就为博客点一赞吧!

1.安装pygame

pip install pygame

安装完成后在python中输入检验有没有问题,回车键应该不会报错。

>>>import pygame
>>>

2.pygame模块预览

9225cfbf6031407d862fb33927f814d0.png

 

3.项目实战

3.1.0 hello world

 

3.1 初始化Pygame


初始化是使用Pygame库的第一步。在编写任何Pygame程序之前,必须首先初始化Pygame模块。这可以通过调用pygame.init()函数来实现。初始化过程会准备Pygame所需的所有子系统,如显示、事件和音频。

import pygame

pygame.init()


初始化后,可以创建游戏窗口并开始使用Pygame的各种功能。初始化Pygame是一个简单的过程,但它是创建任何Pygame应用程序的基础。

3.2 事件处理
事件处理是Pygame中的核心概念之一。Pygame通过事件队列管理用户的输入,如键盘按键、鼠标点击等。事件是一个包含有关用户操作信息的对象,可以通过pygame.event.get()函数获取。

for event in pygame.event.get():
    if event.type == pygame.QUIT:
        pygame.quit()
        sys.exit()



在上面的代码示例中,我们检查事件队列中的每个事件。如果事件类型是QUIT,这意味着用户想要关闭窗口,我们调用pygame.quit()来退出Pygame并调用sys.exit()来结束程序。

事件处理是响应用户输入的关键,它允许游戏根据玩家的操作做出反应。通过事件处理,开发者可以控制游戏流程,实现各种交互功能。

3.3 创建窗口


在Pygame中,创建窗口是开始游戏开发的基本步骤之一。使用pygame.display.set_mode()函数可以创建一个窗口,该函数接受一个元组作为参数,指定窗口的宽度和高度。

width, height = 800, 600
screen = pygame.display.set_mode((width, height))


创建窗口后,可以使用pygame.display.set_caption()函数为窗口设置标题。

 

pygame.display.set_caption('My Pygame Game')


窗口是游戏的画布,所有的图形绘制和显示都将在这个窗口中进行。

3.4 图形绘制
Pygame提供了丰富的图形绘制功能,允许开发者在窗口中绘制各种形状和图像。基本的绘图函数包括pygame.draw.line()、pygame.draw.circle()、pygame.draw.rect()等。

# 绘制一个红色矩形
color = (255, 0, 0)
rect = (50, 50, 100, 100)
pygame.draw.rect(screen, color, rect)


在绘制图形时,可以选择颜色和形状,以及它们的尺寸和位置。绘制的图形将显示在游戏窗口中,为游戏添加视觉效果。

3.5 动画和帧率控制
在游戏开发中,动画是创建动态效果的关键。Pygame通过控制帧率来实现动画效果。帧率是指每秒钟刷新屏幕的次数,通过pygame.time.Clock()可以创建一个时钟对象来控制帧率。

clock = pygame.time.Clock()
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.fill((0, 0, 0))  # 清屏
    # 绘制动画
    # ...

    pygame.display.flip()  # 更新屏幕显示
    clock.tick(60)  # 设置帧率为60



在上面的代码中,clock.tick(60)确保游戏以每秒60帧的速度运行,这为动画提供了平滑的效果。

3.6 音频处理
Pygame还支持音频处理,可以在游戏中添加背景音乐和音效。使用pygame.mixer.init()初始化音频模块,然后加载音频文件并播放。

pygame.mixer.init()
sound = pygame.mixer.Sound('explosion.wav')
sound.play()



音频处理为游戏增加了听觉效果,提高了游戏的沉浸感。

3.7 游戏循环
游戏循环是游戏程序的核心,它控制着游戏的流程。游戏循环通常包括事件处理、游戏状态更新、图形绘制和屏幕刷新。

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 更新游戏状态
    # ...

    # 清屏
    screen.fill((0, 0, 0))

    # 绘制图形
    # ...

    # 更新屏幕显示
    pygame.display.flip()

    clock.tick(60)



游戏循环确保游戏持续运行,直到用户选择退出。

3.8 资源管理
在游戏开发中,管理游戏资源如图像、音频和字体是必要的。Pygame提供了加载和使用这些资源的功能。

image = pygame.image.load('background.png')
font = pygame.font.Font(None, 36)
text = font.render('Hello Pygame', True, (255, 255, 255))


资源管理确保游戏能够有效地使用内存和存储,提高游戏的性能。

通过上述概念的介绍,新手可以对Pygame有一个基本的了解,并开始尝试开发自己的游戏。在实际开发中,还可以探索更多高级功能,如碰撞检测、物理引擎集成等,以丰富游戏的玩法和体验。

4. 创建游戏窗口
创建游戏窗口是使用 Pygame 进行游戏开发的基础步骤。在这个环节,你将学习如何初始化 Pygame 库,并创建一个具有指定大小和标题的游戏窗口。

4.1 设置窗口大小和标题
在 Pygame 中,设置窗口大小和标题是一个简单的过程。首先,你需要导入 Pygame 模块,并初始化它。之后,使用 pygame.display.set_mode() 函数来设置窗口的宽度和高度,使用 pygame.display.set_caption() 函数来设置窗口的标题。

以下是创建游戏窗口的基本代码示例:

import pygame

# 初始化 Pygame
pygame.init()

# 设置窗口的宽度和高度
width, height = 800, 600

# 创建窗口对象
window = pygame.display.set_mode((width, height))

# 设置窗口标题
pygame.display.set_caption('我的 Pygame 游戏')

# 游戏主循环
running = True
while running:
    # 事件处理
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

# 退出 Pygame
pygame.quit()



5.1 绘制基本图形
在Pygame中,绘制基本图形是游戏开发的基础。通过这些图形,开发者可以构建游戏的视觉元素,如角色、障碍物和背景等。以下是一些基本图形的绘制方法:

线条:使用pygame.draw.line(screen, color, start_pos, end_pos, width)来绘制线条,其中screen是窗口的Surface对象,color是颜色,start_pos和end_pos是线的起点和终点坐标,width是线宽。

矩形:使用pygame.draw.rect(screen, color, rect, width)来绘制矩形,其中rect是一个矩形区域的坐标,可以是(left, top, width, height)或Rect对象,width是边框宽度,如果为0则填充整个矩形。

圆形:使用pygame.draw.circle(screen, color, center, radius, width)来绘制圆形,其中center是圆心坐标,radius是半径,width是圆边宽度。

多边形:使用pygame.draw.polygon(screen, color, points, width)来绘制多边形,其中points是一个点的列表,每个点是一个坐标元组,width是多边形边的宽度。

弧形:使用pygame.draw.arc(screen, color, rect, start_angle, stop_angle, width)来绘制弧形,其中rect是弧形所在矩形的坐标,start_angle和stop_angle是弧形的起始和结束角度,以弧度为单位。

示例代码:

import pygame
import sys

pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption('Animation Example')

# 定义颜色
WHITE = (255, 255, 255)

# 初始化时钟
clock = pygame.time.Clock()

# 初始化球的位置和速度
ball_pos = [350, 300]
ball_speed = [2, 2]

# 游戏主循环
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    # 更新球的位置
    ball_pos[0] += ball_speed[0]
    ball_pos[1] += ball_speed[1]
    
    # 检查球是否撞到边界
    if ball_pos[0] <= 0 or ball_pos[0] >= 800:
        ball_speed[0] = -ball_speed[0]
    if ball_pos[1] <= 0 or ball_pos[1] >= 600:
        ball_speed[1] = -ball_speed[1]
    
    # 清除屏幕
    screen.fill((0, 0, 0))
    
    # 绘制球
    pygame.draw.circle(screen, WHITE, ball_pos, 50)
    
    # 更新屏幕显示
    pygame.display.flip()
    
    # 控制帧率
    clock.tick(60)

pygame.quit()
sys.exit()

效果

476395329dd74605a3b18d3453f4125c.gif 

 

4.项目实战

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import pygame
from pygame.locals import *
from sys import exit

background_image = 'image/sushiplate.jpg'
mouse_image = 'image/fugu.png'

# 初始化pygame,为使用硬件做准备
pygame.init()
# 创建了一个窗口
screen = pygame.display.set_mode((640, 480), 0, 32)
# 设置窗口标题
pygame.display.set_caption("hello world")

# 加载并转换图像
background = pygame.image.load(background_image).convert()
mouse_cursor = pygame.image.load(mouse_image).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
    y -= mouse_cursor.get_height()/2
    # 画上光标
    screen.blit(mouse_cursor, (x, y))

    # 刷新画面
    pygame.display.update()

91388458c6214c79ac9e565daa02a845.png

 

pygame.mouse的函数:

  • pygame.mouse.get_pressed —— 返回按键按下情况,返回的是一元组,分别为(左键, 中键, 右键),如按下则为True

  • pygame.mouse.get_rel —— 返回相对偏移量,(x方向, y方向)的一元组

  • pygame.mouse.get_pos —— 返回当前鼠标位置(x, y)

  • pygame.mouse.set_pos —— 设置鼠标位置

  • pygame.mouse.set_visible —— 设置鼠标光标是否可见

  • pygame.mouse.get_focused —— 检查窗口是否接受鼠标事件,即鼠标是否focus到窗口

  • pygame.mouse.set_cursor —— 设置鼠标光标式样

  • pyGame.mouse.get_cursor ——得到鼠标图片

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值