熱線電話:13121318867

登錄
首頁精彩閱讀程序員奶爸必修課——用 pygame 寫小游戲
程序員奶爸必修課——用 pygame 寫小游戲
2021-11-04
收藏

作者:閑歡

來源:Python 技術

周末在家沒事,大哥和嫂子要出去 happy,于是將他的兒子丟到我家,讓我當奶爸陪玩一下。為了讓這磨人的小妖精消停會,我好安靜地打盤王者,我靈機一動,準備寫個簡單的小游戲給他玩一會。

思路

對于這種三歲小孩,他們不需要復雜操作的游戲,而是要傻瓜式的,并且界面帶有色彩的最好。并且寫這個小游戲不能占用我太多時間,不然得不償失!

基于這樣的思路,我想起了以前在哪里看過的一個小游戲————七彩同心圓。它的玩法就是每次點擊鼠標時,會以鼠標為圓心畫一個圓,然后在這個圓的基礎上不斷向外擴展圓(類似于水波浪的擴散),從而形成一個同心圓,并達到隨機大小后停止擴展,其中每個同心圓的顏色都是隨機的。

這個小游戲正好滿足目前的場景,于是我擼起袖子準備三下五除二式地實現它,為我的王者之路爭取時間!

實現

首先,我需要初始化各種變量:

pygame.init() screen = pygame.display.set_mode([600, 400]) screen.fill((255, 255, 255)) # 圓的半徑 radius = [0] * 10 # 圓的半徑增量 circleDelt = [0] * 10 # 圓是否存在,False代表該索引值下的圓不存在,True代表存在 circleExists = [False] * 10 # 圓的坐標x軸 circleX = [0] * 10 # 圓的坐標y軸 circleY = [0] * 10 # 顏色RGB值 RGBx = [0] * 10 RGBy = [0] * 10 RGBz = [0] * 10 

接著我需要監聽鼠標事件,監聽到之后,根據鼠標的位置畫一個初始化的圓:

# 鼠標按下 if event.type == pygame.MOUSEBUTTONDOWN: # 獲取圓不存在的索引 num = circleExists.index(False) # 將該索引值的圓設置為存在 circleExists[num] = True # 圓的半徑設置為0 radius[num] = 0 # 獲取鼠標坐標 circleX[num], circleY[num] = pygame.mouse.get_pos() # 隨機獲取顏色值 RGBx[num] = random.randint(0, 255) RGBy[num] = random.randint(0, 255) RGBz[num] = random.randint(0, 255) # 畫圓 pygame.draw.circle(screen, pygame.Color(RGBx[num], RGBy[num], RGBz[num]), (circleX[num], circleY[num]), radius[num], 1) if event.type == pygame.QUIT: pygame.quit() sys.exit() 

畫了圓之后,我需要讓它隨機擴展出同心圓,這個同心圓需要一圈一圈地畫:

for i in range(10): # 圓不存在則跳過循環 if not circleExists[i]: pass else: # 隨機圓的大小 if radius[i] < random.randint(10, 50): # 圓的隨機半徑增量 circleDelt[i] = random.randint(0, 5) radius[i] += circleDelt[i] # 畫圓 pygame.draw.circle(screen, pygame.Color(RGBx[i], RGBy[i], RGBz[i]), (circleX[i], circleY[i]), radius[i], 1) else: #若圓已達到最大,這將該索引值的圓設置為不存在 circleExists[i] = False 

最終的效果是這樣子的:

程序員奶爸必修課——用 pygame 寫小游戲

總結

雖然我還不是奶爸,但是我感覺我需要多琢磨琢磨 pygame,儲備一些有意思的小游戲給未來的兒子玩,以彰顯技術人的優勢,此處應有喝彩!

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