Presentation is loading. Please wait.

Presentation is loading. Please wait.

Snake Battle 指導教授: 曾學文 組員: 鄭涵德 趙一驎

Similar presentations


Presentation on theme: "Snake Battle 指導教授: 曾學文 組員: 鄭涵德 趙一驎"— Presentation transcript:

1 Snake Battle 指導教授: 曾學文 組員: 4102056035 鄭涵德 4102053027 趙一驎
Python期末專題 Snake Battle 指導教授: 曾學文 組員: 鄭涵德 趙一驎

2 Outline 專題目標 遊戲操作 遊戲規則 實作方法 細部解說 遊戲畫面

3 專題目標 實作經典貪食蛇遊戲 雙人對戰遊戲 簡單好玩

4 遊戲操作 玩家1 : 鍵盤 上下左右+右邊的 shift 鍵 玩家2 : 鍵盤 w s a d + 左邊的 shift 鍵

5 遊戲規則 速度等級 速度等級隨時間每30秒提升一階 按住 shift 按鍵可以加速,但會消耗分數 四種飼料
綠色(+10)、黃色(+15)、紅色(+20) 飼料,維持畫面上各一顆 紫色飼料,每次速度等級提升畫面上出現一顆 若身體長度 > 6,減短身長5,不獲得分數 若身體長度 < 6,獲得分數(+40) 每種飼料都還是會造成身體長度 + 1 勝負 最先達到目標分數者 另一方撞到牆壁或身體

6 實作方法 資料結構 方格背景 => 二維陣列,存放顏色 蛇的身體 => 一維陣列,存放座標 蛇頭、蛇尾=> 索引變數
方格背景 => 二維陣列,存放顏色 蛇的身體 => 一維陣列,存放座標 蛇頭、蛇尾=> 索引變數 移動輸入 => 長度為3的佇列 工具 thread => 更新二維陣列 pygame => 繪圖、接收輸入 lock => 更新陣列時的衝突避免 time => 計時

7 視窗架構 視窗 : Window = pygame.display.set_mode(( 視窗寬 ,視窗高 ))
幀數 : pygame.time.Clock().tick( 幀數 ) 底色 : Window.fill(背景色) 格線 : pygame.draw.line(視窗, 顏色 , 起點座標 , 終點座標 ) 標籤 : Label = font.render( 字串 , 1, 顏色 ) Window.blit( Label , 座標 ) 圖案 : 方 : pygame.draw.rect( Window , 顏色 , 座標) <用於蛇體> 圓 : pygame.draw.circle( Window , 顏色 , 座標) <用於飼料>

8 GRID 二維陣列承現蛇身與飼料

9 飼料機制 維持畫面上各一顆 隨機出現 綠色(+10)、黃色(+15)、紅色(+20) 紫色飼料 每次速度等級提升畫面上出現一顆
若身體長度 > 6,減短身長5,不加分 若身體長度 < 6,獲得分數(+40) 每種飼料都還是會造成身體長度 + 1

10 按鍵handlerEvent架構 pygame.event.get() pygame.key.get_pressed() 蛇速加速
event.type KEYDOWN pygame.K_RSHIFT 蛇身控制 Player1 : ↑ ↓ ← → Player2 : W A S D pygame.K_RSHIFT

11 加速

12 判定勝負 最先達到目標分數者 另一方撞到牆壁或身體

13 遊戲畫面


Download ppt "Snake Battle 指導教授: 曾學文 組員: 鄭涵德 趙一驎"

Similar presentations


Ads by Google