pygame實現星際穿越粒子動畫

2021-10-07 09:21:54 字數 2297 閱讀 4239

import random

import pygame

# 流星類

class star(object):

"""用於指定流星的位置,移動向量,星尾長度"""

def __init__(self, point, screen, all_speed):

self.startx = point[0]

self.starty = point[1]

screen_rect = screen.get_rect() # 獲得螢幕矩形

self.speed_x = (self.startx - screen_rect.centerx) / 25 * all_speed[speed_index] # 水平方向速度設定

self.speed_y = (self.starty - screen_rect.centery) / 25 * all_speed[speed_index] # 豎直方向速度設定

self.end_x = self.startx + self.speed_x * 5 # 星尾

self.end_y = self.starty + self.speed_y * 5 # 星尾

self.color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))

def blitme(self):

pygame.draw.aaline(screen, self.color, (star.startx, star.starty), (star.end_x, star.end_y), 100) # 繪製流星軌跡

# 螢幕上流星檢測

def on_screen(point):

if 0 < point[0] < 1600 and 0 < point[1] < 900 and not(point[0] == 800 and point[1] == 450):

return point

# 初始化設定

pygame.init()

screen = pygame.display.set_mode((1600, 900))

screen_rect = screen.get_rect()

points = # 用於儲存流星的點集

for i in range(10): # 生成十顆流星

point = [random.randint(600, 1000), random.randint(250, 650)]

# 全域性速度(加速和反向加速)

n = 0

all_speed =

speed_index = 0 # 全域性速度列表索引

while n < 1000:

i = n/100

n += 1

# 主迴圈

while true:

for event in pygame.event.get():

if event.type== pygame.quit:

pygame.quit()

exit()

screen.fill(0)

pygame.time.clock().tick(96)

if speed_index < 999:

speed_index += 1 # 速度加快

else:

speed_index = 0

all_speed.reverse() # 反向加速

# 新增一顆流星

point1 = [random.randint(600, 1000), random.randint(250, 650)]

# 畫流星

for point in points:

star = star(point, screen, all_speed)

star.blitme()

# 流星移動

point[0] = star.startx + star.speed_x # 崩潰的電腦

point[1] = star.starty + star.speed_y # 崩潰的電腦

points = list(filter(on_screen, points)) # 記憶體控制

pygame.display.update()

"""1、隨機座標的生成和儲存

2、流星類

3、流星速度控制

4、星尾長度

5、幀率控制

6、記憶體管理

7、全域性速度控制

"""

星際穿越 數學

航天飛行器是一項複雜而又精密的儀器,飛行器的損耗主要集中在發射和降落的過程,科學家根據實驗資料估計,如果在發射過程中,產生了 x 程度的損耗,那麼在降落的過程中就會產生 x 2程度的損耗,如果飛船的總損耗超過了它的耐久度,飛行器就會 墜毀。問一艘耐久度為 h 的飛行器,假設在飛行過程中不產生損耗,那...

64 星際穿越

個人水平有限,請見諒!航天飛行器是一項複雜而又精密的儀器,飛行器的損耗主要集中在發射和降落的過程,科學家根據實驗資料估計,如果在發射過程中,產生了 x 程度的損耗,那麼在降落的過程中就會產生 x2 程度的損耗,如果飛船的總損耗超過了它的耐久度,飛行器就會 墜毀。問一艘耐久度為 h 的飛行器,假設在飛...

星際穿越原理

時間流逝很快 如何穿越未來 穿越蟲洞,或者進入扭曲空間 從a點通過彎曲的空間飛到b點,這時候是會超越平面空間的光速 然後這樣你已經用幾小時的功夫,別人已經老了若干年 相對於你來說,你的時間並沒有變長,你依然是大概活100歲 相對於別人來說,別人的時間過得很快,所以會顯得比你老若干歲 而你的時間,中間...