pygame零基础入门

一、初始pygame

1.游戏框架搭建

  • pygame游戏框架搭建大体分为四个步骤,如下图所示:

在这里插入图片描述
参考代码:

# 导入pygame
import pygame

# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((480, 700))  # 宽:480,高:700
# 游戏退出
pygame.quit()

2.添加循环

以上代码执行后,游戏窗口闪一下就关闭了。我们需要在窗口下方添加一个无限循环,让窗口一直显示。

# 导入pygame
import pygame

# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((480, 700))  # 宽:640,高:700

# 添加无限循环,让窗口一直显示
while True:
    pass

# 游戏退出
pygame.quit()

3.监听事件

以上代码执行后,窗口可以一直显示,但无法关闭。所以我们需要监听事件消息,例如关闭窗口事件,按下键盘事件等等。

# 导入pygame
import pygame

# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((480, 700))  # 宽:640,高:700

#循环
while True:
    # 监听所有事件
    for event in pygame.event.get():
        # 点击❌号关闭,退出游戏
        if event.type == pygame.QUIT:
            #游戏退出
            pygame.quit()

4.最终代码

基本设置完成后,我们可以设置窗口标题,更改背景颜色等等

# 导入pygame
import pygame

# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((480, 700))  # 宽:640,高:700
# 窗口标题
pygame.display.set_caption('原神')
# 自定义颜色
bg_color1 = (255,0,0)
# 游戏窗口背景颜色
screen.fill(bg_color1)


#循环
while True:
    # 监听所有事件
    for event in pygame.event.get():
        # 点击❌号关闭,退出游戏
        if event.type == pygame.QUIT:
            #游戏退出
            pygame.quit()

以上代码结束后,颜色无法更改,我们需要加一行代码pygame.display.flip,去刷新屏幕。代码如下:

# 导入pygame
import pygame

# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((480, 700))  # 宽:640,高:700
# 窗口标题
pygame.display.set_caption('原神')
# 自定义颜色
bg_color1 = (255,0,0)
# 游戏窗口背景颜色
screen.fill(bg_color1)


#循环
while True:
    # 监听所有事件
    for event in pygame.event.get():
        # 点击❌号关闭,退出游戏
        if event.type == pygame.QUIT:
            #游戏退出
            pygame.quit()
    # 刷新屏幕
	pygame.display.flip()

二、Pygame进阶

1.游戏窗口坐标系

在这里插入图片描述

2.画圆

# 导入pygame
import pygame

# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((480, 700))  # 宽:640,高:700
# 窗口标题
pygame.display.set_caption('原神')
# 自定义颜色
bg_color1 = (255,0,0)
# 游戏窗口背景颜色
screen.fill(bg_color1)
# 绘制一个蓝色实心的圆形,其中[60,250]表示圆心的位置,40为半径,width默认为0
pygame.draw.circle(screen, (0, 0, 255), [60, 250], 40,0)

#循环
while True:
    # 监听所有事件
    for event in pygame.event.get():
        # 点击❌号关闭,退出游戏
        if event.type == pygame.QUIT:
            #游戏退出
            pygame.quit()
    # 刷新屏幕
    pygame.display.flip()

3.插入图片

在这里插入图片描述

# 导入pygame
import pygame

# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((480, 700))  # 宽:640,高:700
# 窗口标题
pygame.display.set_caption('原神')

ball = pygame.image.load("ball.jpg")  # 加载图片
WHITE = (255, 255, 255) #白色



#循环
while True:
    # 监听所有事件
    for event in pygame.event.get():
        # 点击❌号关闭,退出游戏
        if event.type == pygame.QUIT:
            #游戏退出
            pygame.quit()

    screen.fill(WHITE) #重新背景颜色为白色
    screen.blit(ball,(0,0))# 在原点位置放置图片
    pygame.display.update()# 刷新屏幕

4.让图片移动

# 导入pygame
import pygame
import time
# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((480, 700))  # 宽:640,高:700

ball = pygame.image.load("ball.jpg")  # 加载图片
RED = (255, 0, 0) # 红色

ballrect = ball.get_rect() #获取矩形的区域
speed = [5,5] #偏移量

#循环
while True:
    # 监听所有事件
    for event in pygame.event.get():
        # 点击❌号关闭,退出游戏
        if event.type == pygame.QUIT:
            #游戏退出
            pygame.quit()
    ballrect = ballrect.move(speed) #让图片移动
    screen.fill(RED)  # 背景颜色为红色
    screen.blit(ball, ballrect)# 将图片画到窗口
    pygame.display.flip()# 刷新屏幕
    time.sleep(0.1) #间接控制图片移动速度,越短越快

