2003 Spring C++ 程式作業四:
貪食蛇 C++ 及視窗介面版

作業內容概述

這個作業基本上是延續第一個作業, 原先的作業大家用程序化的 C 來設計, 並且用文字作為介面, 在這個作業裡希望大家將原來的貪食蛇程式改為物件化的設計, 原先程式中的貪食蛇, 迷宮, 食物, 計分版都只是資料的組合, 並沒有很清楚的物件邊界與介面, 在這個作業裡希望你能夠把這些物件刻劃出來。

為了讓你能夠進一步地體會物件的好處, 我也準備了一個簡單的圖形介面, 希望你能夠把你的物件結合到這個圖形介面上, 並且運用繼承的概念來整合整個系統。

這個作業的完成圖應該類似


這個程式希望大家能夠練習下列:

  1. 物件的設計 (介面與封裝)

  2. 介面類別的繼承

  3. 整合已經設計好的 MFC UI 類別

  4. 請注意記憶體的配置與釋放

  5. 雖然沒有強迫你去應用多型, 但是在這個應用程式 裡有很多多型的範例, 希望你去找一下。

MFC UI 範例程式

  1. 請下載 snakeMFC920527.rar, 解壓縮

  2. 執行檔 snake.exe 為範例程式 (建議自己先編譯過, 有些系統上直接執行會有問題)

  3. 請嘗試直接在 VC 6.0 中編譯 snake.dsw

  4. 打開這個 project, 此程式裡包括:

基礎要求

以下的要求為嚴格的要求, 如果不符合的話請不要繳交過來

  1. 請不要用全域 (global) 的變數

  2. 類別內請不要用 public 的資料成員

  3. 請用 new/delete, new[]/delete[] 取代 free/malloc

  4. 請盡量以 const reference 傳遞函式的參數

  5. 請以 MFC debugger 的功能自行檢查是否有 memory leakage

進一步增加程式功能:

以下僅為建議功能, 所有增加的功能請在書面報告中註明以便評分參考

  1. 多個食物

  2. 食物可以是另一條蛇, 自行定義如何才能吃掉它

  3. 其它你自己想到的功能

注意:

Matin Fowler 在 Refactoring 一書中提到

程式碼的臭味有下列: