簡介
話不多說,我們先上一個遊戲的最終效果圖給大家看看:
沒錯,就是緊張刺激的捉迷藏小遊戲。
本課程的原始碼在 github.com/Zhao-666/Hi… 上面,童鞋們可以提前在自己的機器上執行遊戲,體驗一下游戲的感受,或者參考一下程式碼。
技術預備需要有如下幾點:
- 熟悉
PHP
基礎語法 - 使用過
CentOS
,懂得安裝PHP
開發環境 - 看過
Swoole
文件但缺乏專案經驗 - 瞭解
VueJs
基礎語法或有其他前端框架經驗 - 開發工具推薦使用
PHPStorm
專案使用瞭如下技術:
- PHP 7.2
- Swoole 4.3.0
- Swoole WebSocket Server
- Swoole Task Worker
- Swoole Static Handler
- Vuejs
- HTML WebSocket
- Redis String
- Redis List
- 少量演算法邏輯
實現了:
- 捉迷藏遊戲邏輯(邏輯) ★★
- 匹配機制(快取) ★
- 聯機對戰(網路程式設計、快取) ★★★★
- 遊戲結束判定(邏輯) ★
可擴充套件功能(比較懶就沒做):
- 當前線上人數:使用Redis Set儲存線上人員(快取) ★
- 排行榜:使用Redis SortSet(快取) ★
- 觀戰模式:在遊戲管理者Game中增加Watcher陣列,訂閱遊戲訊息(邏輯) ★★
- 邀請對戰:往被邀請人發一條訊息確認開戰(網路程式設計) ★★
- 多人模式:參與時不限制人數(網路程式設計) ★★★
- 隨機地圖生成:暫時只想到了多點隨機路線拼接(演算法) ★★★
- 優化地圖展示:手機適配(前端) ★★★★★★★★★★★★(這個真不會。。)
大綱
本次教程將會分為兩個部分。
- 第一部分佔用三章的幅度,主要講解遊戲邏輯的編寫,我們會先製作出一個單機版的服務端邏輯,讓電腦隨機行走測試程式碼有沒有問題。
- 第二部分佔用六章的幅度,這裡將會分為兩個主要功能,分別是:接入
Swoole
作為網路層和使用Vue
寫一個簡單的前端頁面,讓遊戲能夠滿足兩個玩家聯機對抗。當然,並不是直接就把服務端全部程式碼寫完,然後再跑去寫前端這麼粗暴,兩個部分的程式碼都是按照專案的開發流程一點一點往裡填。
課程最後只實現了上面寫的已實現功能,可擴充套件功能也列了幾項並附註了溫馨提示,相信學完後童鞋們自己就能實現可擴充套件功能啦。
本次課程的主要目的就是好玩,並且還能順便學習一下Swoole
、WebSocket
、Vue
的使用,希望童鞋們看完會有一絲收穫。
學習方法
大部分的程式碼編寫我都會預先把功能需求用文字羅列出來,再給出程式碼實現,像下面這樣:
- 這個類需要有XXX功能
- 這個類需要儲存XXX變數
- 這個類XXXXX
<?php
class XXXXX
{
private $xxx;
public function xxx()
{
}
}
複製程式碼
童鞋們儘量嘗試通過趙童鞋給出的需求自己動手編寫程式碼,而不是一上來就整段整段的複製,這樣學習效果會好很多,變數命名、方法命名不一樣是沒關係的,只要能夠滿足功能,當然,想不出的時候偷瞄一眼也是可以的๑乛◡乛๑。
在Github上程式碼有兩個分支,master分支為趙童鞋開發時的提交分支,teach分支為課程每章結束時提交的程式碼分支。為什麼會區分兩個分支呢?就像上面說的,實際專案開發的時候都是往一個大方向走,總有考慮不周的情況,所以程式碼就會刪刪減減的,用來教學就會前後程式碼不一樣。但是這樣的程式碼提交卻更加真實,有興趣的童鞋可以試著看看master分支。
下一章節開始正式學習,童鞋們準備好了嗎?