我在教一個入門級的C++編程課。我們只在課堂上使用iostream(無GUI)。似乎學生們並不興奮地將字符串和數字打印到他們的控制檯。 (大多數學生甚至以前從未使用控制檯。)通過在控制檯中顯示字符串很難激發或傳達編程的興奮。C++初學者有趣的控制檯程序
什麼是一個好的和令人興奮的控制檯程序,可以由C++初學者編寫?我正在尋找一些基本的C++技能可行的+有點具有挑戰性的+非常令人興奮的,這可以激勵學生學習編程語言。
任何意見將不勝感激。
我在教一個入門級的C++編程課。我們只在課堂上使用iostream(無GUI)。似乎學生們並不興奮地將字符串和數字打印到他們的控制檯。 (大多數學生甚至以前從未使用控制檯。)通過在控制檯中顯示字符串很難激發或傳達編程的興奮。C++初學者有趣的控制檯程序
什麼是一個好的和令人興奮的控制檯程序,可以由C++初學者編寫?我正在尋找一些基本的C++技能可行的+有點具有挑戰性的+非常令人興奮的,這可以激勵學生學習編程語言。
任何意見將不勝感激。
當我教一個本科生的介紹課程時,我們做了直接C的Game of Fifteen作爲第三個家庭作業項目。它的範圍很廣,而且是一款遊戲,所以這裏有一些固有的動機。
我總是喜歡有這樣做的真實世界目的的問題。就像計算一個數學方程或一系列素數一樣。我認爲,ProjectEuler上的很多內容都會很好。並不是每個人都喜歡數學(但是再一次,這對計算機科學來說是必要的!)。
當我拿C++時,我們不得不復制Theseus和Minotaur遊戲。它非常適合輸出多行到控制檯來形成「圖形」的東西,它很容易基於一組實施的規則。
我不得不在遊戲機中編程一個Tower of Hanoi遊戲之前,我發現這很有趣。它需要使用基本的數據結構,用戶輸入,檢查遊戲結束條件,因此對於我相信的初學者來說這將是一件好事。
新編程的學生通常會發現圖形程序是最令人興奮的。它不必是任何真正先進的東西,只是能夠操縱像素和東西應該足以讓他們感興趣。圍繞SDL製作簡單的圖形課程應該沒問題。也許是這樣的:
int main()
{
GraphicWindow graphic;
graphic.setPixel(10,20,GraphicWindow::Red);
graphic.idle();
}
然後你給了像「實施的drawRect函數」分配等
怎麼樣從一副撲克牌中生成一組撲克手的一個系統?雖然有明確的定義,但確保沒有重複的卡片等複雜性,使其成爲一個很好的入門級挑戰。
作爲一個擴展,您可以讓系統就是否要下注或棄牌以及有效玩撲克遊戲進行輸入。最後,一個好的設計將允許他們稍後在gui前端切換控制檯(例如中級課程)。
而不是隻是打印到屏幕上,你可以做ascii動畫。
回到我講授的時候,我做了一個早期的項目是一臺ATM機。
純文本界面,與基本操作一樣退出,存款,查詢餘額,賬戶之間轉移等
那件事,大家都已經非常熟悉,它沒有考慮的編程大量時間,但它的確幫助學生認爲這是一個實際而現實的計劃。
其他類似的想法可能是現金登記(手續費退款,優惠券,以英鎊定價的物品,銷售稅,商店特價等)或手機計費計劃(單獨的白天,晚上,和週末分鐘,賬單短信,分開的圖片信息等)。
也許是Lunar Lander game的文本版本。您可以將完整的ASCII藝術和動畫(可能帶有ncurses)作爲高級練習,但即使是純文本形式,也可能很有趣。
我記得玩的是HP 67計算器上運行的版本,只有七段顯示器可供使用。
我隱約記得一個版本可能運行在MITS/Microsoft BASIC中的ALTAIR 8800上,該版本使用該行的前導部分來顯示高於地面的高度作爲ASCII藝術,並提示您在右側刻錄下一個刻度。
另一個傳統的選擇是實施Hunt the Wumpus,或爲野心勃勃的戰列艦。
我的第一個編程課有一個關於實施(減少)壟斷遊戲的漫長作業。
您可以使用電路板鏈接列表。 您可以對棋盤圖塊使用「繼承」。 你需要一些邏輯來處理玩家輪流。
這可能是我在CS中完成的第一個項目,我可以與我的非技術朋友討論併產生一些興趣。
我已經在某處丟失了代碼,但是我曾經使用詛咒來繪製圖形,實現了一個帶有揮動植物和游泳魚作爲ASCII藝術動畫的水族館。它在2400波特率撥號上運行得非常好。 – RBerteig 2010-09-03 23:30:37