python小遊戲之-用pygame實現煙雨濛濛下彩虹雨

學習了一天的深度學習,略有疲憊,我們用pygame搞個小遊戲放鬆放鬆吧。今天我們的遊戲主體是煙雨濛濛下彩虹雨,彷彿置身江南水鄉。

遊戲描述

我們希望看到江南水鄉下起彩虹雨。這裏背景是江南水鄉,煙雨濛濛,雨滴顏色五顏六色,大小不一。

解決思路

煙雨濛濛彩虹雨的意思很明確,有幾個主要元素,那就是煙雨濛濛,彩虹雨滴,下雨幾個元素和動作。那麼,基本思路如下

  1. 找一張江南水鄉煙雨濛濛的圖片作爲背景
  2. 用圓圈代表雨滴,並把圓圈的大小,顏色進行隨機設置,出現五彩斑斕的效果。
  3. 下雨,即雨滴從上而下持續不斷的落下,這就需要pygame裏把圓圈放在不同的座標下繪製出來。

代碼實現

具體的實現代碼如下:

import pygame
import random
pygame.init()
#加載圖片
pic=pygame.image.load('raining.jpg')
#獲取圖片的長寬
screen_width=pic.get_width()
screen_height=pic.get_height()
#根據圖片大小來設置屏幕大小
screen=pygame.display.set_mode([screen_width,screen_height])
#設置彩虹雨的雨滴個數,顏色,位置,大小,落下的速度
numbers=50
colors=[0]*numbers
location_x=[0]*numbers
location_y=[0]*numbers
sizes=[0]*numbers
speed=[0]*numbers
#初始化彩虹雨滴
for i in range(numbers):
    colors[i]=(random.randint(0,255),random.randint(0,255),random.randint(0,255))
    location_x[i]=random.randint(0,screen_width)
    location_y[i]=-random.randint(0,screen_height)
    sizes[i]=random.randint(5,20)
    speed[i]=random.randint(1,5)

keep_going=True
#用Clock實現來控制動畫的速度
timer=pygame.time.Clock()

while keep_going:
    for event in pygame.event.get(): #監聽事件
        if event.type==pygame.QUIT:
            keep_going=False
    #把圖片繪製到屏幕
    screen.blit(pic,(0,0))
    for i in range(numbers):
        pygame.draw.circle(screen,colors[i],(location_x[i],location_y[i]),sizes[i]) #讓雨滴畫在屏幕上
        location_y[i]=location_y[i]+speed[i]                   #雨滴落下,y軸方向

        if location_y[i]>screen_height:                         #如果雨滴落到看不見,即超出屏幕的高度
            location_y[i]-=screen_height                        #重新設置雨滴的參數
            location_x[i]=random.randint(0,screen_width)
            speed[i] = random.randint(1, 5)
    timer.tick(100)# timer每秒鐘滴答100次,因此幀率爲100fps
    pygame.display.update()  #刷新屏幕

pygame.quit()

效果展示

運行可以看到下圖,還是有點那個意思的,靜靜地看着五彩斑斕的雨滴落下,一身的疲憊也減輕了不少。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章