5.碰撞反弹

# 导入pygame
import pygame
import time
# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((480, 700))  # 宽:640,高:700

ball = pygame.image.load("ball.jpg")  # 加载图片
RED = (255, 0, 0) # 红色

ballrect = ball.get_rect() #获取矩形的区域
speed = [5,5] #偏移量

#循环
while True:
    # 监听所有事件
    for event in pygame.event.get():
        # 点击❌号关闭,退出游戏
        if event.type == pygame.QUIT:
            #游戏退出
            pygame.quit()

    # 碰到左右边缘反弹
    if ballrect.left < 0 or ballrect.right > 480:
        speed[0] = - speed[0]
    # 碰到上下边缘反弹
    if ballrect.top < 0 or ballrect.bottom > 700:
        speed[1] = - speed[1]

    ballrect = ballrect.move(speed) #让图片移动
    screen.fill(RED)  # 背景颜色为红色
    screen.blit(ball, ballrect)# 将图片画到窗口
    pygame.display.flip()# 刷新屏幕
    time.sleep(0.1) #间接控制图片移动速度,越短越快

三、Pygame进阶(一)

1.绘制矩形

在这里插入图片描述

# 导入pygame
import pygame
import time
# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((480, 700))  # 宽:640,高:700

RED = (255, 0, 0) # 红色

#循环
while True:
    # 监听所有事件
    for event in pygame.event.get():
        # 点击❌号关闭,退出游戏
        if event.type == pygame.QUIT:
            #游戏退出
            pygame.quit()

    pygame.draw.rect(screen,RED,(50,50,150,50),0) #绘制矩形,第三个参数为矩形的范围:(left,top,width,height),最后一个参数,0表示填充矩形
    pygame.draw.rect(screen, RED, (250, 50, 150, 50), 1)
    pygame.draw.rect(screen, RED, (50, 150, 150, 50), 10)
    pygame.display.flip()# 刷新屏幕

2.绘制三角形

在这里插入图片描述

# 导入pygame
import pygame
import time
# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((480, 700))  # 宽:640,高:700


BLACK = (0, 0, 0)  # 黑色
WHITE = (255, 255, 255)  # 白色
RED = (255, 0, 0)  # 红色
GREEN = (0, 255, 0)  # 绿色
BLUE = (0, 0, 255)  # 蓝色

screen.fill(WHITE)  # 填充背景色
#循环
while True:
    # 监听所有事件
    for event in pygame.event.get():
        # 点击❌号关闭,退出游戏
        if event.type == pygame.QUIT:
            #游戏退出
            pygame.quit()

    """绘制三角形"""
    points = [(60,0),(0,50),(120,50)]
    pygame.draw.polygon(screen, GREEN, points, 0)

    """绘制多边形"""
    points = [(200, 75), (300, 25), (400, 75), (450, 25), (450, 125), (400, 75), (300, 125)]
    pygame.draw.polygon(screen, RED, points, 0)

    pygame.display.flip()# 刷新屏幕

3.显示文字
在这里插入图片描述

# 导入pygame
import pygame

# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((480, 700))  # 宽:640,高:700
# 窗口标题
pygame.display.set_caption('原神')
# 定义颜色
BLACK = (0, 0, 0)  # 黑色
WHITE = (255, 255, 255)  # 白色
RED = (255, 0, 0)  # 红色
GREEN = (0, 255, 0)  # 绿色
BLUE = (0, 0, 255)  # 蓝色

#循环
while True:
    # 监听所有事件
    for event in pygame.event.get():
        # 点击❌号关闭,退出游戏
        if event.type == pygame.QUIT:
            #游戏退出
            pygame.quit()

    text = pygame.font.SysFont("SimHei", 60)  # 创建一个font文本对象
    text_font = text.render("游戏结束", 1, RED, BLUE)  # 渲染文本对象
    screen.blit(text_font, (100,200))  # 绘制文本内容
    pygame.display.update()# 刷新屏幕

3.乒乓球创意

# 导入pygame
import pygame
import time
# 初始化游戏
pygame.init()

# 游戏代码【这里写我们的游戏代码主体部分,比如游戏窗口,标题,背景颜色等等】
# 游戏窗口
screen = pygame.display.set_mode((600, 550))  # 宽:600,高:550
# 窗口标题
pygame.display.set_caption('乒乓球争霸赛')

