首頁 > 軟體

基於Python實現流星雨效果的繪製

2022-03-18 19:00:42

1 前言

我們先給個小故事,提一下大家興趣;然後我給出論據,得出結論。最後再浪漫的流星雨表白程式碼奉上,還有我自創的一首詩。開始啦:

  

2 霍金說移民外太空

霍金說我們將來外星上生存;埃隆.馬斯克也是這樣想的。

我前面講外星人來不到地球,這個道理已經很清楚。我再說幾個資料,大家聽聽,我們且不要說到更遠的外星,我們人類今天登上月球,把一個字航員送上月球,他在月球上待一分鐘,要消耗地球一百萬美元的資源才能在月球上待一分鐘 。

我們說未來在火星上殖民,想想你在月球上一個人待一分鐘,要消耗地球一百萬美元的資源,你在火星上殖民幾千人、幾萬人,你得把整個地球資源毀滅掉,都調到火星上去。然後你只把七十億人調過去了幾千、幾萬人,然後他在那可能死得更快,這根本不是出路,這怎麼會成為出路呢?

我們再看,移居外星,離我們地球最近的另一個恆星系叫半人馬座。半人馬座,阿爾法星

也叫比鄰星。大家注意,這都是恆星,比鄰星距離太陽最近,有多近?  4.2光年,光以每秒鐘三十萬公里,走4.2年,就這我們還不知道比鄰星的那個恆星旁邊有沒有行星。

就算有行星有沒有宜居行星、類地行星。這我們還全然不知道。我們就假定那個地方有好了另一個地球,你按照今天人類火箭和衛星的最高速度,你單程從地球上飛到比鄰星,需要一萬五千年到三萬年。

請注意我們文明史,文明有文字,以後的文明迄今才五千年,你單程飛到那個地方要一萬五千年以上。我說過有沒有行星都不知道。這個前途存在嗎?根本不存在。就像外星人來不了我們這兒一樣,我們也到不了任何外星存在。

我們今天連太陽系都沒有走出去,沒有在太陽系的任何一個行星上殖民,所以移民外星根本不是出路。

3 浪漫的流星雨展示 

動態視訊最近幾天由於後臺伺服器升級,所以視訊過幾天我上傳上來。 

4 Python程式碼 

 def bgpic(self, picname=None):
    """Set background image or return name of current backgroundimage.
    Optional argument:
    picname -- a string, name of a gif-file or "nopic".
    If picname is a filename, set the corresponding image as background.
    If picname is "nopic", delete backgroundimage, if present.
    If picname is None, return the filename of the current backgroundimage.
    Example (for a TurtleScreen instance named screen):
    >>> screen.bgpic()
    'nopic'
    >>> screen.bgpic("landscape.gif")
    >>> screen.bgpic()
    'landscape.gif'
    """
    if picname is None:
        return self._bgpicname
    if picname not in self._bgpics:
        self._bgpics[picname] = self._image(picname)
    self._setbgpic(self._bgpic, self._bgpics[picname])
    self._bgpicname = picname
 
 
# coding: utf-8
import pygame
import os
import sys
from pygame.locals import *
 
os.chdir('E:/星空下的告白')
os.getcwd()
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load("星空之美.mp3")
# pygame.mixer.music.set_volume(0.4)
pygame.mixer.music.play()
bg_size = width, height = 300, 200
bg_rgb = (255, 255, 255)
screen1 = pygame.display.set_mode(bg_size)
pygame.display.set_caption("告白音樂")
clock = pygame.time.Clock()
pause_rect = pause_image.get_rect()
print(pause_rect.width, pause_rect.height)
pause_rect.left, pause_rect.top = (width - pause_rect.width) // 2, (height - pause_rect.height) // 2
from turtle import *
from random import random, randint
 
os.chdir('E:星空下的告白')
screen = Screen()
width, height = 900, 700
screen.setup(width, height)
screen.title("浪漫的流星雨")
screen.bgcolor("black")
screen.mode("logo")
screen.delay(0)
printer = Turtle()
printer.hideturtle()
printer.penup()
printer.color('red')
printer.goto(-100, -350)
printer.write("宇宙廣闊(弱水三千)""nn", move=True, align="left", font=("Italic", 30, "bold"))
printer.goto(-50, -400)
printer.write("只尋你一顆!(只取一瓢飲!)nn", move=True, align="left", font=("Italic", 30, "bold"))
t = Turtle(visible=False, shape='circle')
t.pencolor("white")
t.fillcolor("white")
t.penup()
t.setheading(-90)
t.goto(width / 2, randint(-height / 2, height / 2))
stars = []
for i in range(300):
    star = t.clone()
    s = random() / 3
    if s > 0.01 and s < 0.03:
        star.pencolor("black")
        star.fillcolor("black")
    elif s > 0.03 and s < 0.04:
        star.pencolor("lightcoral")
        star.fillcolor("lightcoral")
    elif s > 0.05 and s < 0.1:
        star.pencolor("green")
        star.fillcolor("green")
    elif s > 0.15 and s < 0.16:
        star.pencolor("yellow")
        star.fillcolor("yellow")
    elif s > 0.19 and s < 0.2:
        star.pencolor("red")
        star.fillcolor("red")
    elif s > 0.21 and s < 0.22:
        star.pencolor("purple")
        star.fillcolor("purple")
    elif s > 0.29 and s < 0.3:
        star.pencolor("darkorange")
        star.fillcolor("darkorange")
    elif s > 0.31 and s < 0.32:
        star.pencolor("red")
        star.fillcolor("yellow")
    elif s > 0.32 and s < 0.33:
        star.pencolor("yellow")
        star.fillcolor("white")
    star.shapesize(s, s)
    star.speed(int(s * 30))
    star.setx(width / 2 + randint(1, width))
    star.sety(randint(-height / 2, height / 2))
    # star.showturtle()
    stars.append(star)
i = 0
pause = False
while True:
    i += 0
    for star in stars:
 
        star.setx(star.xcor() - 3 * star.speed())
        if star.xcor() < -width / 2:
            star.hideturtle()
            star.setx(width / 2 + randint(1, width))
            star.sety(randint(-height / 2, height / 2))
            star.showturtle()
    if i >= 100:
        break
 
    # 查詢佇列事件
    for event in pygame.event.get():
        # 查詢點選關閉視窗事件
        if event.type == QUIT:
            sys.exit
        # 查詢滑鼠左右擊事件
        if event.type == MOUSEBUTTONDOWN:
            if event.button == 1:
                pause = not pause
            if event.button == 3:
                pause = not pause
 
        if event.type == KEYDOWN:
            if event.key == K_SPACE:
                pause = not pause
    screen1.fill(bg_rgb)
    if pause:
        pygame.mixer.music.pause()
        screen1.blit(pause_image, pause_rect)
    else:
        pygame.mixer.music.unpause()
        screen1.blit(play_image, pause_rect)
    pygame.display.flip()
    clock.tick(30)

到此這篇關於基於Python實現流星雨效果的繪製的文章就介紹到這了,更多相關Python流星雨內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com