Easy Games With Python and Pygame(二)- Pygame 绘制图形

简介: Easy Games With Python and Pygame(二)- Pygame 绘制图形

一、绘制图形

绘制圆形

pygame.draw可以用来绘制不同的形状,pygame.draw.cirle()可以用来绘制圆

image.png

需要的参数分别为:

  • 承载圆形的Surface对象
  • 颜色
  • 圆心的X、Y坐标两个整数存入一个元组中
  • 圆的半径
  • 线条宽度,默认为0
import sys
import pygame
from pygame.locals import *
# 创建窗口参数
# 窗口大小
win_size = (1000, 500)
win = pygame.display.set_mode(win_size)
pygame.init()
# 窗口背景颜色
bg_color = (120, 120, 255)
while True:
    for event in pygame.event.get():
        if event.type in (QUIT, K_ESCAPE, KEYDOWN):
            sys.exit()
    win.fill(bg_color)
    '''开始绘制圆形'''
    # 定义圆的参数
    # 线条颜色
    color = (255, 255, 0)
    # 线条宽度
    width = 5
    # 圆心的位置
    position = (500, 250)
    # 半径
    radius = 100
    # 绘制圆
    pygame.draw.circle(win, color, position, radius, width)
    '''结束绘制圆形'''
    pygame.display_setcaption('圆形的绘制')
    # 刷新窗口
    pygame.display.update()
复制代码

image.png

如果将线条宽度改为和半径一样,就变成了一个实体圆

image.png

绘制弧形

绘制弧形的步骤与绘制圆形的步骤是一样的,只不过绘制弧形需要使用到pygame.draw.arc()函数

image.png

需要传入的参数为:

  • 承载弧形的Surface对象
  • 弧形的颜色
  • 矩形左上角的X,Y坐标以及宽和高
  • 开始角度
  • 结束角度 这里需要传入角度值,因此需要导入math模块,参考上面创建圆形的代码,创建和设置窗口的代码是不变的,因此只需要将创建圆形的代码替换为创建弧形的代码即可

创建pygame_draw_arc.py文件,将创建圆形代码块替换,从win.fill(bg_color)代码开始

'''开始绘制弧形'''
arc_color = (255, 0, 255)
# 以矩形为基准距离左,上,下,由的距离
position = (400, 200, 200, 200)
start_angle = math.radians(0)
end_angle = math.radians(180)
width = 5
pygame.draw.arc(win, arc_color, position, start_angle, end_angle, width)
# 设置窗口标题
pygame.display.set_caption('弧形的绘制')
'''结束绘制弧形'''
复制代码

pygame.display.update()代码前结束

image.png

绘制简单的椭圆

一个椭圆由上下两半部分弧形组成,因此只需要绘制两个弧形,将角度替换并往下平移,即可组成一个椭圆

'''开始椭圆上半部分'''
arc_color = (255, 0, 255)
# 以矩形为基准距离左,上,下,由的距离
position = (400, 100, 100, 200)
start_angle = math.radians(0)
end_angle = math.radians(180)
width = 5
pygame.draw.arc(win, arc_color, position, start_angle, end_angle, width)
'''开始绘制椭圆下半部分'''
arc_color = (255, 0, 255)
# 以矩形为基准距离左,上,下,由的距离
position = (400, 100, 100, 200)
start_angle = math.radians(180)
end_angle = math.radians(0)
width = 5
pygame.draw.arc(win, arc_color, position, start_angle, end_angle, width)
复制代码

image.png

当然也可以使用绘制椭圆的函数pygame.draw.ellipse()

绘制椭圆

椭圆的绘制需要用到pygame.draw.ellipse()函数

image.png

传递的参数分别为:

  • 承载椭圆的Surface对象
  • 椭圆的颜色
  • 椭圆(矩形)左上角X坐标和Y坐标,以及椭圆(矩形)的宽和高4个整数存入一个元组中
  • 宽度,可选
'''绘制椭圆'''
width = 5
# 左上角的XY坐标以及宽和高
rect = (400, 100, 200, 300)
color = (255, 255, 255)
pygame.draw.ellipse(win, color, rect, 1)
pygame.display.set_caption('椭圆的绘制')
复制代码

image.png

绘制多边形

pygame.draw.polygon()函数可以绘制多边形