# 定义颜色
BLACK = (0, 0, 0)  # 黑色
WHITE = (255, 255, 255)  # 白色
RED = (255, 0, 0)  # 红色
GREEN = (0, 255, 0)  # 绿色
BLUE = (0, 0, 255)  # 蓝色
Orange = (225, 121, 21)  # 橙色

x = 120  # 乒乓球的x坐标
y = 120  # 乒乓球的y坐标
vx = 1  # 乒乓球的x轴初始速度
vy = 1  # 乒乓球的y轴初始速度

# boost = 0  # boost是加速器,如果接了10次,那么加速
score = 0  # score是分数,接到一次乒乓球就加分
# Bpc= 1  # 基础加分量英文:Basic plus component的缩写


# 打印文本
def printtext(font, text, x, y, color):
    # 渲染文本
    text_font = font.render(text, True, color)
    # 绘制文本
    screen.blit(text_font, (x, y))

#循环
while True:
    screen.fill(Orange)  # 填充背景为橙色
    # 监听所有事件
    for event in pygame.event.get():
        # 点击❌号关闭,退出游戏
        if event.type == pygame.QUIT:
            #游戏退出
            pygame.quit()

    ### 显示文字 ###
PythonPygame写游戏-从入门到精通 中文pdf版本 部分目录如下: 系统学习部分 用PythonPygame写游戏-从入门到精通(1) Pygame的历史,安装Pygame,第一个Pygame脚本 用PythonPygame写游戏-从入门到精通(2) 理解游戏中的事件 用PythonPygame写游戏-从入门到精通(3) Pygmae的屏幕显示 用PythonPygame写游戏-从入门到精通(4) 使用字体模块,Pygame 的错误处理 用PythonPygame写游戏-从入门到精通(5) 像素和颜色 用PythonPygame写游戏-从入门到精通(6) 使用图像,理解Surface 用PythonPygame写游戏-从入门到精通(7) 绘制图形 用PythonPygame写游戏-从入门到精通(8) 产生动画和控制帧率 用PythonPygame写游戏-从入门到精通(9) 向量基础 用PythonPygame写游戏-从入门到精通(10) 用户输入 用PythonPygame写游戏-从入门到精通(11) 使用鼠标控制精灵。一个在鼠标旁不断游动的小鱼的例程。 用PythonPygame写游戏-从入门到精通(12) 手柄操作,暂无 用PythonPygame写游戏-从入门到精通(13) AI初探 用PythonPygame写游戏-从入门到精通(14) 状态机 用PythonPygame写游戏-从入门到精通(15) 开始AI编程 用PythonPygame写游戏-从入门到精通(16) AI编程总结。一个蚂蚁采集食物,攻击蜘蛛的系统模拟例程。 用PythonPygame写游戏-从入门到精通(17) 3D基础 用PythonPygame写游戏-从入门到精通(18) 3D中的概念 用PythonPygame写游戏-从入门到精通(19) 第一个 3D 程序(伪)。一个空间中的3D立方体的例程。 用PythonPygame写游戏-从入门到精通(20) 声音原理 用PythonPygame写游戏-从入门到精通(21) 使用声音,播放音效。一个重力模拟金属球碰撞的例程。 用PythonPygame写游戏-从入门到精通(22) 播放长时间的背景音乐。一个建议播放器的例程。 额外提高部分 用PythonPygame写游戏-从入门到精通(py2exe编) 使用py2exe将pygame脚本转换为exe可执行文件 用PythonPygame写游戏-从入门到精通(Sprite篇) 介绍Pygame中不是必须但又很重要的Sprite模块,游戏中的角色实现,大多都要靠它。 实践部分 用PythonPygame写游戏-从入门到精通(实战一:涂鸦画板1) 一个类似于Windows画图板的小玩意儿,精简了很多功能但是有更帅的笔刷。这一次主要是将笔刷的实现。 用PythonPygame写游戏-从入门到精通(实战一:涂鸦画板2) 加上了按钮,我们的涂鸦画板可以用了! 用PythonPygame写游戏-从入门到精通(实战二:恶搞俄罗斯方块1) 俄罗斯方块,却有不是普通的俄罗斯方块。 用PythonPygame写游戏-从入门到精通(实战二:恶搞俄罗斯方块2) 代码构架 用PythonPygame写游戏-从入门到精通(实战二:恶搞俄罗斯方块3) 实现说明 用PythonPygame写游戏-从入门到精通(实战二:恶搞俄罗斯方块4) 完成,提供下载 用PythonPygame写游戏-从入门到精通(实战三:植物大战僵尸1)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值