大學期間,我們學院開了一門叫做C語言的課程,當時的計算機環境的windowXP,外網不讓上,只能上校園網,硬盤三無狀態,無電影,無音樂,無游戲 ----除了掃雷。正所謂實勢造英雄,當時的C語言課造就了一大批掃雷高手,APM (每分鐘操作的次數,打過war3的都知道)驚人。牛人多了,自然要爭個高下,所以掃雷PK的也是時有發生,但是PK規則都是牛人輪流掃,看誰用的時間少。當時就琢磨著為那批牛人打造一個網絡版掃雷,一爭高下,哎····大學生就是喜歡想,不願意做!現在一步一步重構一個基於Socket的網絡版掃雷以懷念大學裡的好朋友們,並讓對網絡編程迷惑的新手們或者接觸很少朋友入門。
因為重點是Socket,為提取出核心,讓代碼更加直觀,所以登陸不做,游戲大廳不做(園子裡已經有人做了),游戲桌子不做,積分系統不做,所以數據庫也不用了,回歸最最原始的軟件------表現+邏輯!可能以後有空我會慢慢加入登陸,大廳或積分系統。
下面列出所有技術要點:
【1】掃雷算法;
【2】服務器的搭建;
【3】多線程編程,涉及跨線程訪問UI的問題,多線程調試問題,線程同步問題;
【4】生成雷的方案;
【5】掃雷客戶端之間通過服務器的通訊;
【6】服務器與觀察比賽的玩家間的通訊。
下面就分為多篇文章,一步一步完成。
【a】讓單擊版的掃雷跑起來
【b】 搭建世界上最簡陋的服務器
【c】 讓服務器與客戶端互相響應
【d】 讓服務器支持億萬玩家
【e】雷的生成方案
【f】掃雷在線PK,大功告成
【h】邊游戲邊聊天
【g】讓其他玩家可以觀看掃雷PK
【h】加入登陸功能
【i】加入積分功能
【j】加入游戲大廳
對網絡編程感興趣的朋友可以關注我的系列,大家也可以把掃雷網絡版的改成五子棋、象棋、連連看、撲克牌等網絡版的!