Presentation is loading. Please wait.

Presentation is loading. Please wait.

Python期末專案-推箱子 第十組 4103053041 資工三 康景翔 4103053008 資工三 王亭云.

Similar presentations


Presentation on theme: "Python期末專案-推箱子 第十組 4103053041 資工三 康景翔 4103053008 資工三 王亭云."— Presentation transcript:

1 Python期末專案-推箱子 第十組 資工三 康景翔 資工三 王亭云

2 Outline 題目 程式碼/實現方式 成果呈現

3 題目 :一個允許多人連線的推箱子 將箱子推到指定位置上 一旦箱子被移動到角落, 玩家沒有任何方法再移動這個被推到角落的箱子
目前看到的皆為單機版本 加入連線的元素讓好友可以一起同樂 加入不同角色使用不同能力增加樂趣

4 程式碼/實現方式 :Pygame 設計用來開發電子遊戲的跨平臺Python模組 適合設計2D遊戲 免費下載和安裝使用

5 程式碼/實現方式 :地圖載入 參考其他基本倉庫番的迷宮/地圖 使用串列存值,在依照不同值載入不同圖片 障礙物 目的地
箱子 參考其他基本倉庫番的迷宮/地圖 使用串列存值,在依照不同值載入不同圖片 surface.blit(圖片名稱,圖片位置) 設置圖片

6 程式碼/實現方式 :音樂 一般使用pygame.mixer.music播放MP3類型的音樂 //load載入test.mp3檔案
pygame.mixer.music.load('test.mp3') //play(-1)設定重複撥放 pygame.mixer.music.play(-1)

7 程式碼/實現方式 :鍵盤與滑鼠操作 pygame.event.get()接收鍵盤與滑鼠動作
for event in pygame.event.get(): if event.type ==QUIT: pygame.quit() sys.exit() if event.type==KEYDOWN: if event.key==K_LEFT: //左移 if event.key==K_RIGHT: //右移 if event.key==K_UP: //上移 if event.key==K_DOWN: //下移 if event.type==KEYUP: if event.key==K_LEFT: movex=0 if event.key==K_RIGHT: if event.key==K_UP: movey=0 if event.key==K_DOWN: if event.type == MOUSEBUTTONDOWN: //按鈕相關操作

8 程式碼/實現方式 :人物移動 使用當前人物座標以及即將移動到的位置座標判斷能否移動 x人物當前位置x座標 y人物當前位置y座標
movex KEYDOWN設置的移動x座標 movey KEYDOWN設置的移動y座標 canmove=0人可移動,預設為0 防止人物跑出視窗 箱子可以被推動 即將推動箱子判斷箱子後有無障礙物 往前走會撞壁

9 程式碼/實現方式 :箱子移動 箱子可被推動 判斷箱子是否會覆蓋目的地標誌 當前位置設為3標誌 箱子已經覆蓋標誌
箱子沒覆蓋標誌 推完箱子後將會覆蓋 箱子已經覆蓋標誌 推完箱子後也會覆蓋 當前位置設為3標誌 下一個位置設為5箱子+標誌 當前位置設為0一般可行走的區域 推完箱子後不會覆蓋 下一個位置設為2箱子 箱子沒有覆蓋標誌 推完箱子也不會覆蓋

10 程式碼/實現方式 :按鈕-reset 重新開始當前關卡 reset_num = reset_num – 1 //重新開始機會-1
if (stage == 1): stage1() elif (stage == 2): stage2() elif (stage == 3): stage3() else: stage4() 1.判斷當前的關卡 2.呼叫對應函數 3.陣列值設定為初始值

11 程式碼/實現方式 :按鈕-change 更換關卡 stage = random.randint(1,4) //隨機產生關卡
while curstage == stage: //當前關卡=隨機產生的關卡 stage = random.randint(1,4) if (stage == 1): stage1() elif (stage == 2): stage2() elif (stage == 3): stage3() else: stage4() curstage = stage //存取新的當前關卡 1.呼叫對應函數 2.陣列值設定為初始值

12 程式碼/實現方式 :按鈕-back 回到上一次箱子移動前的狀態 使用串列存取上一次箱子移動前的: 1.人的位置 2.普通箱子的位置
3. 箱子+標誌 4.被箱子蓋住的標誌的箱子的位置(無-1) 5.被箱子蓋住的一般道路的位置

13 程式碼/實現方式 :按鈕-back 在箱子移動時存取各位置 箱子目前覆蓋標誌,推完後也會覆蓋標誌

14 程式碼/實現方式 :按鈕-back 按下back按鈕後將值存回去 取出最後存入串列的值並將他從串列刪除 上一步是箱子的座標存回箱子代號
上一步是標誌的座標存回標誌

15 程式碼/實現方式 :Server_Socket-非阻塞

16 程式碼/實現方式 :Server_Socket-非阻塞

17 程式碼/實現方式 :Client_Socket-非阻塞

18 成果呈現-Demo


Download ppt "Python期末專案-推箱子 第十組 4103053041 資工三 康景翔 4103053008 資工三 王亭云."

Similar presentations


Ads by Google