掃雷艦
掃雷…是的,您記得當年在 Windows 95 上玩過的經典遊戲(事實上,直到 Windows 8 之前它一直在 Microsoft 的軟體更新中實現)。掃雷起源於 20 世紀 60 年代和 1970 年代最早的大型主機遊戲。掃雷最早的祖先是 Jerimac Ratliff's Cube。基本遊戲風格成為 20 世紀 80 年代益智遊戲類型的流行部分。
在這裡重溫您的掃雷歷史。
你知道什麼是真正的掃雷機嗎?在我讀到這篇文章之前我也沒有。
我記得我第一次接觸電腦是在 90 年代,經常玩這個遊戲,所以我想還有什麼比這個更好的遊戲呢?
我的版本
入門
在這裡玩遊戲!
基本遊戲玩法
- 選擇您的難度等級。
- 簡單 = 9x9,10 個地雷
- 中型 = 16x16,40 地雷
- 硬 = 30x30,160 個地雷
- 點擊板上的任意位置即可開始並啟動計時器。 *數字表示與任何給定單元格相鄰的地雷數量。
- 如果您認為某個儲存格是地雷,請使用「Shift + 按一下」在該儲存格中新增標記。
贏/輸
- 如果你碰到了地雷...遊戲就結束了,老兄。
- 揭開所有沒有地雷的牢房即可獲勝!
(明白了...我的...掃地機...?)
使用的技術
好老的三個朋友:
超文本標記語言
從原始程式碼可以看出,HTML 非常簡潔,因為大部分操作都發生在 JavaScript 中。更不用說,遊戲板本身只是一個簡單的桌子。
CSS
我很高興將其設計成 Windows '95 桌面視圖的舊外觀。我仍然想稍微修改一下它以使其完美(無法找到 MS 使用的確切字體)。
我對 CSS 的最大挑戰是確定表格樣式(邊框、td 大小等)
JavaScript
由於這是我第一次使用 JavaScript 編寫功能齊全的 Web 應用程序,因此這部分對我來說是該專案迄今為止最大的挑戰,這並不奇怪。
以下是一些亮點:
- 點選難度等級時動態調整表格大小
- 我創建了一個函數(當然在 Jim 的幫助下),它解析表上 ID 中的數字,將其轉換為 ${size} 變量,該變量基本上根據它獲取的數字附加行/列。這個概念讓我大吃一驚。
- 反過來,動態建立數組的數組以匹配可視表。
- 創建一個“Cell”類,我用它來創建單獨的“單元對象”,我為其分配了大量屬性:row#、col#、bomb t/f、相鄰炸彈的#(順便說一句,這本身就是另一個挑戰) ,顯示 t/f,並標記 t/f。
- 這種方法使編寫更簡潔的程式碼變得更加容易,而不必一遍又一遍地重複自己,並在類別上建立將為每個單元物件運行的方法。
- 建立一個顯示已過秒數的功能計時器。
- 在陣列上隨機放置炸彈。
- 渲染 DOM 中的所有內容。
- 將點擊處理程序指派給不同的事件。
- 創建贏/輸邏輯
- 弄清楚所有功能如何同步連結在一起的控制流程。
- 學習遞歸以及如何正確寫出產生這種效果的函數。
我的設計選擇
我決定採用 OG Windows '95 外觀。我堅信「模仿、同化、創新」。學習模型,因此對於我的第一個項目來說,我需要先走路,然後才能跑步並開始學習過程的模仿階段。
我很高興我選擇了這條道路,因為我透過嘗試匹配原始遊戲的風格學到了很多東西。
話雖如此,我肯定很快就會創建一個現代化版本。
下一步!
這個項目對我來說真的很有趣。我計劃繼續完善它,並回顧未來幾年學到的許多經驗教訓。
- 就像我之前提到的,我很想製作一個“顯示切換”,將 CSS 翻轉為現代化、乾淨、扁平、簡約的 UI。
- 有一些愚蠢的小美學錯誤讓我抓狂,例如當板子完全暴露時,單元格寬度/高度如何調整幾個像素。我需要解決這個問題。
- 我還想進一步充實 Windows '95 的內容,讓「開始」按鈕執行某些操作,在右下角添加一個時鐘,以及一些功能性桌面圖示。
- 我想要解決的一個非常困難的功能是創建一個功能,用戶可以透過輸入數字(行/列/礦號)來選擇難度。
這將是為了一個下雨天。
感謝您的閱讀!我希望你喜歡這個遊戲:)