利用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
0
投稿
猜你喜欢
- 前言最近在搜寻资料时,发现了一则10年前的新闻:二维码将成线上线下关键入口。从今天的移动互联网来看,支付收款码/健康码等等与我们息息相关,二
- 本文实例讲述了vue动态组件和v-once指令。分享给大家供大家参考,具体如下:点击按钮时,自动切换两个组件<component :i
- 最近跟着OpenCV2-Python-Tutorials在学习python_opencv中直方图的反向投影时,第一种方法是使用numpy实现
- 你也许已经掌握了id、class、后台选择器这些基本的css选择器。但这远远不是css的全部。下面向大家系统的解析css中30个最常用的选择
- 一、项目需求前言:BBS上每个id对应一个用户,他们注册时候会填写性别(男、女、保密三选一)。经过检查,BBS注册用户的id对应1-3000
- 简介这两天更新完Xcode8之后发现Xcode对图标的要求又有了变化,之前用的一个小应用“IconKit”还没赶上节奏,已经不能满足Xcod
- 1.由于数据库设计问题造成SQL数据库新增数据时超时症状:Microsoft OLE DB Provider for SQL Server
- 感觉上次写的植物大战僵尸与俄罗斯方块的反应还不错,这次这个文章就更有动力了这次就写一个天天酷跑吧写出来的效果图就是这样了下面就更新一下全部的
- 原来看到这个代码的时候,觉得功能不错,调试并整理了一下也许大家用的到,对于越来越注重用户体验的今天,这种功能一定很受欢迎,当然本例子只是一个
- 用户登录验证脚本,Chkpwd.asp<% '=======用户登录验证脚本======= '如果尚未定义Passed
- 不久前因业务需要,我在自己的笔记本中安装了搜霸。当时一个做平面的朋友过来和我做一些设计交流,我在笔记本前准备输入一个网址,他靠近我的电脑,大
- 在开发的过程中,几乎不可能一次性就能写出毫无破绽的程序,断点调试代码是一个普遍的需求。作为前端开发工程师,以往我们开发的JavaScript
- 描述Fashion Mnist 是一个类似于 Mnist 的图像数据集. 涵盖 10 种类别的 7 万 (6 万训练集 + 1 万测试集)
- 场景:按照github文档上启动一个flask的app,默认是用5000端口,如果5000端口被占用,启动失败。样例代码:from flas
- 1、Export/Import的用处 Oracle Export/Import工具用于在数据库之间传递数据。 Export从数据库中导出数据
- 1**:请求收到,继续处理2**:操作成功收到,分析、接受3**:完成此请求必须进一步处理4**:请求包含一个错误语法或不能完成5**:服务
- 语言的内存管理是语言设计的一个重要方面。它是决定语言性能的重要因素。无论是C语言的手工管理,还是Java的垃圾回收,都成为语言最重要的特征。
- 你是否发现,在浩如烟海的应用程序堆里,具有漂亮图标和清爽名字的 App 更容易被用户喜爱。作为开发者,面对这自己的作品,能否自问一句:“从图
- 今天我们来写一个有管理功能的留言板程序。所谓的管理功能,其实就是每条留言前有一个选择框,点中要删除的留言,或者点“删除所有留言”,就完成了批
- 一个网站信息结构需要表现给用户看,这样用户才能知道当前是在哪儿,才有可能去猜测某个内容可能会在哪儿。如何表现网站的信息结构给用户呢?用导航。