利用Pygame绘制圆环的示例代码
作者:我的天才女友 发布时间:2022-04-02 12:55:05
标签:Pygame,圆环
三角函数
如果我们以OP作为圆的半径r,以o点作为圆的圆心,圆上的点的x坐标就是r * cos a ,y坐标就是 r * sin a。
python中提供math.cos() 和 math.sin(),要求参数为弧度。
弧度和角度的关系
PI代表180度,PI就是圆周率:3.1415926 535 897392 23846,python提供了角度和弧度的转化
math.degress() 弧度转角度
math.radiens() 角度转弧度
a = math.cos(math.radians(90))
90度的横坐标为0,但因为PI不是浮点小数,导致运算不准确,是接近0的一个值。
基本包和事件捕捉
初始化窗口,配置圆心和半径,添加了定时器便于控制绘制的速度
import sys, random, math, pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((600, 500))
pygame.display.set_caption("梦幻圆")
screen.fill((0, 0, 100))
pos_x = 300
pos_y = 250
radius = 200
angle = 360
# 定时器
mainClock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
keys = pygame.key.get_pressed()
if keys[K_ESCAPE]:
pygame.quit()
sys.exit()
主程序
角度不断的加,如果超过360度则重新重1开始,随机一个颜色,计算出这个角度上的大圆上的点,以这个点画一个半径为10的圆。
angle += 1
if angle >= 360:
angle = 0
r = random.randint(0, 255)
g = random.randint(0, 255)
b = random.randint(0, 255)
color = r, g, b
x = math.cos(math.radians(angle)) * radius
y = math.sin(math.radians(angle)) * radius
pos = (int(pos_x + x), int(pos_y + y))
pygame.draw.circle(screen, color, pos, 10, 0)
pygame.display.update()
mainClock.tick(20)
全部代码
import sys, random, math, pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((600, 500))
pygame.display.set_caption("梦幻圆")
screen.fill((0, 0, 100))
pos_x = 300
pos_y = 250
radius = 200
angle = 360
# 定时器
mainClock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
keys = pygame.key.get_pressed()
if keys[K_ESCAPE]:
pygame.quit()
sys.exit()
angle += 1
if angle >= 360:
angle = 0
r = random.randint(0, 255)
g = random.randint(0, 255)
b = random.randint(0, 255)
color = r, g, b
x = math.cos(math.radians(angle)) * radius
y = math.sin(math.radians(angle)) * radius
pos = (int(pos_x + x), int(pos_y + y))
pygame.draw.circle(screen, color, pos, 10, 0)
pygame.display.update()
mainClock.tick(10)
来源:https://blog.csdn.net/qq_40801987/article/details/122584401


猜你喜欢
- Notepad++ 是一款非常有特色的编辑器,软件小巧高效,支持27种编程语言,通吃C,C++ ,Java ,C#, XML, HTML,
- 本文实例为大家分享了Python爬取最好大学网大学排名的具体代码,供大家参考,具体内容如下源代码:#-*-coding:utf-8-*- &
- 爬虫具有域名切换、信息收集以及信息存储功能。这里讲述如何构建基础的爬虫架构。1、urllib库:包含从网络请求数据、处理cookie、改变请
- 引言“ 这是MySQL系列笔记的第一篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,或
- 判断汉字if (System.Text.Encoding.GetEncoding("gb2312").GetBytes(
- 本文介绍TSV文件类型及其应用,同时介绍Golang语句读取TSV文件并转为struct的实现过程。认识TSV文件也许你之前不了解TSV文件
- 如果你的数据量有几十万条,用户又搜索一些很通俗的词,然后要依次读最后几页重温旧梦。mysql该很悲壮的不停操作硬盘。 所以,可以试着让mys
- 一、存储引擎上节我们最后说到,SQL 的执行计划是执行器组件调用存储引擎的接口来完成的。那我们可以理解为:MySQL 这个数据库管理系统是依
- PHP hebrev() 函数实例反向显示希伯来字符:<?php echo hebrev("á çù&
- 这里记录一下pytorch神经网络参数管理方法(参数访问、参数初始化、参数绑定),方便自己和需要的朋友学习、查阅。一、参数访问1.1 访问指
- 前言优雅关机就是服务端关机命令发出后不是立即关机,而是等待当前还在处理的请求全部处理完毕后再退出程序,是一种对客户端友好的关机方式。而执行C
- 首先说明一点,每天的访问量并不大每天才2W的访问量,按道理说,访问量再增加一倍这样的服务器也应该足以承受。可是我们的服务器为什么总是这样频频
- 如何编写一个只在Web服务关闭时执行的程序?如:<SCRIPT LANGUAGE="VBScript"&
- 1、生成器函数包含yield from表达式。2、在yield from表达式处暂停委派生成器,调用方可直接将数据发送给子生成器。3、子生成
- 本文实例讲述了Python编程实现数学运算求一元二次方程的实根算法。分享给大家供大家参考,具体如下:问题:请定义一个函数quadratic(
- 示例函数为了开发类型检查器,我们需要一个简单的函数对其进行实验。欧几里得算法就是一个完美的例子: def gcd(a, b):
- 本文实例讲述了Python 异常的捕获、异常的传递与主动抛出异常操作。分享给大家供大家参考,具体如下:异常的捕获demo.py(异常的捕获)
- 在JavaScript开发中,被人问到:null与undefined到底有啥区别?一时间不好回答,特别是undefined,因为这涉及到un
- 安装PIL在Debian/Ubuntu Linux下直接通过apt安装:$ sudo apt-get install python-imag
- 使用fso对象遍历指定文件夹函数:'遍历文件夹sub ListFolderContents(path) &nbs