作者:閑歡
來源: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,儲備一些有意思的小遊戲給未來的兒子玩,以彰顯技術人的優勢,此處應有喝彩!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!