Pygame第二课:画图

目录

一、Pygame的坐标系

二、绘图

2.1 颜色

2.2 绘图函数

2.2.1 pygame.draw.rect()

2.2.2 pygame.draw.line()

2.2.3 pygame.draw.circle()

2.2.4 pyame.draw.ellipse()

2.2.5 pygame.draw.polygon()

2.3 显示

三、示例


人生苦短,我用Python!

一、Pygame的坐标系

pygame的坐标系与turtle的坐标系不同,它是以左上角为(0,0)原点,X坐标越往右越大,Y坐标越往下越大,如图1-1所示。

图1-1

二、绘图

2.1 颜色

在pygame中,颜色采用RGB颜色,会保存在一个元组中,第一个代表红色的量,第二个代表绿色的量,第三个代表蓝色的量。如:白色是(255,255,255),黑色是(0,0,0),红色是(255,0,0),绿色是(0,255,0),蓝色是(0,0,255)。

我们通常会提前设置好。示例:

WHITE=(255,255,255)
BLACK=(0,0,0)
RED=(255,0,0)
GREEN=(0,255,0)
BLUE=(0,0,255)

2.2 绘图函数

介绍了颜色设置后,我们话不多说,直接上函数。

2.2.1 pygame.draw.rect()

pygame.draw.rect()函数可以绘画一个矩形,语法如下:

pygame.draw.rect(Surface,color,rect,width)

Surface:窗口,为一个Surface对象。

color:颜色,为RGB色值。

rect:一个元组:第一个是左上角的X坐标,第二个是左上角的Y坐标,第三个是矩形的宽,第四个是矩形的高。

width:粗细,int类型,0表示实心。

2.2.2 pygame.draw.line()

pygame.draw.line()函数可以画一个线条,语法如下:

pygame.draw.line(Surface, color, start_pos, end_pos, width)

Surface:不用说了吧,Surface对象。

color:RGB颜色。

start_pos:起始点:元组(起始点X坐标,起始点Y坐标)。

end_pos:结束点:元组(终点X坐标,终点Y坐标)。

width:粗细,整数表示(int类型)。

2.2.3 pygame.draw.circle()

pygame.draw.circle()函数可以画一个圆,语法如下:

pygame.draw.circle(Surface, color, pos, radius, width)

Surface:不用说了吧,Surface对象。

color:RGB颜色。

pos:圆心坐标(X坐标,Y坐标)。

radius:半径:int类型。

width:粗细,int类型,0表示实心。

2.2.4 pyame.draw.ellipse()

pygame.draw.ellipse()函数可以画一个椭圆形,语法如下:

pygame.draw.ellipse(Surface, color, Rect, width)

Surface:不用说了吧,Surface对象。

color:RGB颜色。

Rect:能围绕这个椭圆形的最小矩形,格式为一个元组:第一个是左上角的X坐标,第二个是左上角的Y坐标,第三个是矩形的宽,第四个是矩形的高。

width:粗细,int类型,0表示实心。

2.2.5 pygame.draw.polygon()

pygame.draw.polygon()函数可以画一个多边形,语法如下:

pygame.draw.polygon(surface, color, points,width)

Surface:不用说了吧,Surface对象。

color:RGB颜色。

points:每个点的坐标,存于一个元组中。

width:粗细,int类型,0表示实心。

2.3 显示

用pygame.display.update()来显示。

三、示例

"""
此程序摘自我的作品
"""
import pygame
pygame.init()
screen=pygame.display.set_mode([1500,1000])
pygame.display.set_caption("绝处逢生")

#设置颜色
DODGERBLUE=(30,144,255)
DODGERBLUE2=(0,114,225)
SPRINGGREEN2=(0,255,140)
BLACK=(10,10,10)
RED=(255,0,0)
WHITE=(255,255,255)

pygame.draw.line(screen, BLACK, (0, 700), (1500, 700), 20)  #画线
pygame.draw.rect(screen, SPRINGGREEN2, (0, 700, 1500, 300), 0)  #画长方形
pygame.draw.rect(screen, RED, (700, 0, 100, 50))  #画长方形
pygame.draw.rect(screen, DODGERBLUE2, (690, -10, 120, 70), 10)  #画长方形