包含了以下参数

  • 承载多边形的Surface对象
  • 多边形的颜色
  • 多边形连线的点的XY坐标构成的元组,最后一个元组将自动连接到第一个元组已完成多边形的形状
  • 线条的宽度,可选项
win.fill(window_surface_color)
color = (255, 255, 0)
# 绘制多边形
pygame.draw.polygon(win, color, ((400, 250), (291, 106), (236, 277), (56, 277), (200, 106)))
pygame.display.set_caption('多边形的绘制')
复制代码

image.png

绘制一个移动的矩形

要绘制移动的图形只要不断变换图形的位置即可实现,pygame中可以使用pygame.draw.rect()函数可以绘制矩形 rect()函数需要以下参数 承载矩形的Surface对象,既窗口 矩形的颜色 矩形左上角XY坐标,以及矩形的宽和高,存入一个元组中

import sys
import pygame
from pygame.locals import *
# 创建窗口参数
# 窗口大小
win_size = (1000, 500)
win = pygame.display.set_mode(win_size)
win.get_rect()
font = pygame.font.Font(None, 60)
pygame.init()
# 窗口标题内容
pygame.display.set_caption('绘制移动的矩形')
bg_color = (120, 120, 255)
# 矩形位置和移动变量
pos_x = 200
pos_y = 200
vel_x = 2
vel_y = 1
while True:
    for event in pygame.event.get():
        if event.type in (QUIT, K_ESCAPE, KEYDOWN):
            sys.exit()
    win.fill(bg_color)
    # 线条颜色
    color = (255, 255, 0)
    # 线条宽度
    width = 5
    # 矩形左上角XY坐标以及宽和高
    pos = pos_x, pos_y, 100, 100
    # 绘制矩形
    pygame.draw.rect(win, color, pos, width)
    # 移动矩形
    pos_x += vel_x
    # pos_y += vel_y
    # 刷新窗口
    pygame.display.update()
复制代码

image.png


相关文章
|
27天前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
54 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
1月前
|
数据采集 前端开发 Python
Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版
Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版
71 0
|
3月前
|
定位技术 Python
【python】python基于pygame坦克大战游戏设计(源码+图像+操作说明)【独一无二】
【python】python基于pygame坦克大战游戏设计(源码+图像+操作说明)【独一无二】
|
3月前
|
Linux iOS开发 MacOS
【Python】Python基于Pygame疯狂赛车游戏设计(源码+报告)【独一无二】
【Python】Python基于Pygame疯狂赛车游戏设计(源码+报告)【独一无二】
|
4月前
|
Python
在Python中,`tkinter`是一个用于创建图形用户界面(GUI)的标准库。
在Python中,`tkinter`是一个用于创建图形用户界面(GUI)的标准库。
|
3月前
|
Python
【python】python基于pygame弹珠游戏设计(源码)【独一无二】
【python】python基于pygame弹珠游戏设计(源码)【独一无二】
|
3月前
|
算法 数据安全/隐私保护 UED
【python】python基于Pygame扫雷游戏设计实现(源码+报告)【独一无二】
【python】python基于Pygame扫雷游戏设计实现(源码+报告)【独一无二】
|
4月前
|
数据可视化 Linux 数据格式
`seaborn`是一个基于`matplotlib`的Python数据可视化库,它提供了更高级别的接口来绘制有吸引力的和信息丰富的统计图形。`seaborn`的设计目标是使默认图形具有吸引力,同时允许用户通过调整绘图参数来定制图形。
`seaborn`是一个基于`matplotlib`的Python数据可视化库,它提供了更高级别的接口来绘制有吸引力的和信息丰富的统计图形。`seaborn`的设计目标是使默认图形具有吸引力,同时允许用户通过调整绘图参数来定制图形。
|
4月前
|
Python
`matplotlib`是Python中一个非常流行的绘图库,它提供了丰富的绘图接口,包括二维和三维图形的绘制。`Axes3D`是`matplotlib`中用于创建三维坐标轴的对象,而`plot_surface`则是用于在三维空间中绘制表面的函数。
`matplotlib`是Python中一个非常流行的绘图库,它提供了丰富的绘图接口,包括二维和三维图形的绘制。`Axes3D`是`matplotlib`中用于创建三维坐标轴的对象,而`plot_surface`则是用于在三维空间中绘制表面的函数。
|
5月前
|
索引 Python
技术好文共享:用Python的Pygame包做飞行棋
技术好文共享:用Python的Pygame包做飞行棋
下一篇
无影云桌面