這篇文章主要介紹了python制作超炫流星雨表白,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲,下面讓小編帶著大家一起了解一下。
hello,大家好,我是wangzirui32,今天我們來學(xué)習(xí)如何用Pygame制作一場漂亮的流星雨。
開始學(xué)習(xí)吧!
文章目錄
- 前言
- 1. 素材圖片
- 2. 項(xiàng)目結(jié)構(gòu)
- 3. 編寫代碼
-
- 3.1 Star類
- 3.2 主項(xiàng)目demo.py
- 4. 效果展示
- 寫在最后
前言
最近幾乎沒有比較大型的流星雨可以欣賞,當(dāng)我正在家里“愁眉不展”時(shí),我看到了Python神碼ai火車頭標(biāo)題偽原創(chuàng)。于是,就想用Python模擬一場流星雨,妙~?。?/p>
1. 素材圖片
完成這個(gè)程序,你需要一張?jiān)铝翀D片:
moon.jpg和筆者畫的一顆小星星:
star.png
2. 項(xiàng)目結(jié)構(gòu)
結(jié)構(gòu)如下:
demo/
star.py
demo.py
star.png
moon.jpg
其中,star.py文件主要存放Star類,這個(gè)類要處理星星移動等操作,demo.py是項(xiàng)目的主文件,我們將在這里編寫窗口代碼,至于star.png和moon.jpg可以自行導(dǎo)入上面的素材。
3. 編寫代碼
3.1 Star類
打開star.py,輸入以下代碼:
# -*- coding: utf-8 -*-
import pygame
import random
class Star(pygame.sprite.Sprite):
def __init__(self, screen, width, height):
super(Star, self).__init__() # 繼承精靈類
self.screen = screen
# 加載圖片并獲取rect矩形
self.image = pygame.image.load("star.png")
self.rect = self.image.get_rect()
self.screen_width = width
self.screen_height = height
# 設(shè)置初始位置 使用隨機(jī)數(shù)生成
self.rect.x = random.randint(0, width)
self.rect.y = random.randint(0, height)
def blit(self): # 繪制星星
self.screen.blit(self.image, self.rect)
def update(self):
if self.rect.top > self.screen_height: # 監(jiān)測有沒有超出屏幕
self.kill()
elif self.rect.left > self.screen_width:
self.kill()
else: # 移動位置
self.rect.x += 1
self.rect.y += 1
3.2 主項(xiàng)目demo.py
代碼:
# -*- coding: utf-8 -*-
import star
import pygame
import sys
pygame.init()
width, height = 690, 517
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("流星雨")
# 加載背景圖片
background = pygame.image.load("moon.jpg")
# stars精靈組
stars = pygame.sprite.Group()
rates = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# 繪制背景
screen.blit(background, (0, 0))
# 對stars精靈組進(jìn)行更新和繪制
stars.update()
stars.draw(screen)
if rates % 20 == 0:
# 添加一個(gè)星星
stars.add(star.Star(screen, width, height))
rates += 1
pygame.display.update()
4. 效果展示
如圖:
寫在最后
這個(gè)程序你還可以拓展,可以設(shè)置rates變量的值,使其星星的生成頻率變高,也可以使用 pygame.transform.rotate(旋轉(zhuǎn)圖片, 旋轉(zhuǎn)度數(shù)) 函數(shù)對星星圖片進(jìn)行旋轉(zhuǎn)(Tips:如果電腦配置不高,建議不要嘗試,因?yàn)轱@卡的香味是會讓你“垂涎三尺”)。文章來源:http://www.zghlxwxcb.cn/news/detail-715637.html
好了,今天的課程就到這里,我是wangzirui32,我們下次再見!拜拜!文章來源地址http://www.zghlxwxcb.cn/news/detail-715637.html
hello,大家好,我是wangzirui32,今天我們來學(xué)習(xí)如何用Pygame制作一場漂亮的流星雨。
開始學(xué)習(xí)吧!
文章目錄
- 前言
- 1. 素材圖片
- 2. 項(xiàng)目結(jié)構(gòu)
- 3. 編寫代碼
-
- 3.1 Star類
- 3.2 主項(xiàng)目demo.py
- 4. 效果展示
- 寫在最后
前言
最近幾乎沒有比較大型的流星雨可以欣賞,當(dāng)我正在家里“愁眉不展”時(shí),我看到了Python神碼ai火車頭標(biāo)題偽原創(chuàng)。于是,就想用Python模擬一場流星雨,妙~啊!
1. 素材圖片
完成這個(gè)程序,你需要一張?jiān)铝翀D片:
moon.jpg和筆者畫的一顆小星星:
star.png
2. 項(xiàng)目結(jié)構(gòu)
結(jié)構(gòu)如下:
demo/
star.py
demo.py
star.png
moon.jpg
其中,star.py文件主要存放Star類,這個(gè)類要處理星星移動等操作,demo.py是項(xiàng)目的主文件,我們將在這里編寫窗口代碼,至于star.png和moon.jpg可以自行導(dǎo)入上面的素材。
3. 編寫代碼
3.1 Star類
打開star.py,輸入以下代碼:
# -*- coding: utf-8 -*-
import pygame
import random
class Star(pygame.sprite.Sprite):
def __init__(self, screen, width, height):
super(Star, self).__init__() # 繼承精靈類
self.screen = screen
# 加載圖片并獲取rect矩形
self.image = pygame.image.load("star.png")
self.rect = self.image.get_rect()
self.screen_width = width
self.screen_height = height
# 設(shè)置初始位置 使用隨機(jī)數(shù)生成
self.rect.x = random.randint(0, width)
self.rect.y = random.randint(0, height)
def blit(self): # 繪制星星
self.screen.blit(self.image, self.rect)
def update(self):
if self.rect.top > self.screen_height: # 監(jiān)測有沒有超出屏幕
self.kill()
elif self.rect.left > self.screen_width:
self.kill()
else: # 移動位置
self.rect.x += 1
self.rect.y += 1
3.2 主項(xiàng)目demo.py
代碼:
# -*- coding: utf-8 -*-
import star
import pygame
import sys
pygame.init()
width, height = 690, 517
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("流星雨")
# 加載背景圖片
background = pygame.image.load("moon.jpg")
# stars精靈組
stars = pygame.sprite.Group()
rates = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# 繪制背景
screen.blit(background, (0, 0))
# 對stars精靈組進(jìn)行更新和繪制
stars.update()
stars.draw(screen)
if rates % 20 == 0:
# 添加一個(gè)星星
stars.add(star.Star(screen, width, height))
rates += 1
pygame.display.update()
4. 效果展示
如圖:
寫在最后
這個(gè)程序你還可以拓展,可以設(shè)置rates變量的值,使其星星的生成頻率變高,也可以使用 pygame.transform.rotate(旋轉(zhuǎn)圖片, 旋轉(zhuǎn)度數(shù)) 函數(shù)對星星圖片進(jìn)行旋轉(zhuǎn)(Tips:如果電腦配置不高,建議不要嘗試,因?yàn)轱@卡的香味是會讓你“垂涎三尺”)。
好了,今天的課程就到這里,我是wangzirui32,我們下次再見!拜拜!
到了這里,關(guān)于python制作超炫流星雨表白,html寫流星雨(完整代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!