重新格子game_day2
來自專欄我學python
今天完成兩個功能,一個是滑鼠懸浮的時候,靠近的線條變成綠色,移走滑鼠變回,一個是點擊線條的時候,線條變成紅色。
但是要注意的是,這兩個功能不能相互干擾,這個需要調試。
- 滑鼠懸浮功能
#1 mouse = pygame.mouse.get_pos() #2 xpos = int(math.ceil((mouse[0]-33.5)/67.0)) ypos = int(math.ceil((mouse[1]-33.5)/67.0)) #3 is_horizontal = abs(mouse[1] - ypos*67) < abs(mouse[0] - xpos*67) #4 ypos = ypos - 1 if mouse[1] - ypos*67 < 0 and not is_horizontal else ypos xpos = xpos - 1 if mouse[0] - xpos*67 < 0 and is_horizontal else xpos
#1 取得滑鼠坐標值
#2 #3 確定滑鼠離x,y軸哪個更近
#4 確定滑鼠點擊在哪個格子
#5 board=self.boardh if is_horizontal else self.boardv isoutofbounds=False#6 try: if not board[ypos][xpos]: self.screen.blit(self.hoverlineh if is_horizontal else self.hoverlinev, [xpos*67+3 if is_horizontal else xpos*67, ypos*67 if is_horizontal else ypos*67+3]) except: isoutofbounds=True pass
#5 為新變數board, isoutofbounds賦值
#6 主要代碼,在合適的位置畫出水平或垂直的懸浮線條,
try, except是為了防止滑鼠不在區域內導致程序錯誤,isoutofbounds是越出界面的標籤,if語句board[ypos][xpos]是排除已經點擊並擁有的線條。如果越出區域,則設置標籤,其它什麼都不做,保持程序運行。
#7 if not isoutofbounds: alreadyplaced=board[ypos][xpos] else: alreadyplaced=False #8 if pygame.mouse.get_pressed()[0] and not alreadyplaced and not isoutofbounds: if is_horizontal: self.boardh[ypos][xpos]=True else: self.boardv[ypos][xpos]=True
#7 在滑鼠沒有越出界或越出邊界的情況下,為alreadyplaced賦值
#8 如果滑鼠點擊,且該位置沒有被佔有,且沒有越出邊界時,設置boardh,boardv的值。
這樣,再次刷新時,self.drawBoard()語句中的else畫出了紅色線條,其它線條用默認的顏色。
- 得分面板
PyGame初始化字體pygame.font.init()後處理字體的三個步驟:
1 首先,你需要設置一個字體以及這個字體的大小。
#create font
myfont = pygame.font.SysFont(None, 32)
2 接下來,你調用font.render(「your text here」),使你輸入的文本以你設置的字體呈現。
#create text surface
label = myfont.render("Your Turn:", 1, (255,255,255))
3 然後,將這些字像圖片那樣繪製到遊戲的界面上。
#draw surface
self.screen.blit(label, (10, 400))
在這個遊戲里的步驟:
在pygame.init()的後面添加這行代碼:
pygame.font.init()
新建一個drawHUD()方法
#create fontmyfont = pygame.font.SysFont(None, 32)#create text surfacelabel = myfont.render("Your Turn:", 1, (255,255,255))#draw surfaceself.screen.blit(label, (10, 400))
將這行代碼添加到self.drawBoard()的後面:
self.drawHUD()
推薦閱讀:
※LOL英雄盲僧選擇哪種顏色打野刀好?
※星游視野:充分誘動多巴胺效應的關卡死亡機制
※對籽岷來說最初玩Minecraft的感受和其最大的魅力是什麼?
※紅塵很深,人世浮華,生命寶貴,活著就是勝利,賺錢只是遊戲
※現實版植物大戰殭屍是怎麼回事?