程式設計師式浪漫 Python 帶你看雪啦!

2021-09-05 09:20:32 字數 2734 閱讀 7732

暖爐溫酒配羊湯——今年冬至,你看雪了嗎?

作者 | ahab

責編 | 仲培藝

前段時間筆者寫了一篇題為《用 python 來一場人工造雪》的文章,但大家似乎都不滿足僅僅是乙個的雪花,都想來一場動態的人工降雪。於是便有了下面的內容:

一、具體介紹

二、**實現

因為使用 pygame 第一步要做的就是初始化:

import pygame

import random

#初始化

pygame.init()

載入背景圖同時根據背景圖的大小設定螢幕長寬:

size = (1000, 500)

screen = pygame.display.set_mode(size)

pygame.display.set_caption("下雪了")

#載入位圖

background = pygame.image.load('snow.jpg')

接下來我們要定義乙個雪花列表,且初始化雪花,這裡需要使用 random 隨機數設定 xy 軸的座標和速度。

random.randrange

random.randrange([start],stop[, step]):從指定範圍內,按指定基數遞增的集合中獲取乙個隨機數。

random.randint(a,b):用於生成乙個指定範圍內的整數。其中引數a是下限,引數b是上限,生成的隨機數n:a<=n<=b。

# 定義乙個雪花列表

snow =

# 初始化雪花

for i in range(300):

x = random.randrange(0, size[0])

y = random.randrange(0, size[1])

speedx = random.randint(-1, 2)

speedy = random.randint(3,8)

做過飛機大戰或者熟悉pygame的朋友應該知道接下來要做的就是設定遊戲迴圈,同時還將之前載入的背景圖進行了繪製。

su***ce物件有乙個名為blit()的方法,它可以繪製位圖

screen.blit(space, (0,0))

第乙個引數是載入完成的點陣圖,第二個引數是繪製的起始座標。

done = false

while not done:

# 訊息事件迴圈,判斷退出

for event in pygame.event.get():

if event.type == pygame.quit:

done = true

#繪製位圖

screen.blit(background, (0,0))

這一步是最重要的繪製雪花和設定雪花列表的迴圈。

繪製雪花使用的是pygame.draw 模組,此模組用於在su***ce上繪製一些簡單的圖形,比如點、直線、矩形、圓、弧等。我們繪製雪花用到的是:

pygame.draw.circle

原型:pygame.draw.circle(su***ce, color, pos, radius, width=0): return rect

用途:用於繪製圓形。第三個引數pos是圓心的位置座標,radius指定了圓的半徑。

width引數表示線條(畫筆)的寬度,如果該值設定為0,則表示填充整個圖形,我們的繪製的雪花就是使用填充白色。顏色引數通常是乙個rgb三元組(r, g, b)。

雪花列表迴圈主要取決於雪花列表的長度,同樣設定了移動雪花的位置,程式中還做了乙個判定雪花從頂端向下移動時如果落出螢幕,將會重設位置。

# 雪花列表迴圈

for i in range(len(snow)):

# 繪製雪花,顏色、位置、大小

pygame.draw.circle(screen, (255, 255, 255), snow[i][:2], snow[i][3])

# 移動雪花位置(下一次迴圈起效)

snow[i][0] += snow[i][2]

snow[i][1] += snow[i][3]

# 如果雪花落出螢幕,重設位置

if snow[i][1] > size[1]:

snow[i][1] = random.randrange(-50, -10)

snow[i][0] = random.randrange(0, size[0])

到這程式基本就寫完了,只需要新增重新整理螢幕的時間和遊戲退出語句就完事了。

pygame.display.flip()

clock.tick(20)

pygame.quit()

最後感謝【唐僧不愛八戒】提供 pygame.draw 這個思路

熱 文推 薦 

這才是程式設計師春運搶票的正確姿勢!

求求你,下次面試別再問我什麼是 spring aop 和**了!

facebook 真的「非死不可」嗎?

☞劉強東無罪!

☞漫畫:為什麼網際網路人收入高,卻這麼低調

☞ 從位元幣披薩到區塊鏈衛星,程式設計師真會玩兒!

☞中國程式設計師開發的神奇**:變數命名神器!

☞霸氣!女程媛徵男友的需求說明書!

程式設計師的浪漫

在人們的印象中,程式設計師的世界裡不是1就是0 在我們看來程式設計師大多都是死板的,沒有幽默感,也不會哄女孩子的,但是其實程式設計師也有屬於他們的浪漫,以下程式就是乙個程式漢子,為心愛的女神寫的乙份浪漫情書,希望女神妹妹能夠感動.if you love me you love me love lov...

程式設計師的浪漫

我和我女朋友已經談了快三年戀愛了,也吵過架但大多都是快樂的時刻,每次惹她生了氣都會道歉,然後承諾她乙個驚喜。這就是我所說的浪漫的由來!大學主要學的是j2ee的後台,對前端不是很擅長,但乙個偶然的機會發現了乙個叫hacker zhou的人寫的乙個紀念日的網頁,大為震撼。也就有了後來我自己的小 在這裡謝...

程式設計師的浪漫

love c語言 include include include加粗樣式 hwnd getconsolehwnd void void drawxy void draw double p void main 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdow...