tft每日頭條

 > 遊戲

 > pygame 開發導航

pygame 開發導航

遊戲 更新时间:2024-09-13 08:33:15

作者:閑歡

來源: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 開發導航(程序員奶爸必修課)1

總結

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

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关遊戲资讯推荐

热门遊戲资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved