重新格子game_day2

重新格子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的感受和其最大的魅力是什麼?
紅塵很深,人世浮華,生命寶貴,活著就是勝利,賺錢只是遊戲
現實版植物大戰殭屍是怎麼回事?

TAG:遊戲 | 遊戲設計 | 遊戲開發 |