pygame中的坐标系定义
如果没有坐标的概念,我们可以这样说:
它在离左边XX距离, 离上边XX距离的地方.
而我们有了坐标,可以这样说:圆心在(x,y)处
其中x:就表示圆心离左边的距离 ,表示圆心离上边的距离, 是不是方便,简洁了很多啊?
再比如说,当我们发现这个圆"滚"到了如下图所示的位置
我们怎么描述这个移动呢?
如果没有坐标,我们可以这么说:向右移动了200,向下移动了200
有了坐标我们可以这样说:从(50,50) 移动到了(250,250)
怎么样?是不是很方便呢?
坐标很有更多的好处,在以后的学习中,我们会经常与之打交道.
rect1 = pygame.Rect(left, top, width, height)
四个参数:
left:矩形左上角的x坐标
top:矩形左上角的y坐标
widht:矩形的宽
height:矩形的高
rect2 = pygame.Rect((left, top), (width, height))
两个参数:都是元组
(left, top):矩形左上的坐标(x,y)
(widht,height):矩形的宽和高
rect3 = pygame.Rect(rec1)
参数:
rect1:一个pygame矩形对象
创造一个与rect1相同位置,同样大小的矩形.
关键字 | 类型 | 描述 |
---|---|---|
bottom | 属性 | 矩形的下边y坐标 |
bottomleft | 属性 | 矩形左下角的坐标 |
bottomright | 属性 | 矩形右下角坐标 |
center | 属性 | 矩形中心坐标 |
centerx | 属性 | 矩形中心x坐标 |
centery | 属性 | 矩形中心y坐标 |
midbottom | 属性 | 下底边中点的坐标 |
midleft | 属性 | 左边中点的坐标 |
midright | 属性 | 右边中点的坐标 |
midtop | 属性 | 上边中点的坐标 |
left/x | 属性 | 左边的x坐标 |
right | 属性 | 右边的x坐标 |
top/y | 属性 | 上边的y坐标 |
topleft | 属性 | 左上角点的坐标 |
topright | 属性 | 右上角点的坐标 |
width/w | 属性 | 矩形的宽 |
height/h | 属性 | 矩形的高 |
size | 属性 | (宽,高) |
一个格子中用斜线分隔的表示同一个属性的不同写法:如height可以写成h
位置/坐标属性示意图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gLWdVe9e-1609420236620)(https://upload-images.jianshu.io/upload_images/25212133-7524f38be0ad41dc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
属性的使用,直接用. + 属性名即可
代码:
print(rect3.size)
print(rect3.x)
print(rect3.y)
print(rect3.center)
print(rect3.topleft)
输出结果
(100, 100)
50
50
(100, 100)
(50, 50)
有些属性可以直接改
rect3.width = 200
print(rect3.size)
输出如下:
(200, 100)
对比发现,这个矩形的宽从原来的100变成了现在的200.
当我们要修改一个矩形的时候,通常只修改矩形的左上角坐标:left/x, top/y和宽widht/w和高height/h
一个重要方法:
名称 | 类型 | 描述 |
---|---|---|
move | 方法 | 移动矩形 |
关于方法的使用,我们后续在讲动画的时候再详细描述.
以上属性与方法只是部分内容
更完整的内容可以查看pygame的官方文档
官方文档
中文翻译文档下载地址
更具体的内容请参看以上文档
有动手能力强的读者可以发现,我们上面定义的矩形在实际的窗口中,是看不到的.
因此,上面的矩形对象,也称为虚拟矩形.
要想将矩形具现化到窗体中,我们需要用到一个函数:pygame.draw.rect()
pygame.draw.rect(Surface, color, rect, width)
参数说明:
Surface:一个画布(display/surface)对象. 即我们前面的screen 变量所存的东西
color: 边框的颜色RGB值元组
rect:矩形对象,也可以直接定义四元组(left,top, width, height)
widht:边线的粗细
颜色值RGB对照表
示例:
pygame.draw.rect(screen,(255, 0, 0),rect3, 5)
当我们运行上以代码后,发现:(ಥ _ ಥ)为什么啥也没有?说好的矩形呢?
那是因此,当我们在画布上画完东西后,要让画布进行一个刷新的操作,才能看到.
pygame.display.update()
# /usr/bin/python3
# Author: 爱编程的章老师
# @Time: 2020/12/31 0031
# E-mail: [email protected]
import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((800, 600))
rect1 = pygame.Rect(50, 50, 100, 100)
rect2 = pygame.Rect((50,50), (100, 100))
rect3 = pygame.Rect(rect1)
print(rect3.size)
print(rect3.x)
print(rect3.y)
print(rect3.center)
print(rect3.topleft)
rect3.width = 200
print(rect3.size)
pygame.draw.rect(screen,(255, 0, 0),rect3, 5)
pygame.display.update()
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
pygame.quit()
Pygame是一个强大的库,我们应该熟悉里面的基本内容,并加以熟练应用
因此,留以下几个作业: