Python期末專案-推箱子 第十組 4103053041 資工三 康景翔 4103053008 資工三 王亭云
Outline 題目 程式碼/實現方式 成果呈現
題目 :一個允許多人連線的推箱子 將箱子推到指定位置上 一旦箱子被移動到角落, 玩家沒有任何方法再移動這個被推到角落的箱子 目前看到的皆為單機版本 加入連線的元素讓好友可以一起同樂 加入不同角色使用不同能力增加樂趣
程式碼/實現方式 :Pygame 設計用來開發電子遊戲的跨平臺Python模組 適合設計2D遊戲 免費下載和安裝使用
程式碼/實現方式 :地圖載入 參考其他基本倉庫番的迷宮/地圖 使用串列存值,在依照不同值載入不同圖片 障礙物 目的地 箱子 參考其他基本倉庫番的迷宮/地圖 使用串列存值,在依照不同值載入不同圖片 surface.blit(圖片名稱,圖片位置) 設置圖片
程式碼/實現方式 :音樂 一般使用pygame.mixer.music播放MP3類型的音樂 //load載入test.mp3檔案 pygame.mixer.music.load('test.mp3') //play(-1)設定重複撥放 pygame.mixer.music.play(-1)
程式碼/實現方式 :鍵盤與滑鼠操作 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: //按鈕相關操作
程式碼/實現方式 :人物移動 使用當前人物座標以及即將移動到的位置座標判斷能否移動 x人物當前位置x座標 y人物當前位置y座標 movex KEYDOWN設置的移動x座標 movey KEYDOWN設置的移動y座標 canmove=0人可移動,預設為0 防止人物跑出視窗 箱子可以被推動 即將推動箱子判斷箱子後有無障礙物 往前走會撞壁
程式碼/實現方式 :箱子移動 箱子可被推動 判斷箱子是否會覆蓋目的地標誌 當前位置設為3標誌 箱子已經覆蓋標誌 箱子沒覆蓋標誌 推完箱子後將會覆蓋 箱子已經覆蓋標誌 推完箱子後也會覆蓋 當前位置設為3標誌 下一個位置設為5箱子+標誌 當前位置設為0一般可行走的區域 推完箱子後不會覆蓋 下一個位置設為2箱子 箱子沒有覆蓋標誌 推完箱子也不會覆蓋
程式碼/實現方式 :按鈕-reset 重新開始當前關卡 reset_num = reset_num – 1 //重新開始機會-1 if (stage == 1): stage1() elif (stage == 2): stage2() elif (stage == 3): stage3() else: stage4() 1.判斷當前的關卡 2.呼叫對應函數 3.陣列值設定為初始值
程式碼/實現方式 :按鈕-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.陣列值設定為初始值
程式碼/實現方式 :按鈕-back 回到上一次箱子移動前的狀態 使用串列存取上一次箱子移動前的: 1.人的位置 2.普通箱子的位置 3. 箱子+標誌 4.被箱子蓋住的標誌的箱子的位置(無-1) 5.被箱子蓋住的一般道路的位置
程式碼/實現方式 :按鈕-back 在箱子移動時存取各位置 箱子目前覆蓋標誌,推完後也會覆蓋標誌
程式碼/實現方式 :按鈕-back 按下back按鈕後將值存回去 取出最後存入串列的值並將他從串列刪除 上一步是箱子的座標存回箱子代號 上一步是標誌的座標存回標誌 …
程式碼/實現方式 :Server_Socket-非阻塞
程式碼/實現方式 :Server_Socket-非阻塞
程式碼/實現方式 :Client_Socket-非阻塞
成果呈現-Demo