当前位置:   article > 正文

Pygame添加直线、图形_pygame.draw.line

pygame.draw.line

视频课

【零基础 Python体验课】第四季 pygame游戏开发


文章配套代码: 千峰教育所有代码

Pygame显示图形

pygame专门提供了一个画图的模块,叫做draw,其中又有很多模块

1、画直线

  • 模块为:pygame.draw.line()
    • line方法参数为line(画在哪儿,线的颜色,线的起点,线的终点,线宽)
    • 线宽默认为1
    • 画在哪儿一般都是在window上
import pygame
pygame.init()
window = pygame.display.set_mode((600, 600))
pygame.display.set_caption("显示图形")
# 设置背景颜色
window.fill((255, 255, 255))
pygame.display.update() #就连设置颜色都需要更新一次

# ============显示图形============
#1画直线
#line()
pygame.draw.line(window, (234, 190, 233), (20, 20), (90, 90), 2)
window.blit(window, (0, 0))
pygame.display.update()


flag = True
while flag:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

在这里插入图片描述

2、画折线

大家说了,折线好画,就是多个直线连接在一起就是折线,可以但是麻烦,line方法的升级lines集合这个方案,就是依然是拼接原理。

在这里插入图片描述

  • 模块为:pygame.draw.lines()
    • 参数为lines(画在哪,线的颜色,是否闭合,多个点的列表,线宽)
    • 前两个参数和上面一模一样
    • 是否闭合:假如有四个点,点1->点2->点3->点4->点1,就是最后一个点连接第一个点
    • 多个点的列表,就是把每一条线起始位置结束位置放在一个元组中,将多个元组放在列表
      • 实例:points = [(10, 300), (100, 160), (180, 260), (300, 100)]
      • 将每一条线的数据存储
    • 线宽不用说吧

实例:

import pygame
pygame.init()
window = pygame.display.set_mode((600, 600))
pygame.display.set_caption("显示图形")
# 设置背景颜色
window.fill((255, 255, 255))
pygame.display.update() #就连设置颜色都需要更新一次

# ============显示图形============
#1画直线
#line()
pygame.draw.line(window, (234, 190, 233), (20, 20), (90, 90), 2) #一看这就是斜线
window.blit(window, (0, 0))
pygame.display.update()

#2画折线
#lines()
points = [(10, 300), (100, 160), (180, 260), (300, 100)]
pygame.draw.lines(window, (0, 255, 0), True, points, 3)
window.blit(window, (0, 0))
pygame.display.update()
# ==============================
flag = True
while flag:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

在这里插入图片描述

3、画圆

  • 函数:pygame.draw.circle()
    • 参数详解:circle(画在哪儿,线的颜色,圆心,半径,线宽=0)
    • 圆心为一个坐标点
    • 颜色为RGB
    • 线宽默认为零,为填充

4、矩形

  • 函数:pygame.draw.rect()
    • 参数详解:rect(画在哪,线的颜色,矩形范围,线宽=0)
    • 颜色为RGB
    • 只需要定下左上角的顶点和长和宽,就是矩形范围
    • 如果不需要线宽的话,也就是线宽为0,就是填充了

画圆和矩形的综合代码

# ============显示图形============
#1画直线
#line()
pygame.draw.line(window, (234, 190, 233), (20, 20), (90, 90), 2) #一看这就是斜线
window.blit(window, (0, 0))
pygame.display.update()

#2画折线
#lines()
points = [(10, 300), (100, 160), (180, 260), (300, 100)]
pygame.draw.lines(window, (0, 255, 0), True, points, 3)
window.blit(window, (0, 0))
pygame.display.update()

#3画圆
#circle()
pygame.draw.circle(window, (0, 0, 255), (200, 250), 100, 2)

#4矩形
pygame.draw.rect(window, (120, 20, 60), (100, 70, 200, 100), 1)
pygame.display.update()
# ==============================
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

在这里插入图片描述

如果长方形的线宽为0,就是填充

在这里插入图片描述

我们改变这些图形的位置,就改变xy坐标就行了

5、椭圆

  • 函数:pygame.draw.ellipse()
    • 画一个长方形的内切圆,正方形是圆
    • 参数详解:ellipse(画在哪儿, 线的颜色, 矩形范围, 线宽=0)
    • 实例:ellipse(window, (255, 0, 0), (30, 70, 100, 200), 3)

在这里插入图片描述

6、弧线

其实弧线和椭圆又有关系,其实都是按照矩形的一些参数绘制的

弧线也使用长方形内的内切圆,只是去其中一部分

  • 函数:pygame.draw.arc()
    • 参数详解:arc(画在哪儿,线的颜色,矩形范围,起始弧度,终止弧度,线宽=1)
    • 注意这里是弧度(0~2π),而不是角度!
    • 椭圆的这里是0在这里插入图片描述
    • 如果取一半就是0~π,π怎么表示?就写成3.1415926就够了,如果有人想究极精准,那就多写几位,直接用PI需要模块
    • 线宽默认1
    • 颜色都是RGB
# ============显示图形============
#1画直线
#line()
pygame.draw.line(window, (234, 190, 233), (20, 20), (90, 90), 2) #一看这就是斜线
window.blit(window, (0, 0))
pygame.display.update()

#2画折线
#lines()
points = [(10, 300), (100, 160), (180, 260), (300, 100)]
pygame.draw.lines(window, (0, 255, 0), True, points, 3)
window.blit(window, (0, 0))
pygame.display.update()

#3画圆
#circle()
pygame.draw.circle(window, (0, 0, 255), (200, 250), 100, 2)

#4矩形
pygame.draw.rect(window, (120, 20, 60), (100, 70, 200, 100), 0)
pygame.display.update()

#5椭圆
pygame.draw.ellipse(window, (255, 0, 0), (30, 70, 100, 200), 3)
pygame.display.update()

#6弧线
pygame.draw.arc(window, (0, 0, 0), (30, 70, 100, 200), 0, 3.1415926, 7)
pygame.display.update()

# ==============================
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

在这里插入图片描述

对于椭圆取弧度是逆时针的

然后π可以使用math模块导入

from math import pi
print(pi)
  • 1
  • 2

直接pi就出来了,就比刚才多了一些,也是一个固定的常量

7、预告

往后好几节就是最激动人心的 动画!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/154492
推荐阅读
相关标签
  

闽ICP备14008679号