利用Pygame繪制圓環(huán)的示例代碼
三角函數(shù)

如果我們以O(shè)P作為圓的半徑r,以o點(diǎn)作為圓的圓心,圓上的點(diǎn)的x坐標(biāo)就是r * cos a ,y坐標(biāo)就是 r * sin a。
python中提供math.cos() 和 math.sin(),要求參數(shù)為弧度。
弧度和角度的關(guān)系
PI代表180度,PI就是圓周率:3.1415926 535 897392 23846,python提供了角度和弧度的轉(zhuǎn)化
math.degress() 弧度轉(zhuǎn)角度
math.radiens() 角度轉(zhuǎn)弧度
a = math.cos(math.radians(90))
90度的橫坐標(biāo)為0,但因?yàn)镻I不是浮點(diǎn)小數(shù),導(dǎo)致運(yùn)算不準(zhǔn)確,是接近0的一個(gè)值。
基本包和事件捕捉
初始化窗口,配置圓心和半徑,添加了定時(shí)器便于控制繪制的速度
import sys, random, math, pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((600, 500))
pygame.display.set_caption("夢(mèng)幻圓")
screen.fill((0, 0, 100))
pos_x = 300
pos_y = 250
radius = 200
angle = 360
# 定時(shí)器
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()
主程序
角度不斷的加,如果超過(guò)360度則重新重1開(kāi)始,隨機(jī)一個(gè)顏色,計(jì)算出這個(gè)角度上的大圓上的點(diǎn),以這個(gè)點(diǎn)畫一個(gè)半徑為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("夢(mèng)幻圓")
screen.fill((0, 0, 100))
pos_x = 300
pos_y = 250
radius = 200
angle = 360
# 定時(shí)器
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)到此這篇關(guān)于利用Pygame繪制圓環(huán)的示例代碼的文章就介紹到這了,更多相關(guān)Pygame繪制圓環(huán)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python語(yǔ)言的12個(gè)基礎(chǔ)知識(shí)點(diǎn)小結(jié)
這篇文章主要介紹了Python語(yǔ)言的12個(gè)基礎(chǔ)知識(shí)點(diǎn)小結(jié),包含正則表達(dá)式替換、遍歷目錄方法、列表按列排序、去重、字典排序等,需要的朋友可以參考下2014-07-07
python opencv實(shí)現(xiàn)切變換 不裁減圖片
這篇文章主要為大家詳細(xì)介紹了python opencv實(shí)現(xiàn)切變換,不裁減圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
利用Python制作一個(gè)動(dòng)物識(shí)別小程序
動(dòng)物識(shí)別是計(jì)算機(jī)視覺(jué)和模式識(shí)別領(lǐng)域的重要研究方向,它涉及通過(guò)圖像或視頻數(shù)據(jù)自動(dòng)識(shí)別和分類不同種類的動(dòng)物,隨著數(shù)字圖像技術(shù)和機(jī)器學(xué)習(xí)方法的快速發(fā)展,動(dòng)物識(shí)別在實(shí)際應(yīng)用中具有廣泛的潛力,本文將給大家介紹如何基于Python制作一個(gè)動(dòng)物識(shí)別小程序2023-10-10
pandas groupby + unstack的使用說(shuō)明
這篇文章主要介紹了pandas groupby + unstack的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
Python3讀取和寫入excel表格數(shù)據(jù)的示例代碼
這篇文章主要介紹了Python3讀取和寫入excel表格數(shù)據(jù)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
python使用matplotlib庫(kù)生成隨機(jī)漫步圖
這篇文章主要為大家詳細(xì)介紹了使用Python的matplotlib庫(kù)生成隨機(jī)漫步圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08