pygame.display.update()

人生苦短,我用Python!

<think>好的,我现在需要帮助用户学习Pygame的基础知识。用户之前询问过快速排序,现在转向了Pygame,可能是想开始游戏开发。首先,我得确定用户的需求是什么。他们可能是一个编程新手,对Python有一定了解,现在想进入游戏开发领域。Pygame是一个常用的库,所以需要从安装开始,然后是基本的结构和功能。 用户需要的是入门指南,所以应该覆盖安装、初始化、游戏循环、事件处理、图形绘制等内容。需要结构清晰,分步骤讲解。同时,按照系统指令,要使用正确的中文和LaTeX格式,比如变量用$...$,代码块用三个反引号。 首先,安装部分。需要告诉用户如何用pip安装Pygame,命令是pip install pygame。然后,初始化部分,导入库并初始化,设置屏幕大小和标题。这部分需要代码示例,显示初始化过程。 接下来是游戏循环,这是Pygame的核心。游戏循环需要处理事件、更新游戏状态、绘制画面。要解释每个部分的作用,比如事件循环中处理退出事件,绘制时填充背景色,然后更新显示。需要提到时钟控制帧率,使用clock.tick(60)来维持60FPS。 然后,绘制图形,比如圆形和矩形。这部分需要示例代码,展示如何用pygame.draw中的函数来画图,并说明参数的意义,比如位置、颜色、尺寸等。 还要考虑用户可能的后续问题,比如如何处理键盘输入、加载图像、播放声音等。这些可以作为相关问题列出,帮助用户深入学习。 同时,需要确保LaTeX格式正确,比如变量$screen_width$和$screen_height$用行内公式格式。代码块要正确标注Python语法,并单独成段。引用部分如果之前有的话需要添加,但这里可能没有引用来源,所以可能不需要。 最后,生成相关问题,比如如何添加动画、处理碰撞、创建游戏角色等,这些都是Pygame入门后常见的问题。需要确保问题相关且有引导性,帮助用户继续学习。 检查是否有遗漏的部分,比如事件处理的细节,比如QUIT事件的处理,以及屏幕刷新的方法。确保代码示例能够运行,没有语法错误。同时,用中文自然表达,避免技术术语过于复杂,适合新手理解。 总结步骤:安装、初始化、游戏循环、事件处理、图形绘制、退出处理。每个部分配以代码和解释。最后列出相关问题,引导用户深入学习。</think># Pygame入门指南 ### 一、环境搭建 安装命令: ```bash pip install pygame ``` ### 二、基础框架 ```python import pygame # 初始化引擎 pygame.init() # 设置窗口尺寸为800x600像素 screen = pygame.display.set_mode((800, 600)) pygame.display.set_caption("我的第一个游戏") # 游戏主循环 running = True clock = pygame.time.Clock() # 创建时钟对象控制帧率 while running: # 1. 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 2. 更新游戏状态 # 3. 渲染画面 screen.fill((0, 0, 0)) # 用黑色填充背景 pygame.draw.circle(screen, (255, 0, 0), (400, 300), 30) # 绘制红色圆形 # 4. 更新显示 pygame.display.flip() clock.tick(60) # 限制60帧/秒 pygame.quit() ``` ### 三、核心概念解析 1. **坐标系系统**:窗口左上角为原点$(0,0)$,向右为$x$轴正方向,向下为$y$轴正方向 2. **颜色表示**:使用RGB元组格式,如$(255,0,0)$表示红色 3. **游戏循环**:每秒执行约60次的循环结构,包含: - 事件处理(输入检测) - 游戏逻辑更新 - 画面渲染 ### 四、基础图形绘制 ```python # 绘制矩形(左上角坐标,宽高) pygame.draw.rect(screen, (0,255,0), (100,100, 50, 80)) # 绘制线段(起点,终点) pygame.draw.line(screen, (255,255,0), (0,0), (800,600), 5) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值