Pygame(二)

Pygame(二)

前情提要

image.png

本节提要

image.png

内容详解

坐标

pygame中的坐标系

pygame中的坐标系定义

  • 以画布的左上角为坐标原点(0,0)
  • 以向右方向为x轴正方向
  • 以向下方向为y轴负方向

坐标系示意图:
image.png

坐标的意义

我们怎么描述如下图所示的圆的圆心位置呢?
image.png

如果没有坐标的概念,我们可以这样说:
它在离左边XX距离, 离上边XX距离的地方.

而我们有了坐标,可以这样说:圆心在(x,y)处
其中x:就表示圆心离左边的距离 ,表示圆心离上边的距离, 是不是方便,简洁了很多啊?

再比如说,当我们发现这个圆"滚"到了如下图所示的位置

image.png

我们怎么描述这个移动呢?
如果没有坐标,我们可以这么说:向右移动了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()

效果图:
image.png

本节课完整示例代码

# /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是一个强大的库,我们应该熟悉里面的基本内容,并加以熟练应用
因此,留以下几个作业:

  1. 画一个矩形:要求,左上角在(100,100), 宽为200, 高为60,边框颜色为蓝色
  2. 用矩形画一个10层的高楼
    要求:
  3. 层高:50
  4. 层宽:逐层递减,最宽(1层)200, 每层减8
  5. 颜色:灰色(190, 190, 190)

猜你喜欢

转载自blog.csdn.net/weixin_41810846/article/details/112055778
今日推荐