2010-09-03 24 views
3

我在教一個入門級的C++編程課。我們只在課堂上使用iostream(無GUI)。似乎學生們並不興奮地將字符串和數字打印到他們的控制檯。 (大多數學生甚至以前從未使用控制檯。)通過在控制檯中顯示字符串很難激發或傳達編程的興奮。C++初學者有趣的控制檯程序

什麼是一個好的和令人興奮的控制檯程序,可以由C++初學者編寫?我正在尋找一些基本的C++技能可行的+有點具有挑戰性的+非常令人興奮的,這可以激勵學生學習編程語言。

任何意見將不勝感激。

回答

2

當我教一個本科生的介紹課程時,我們做了直接C的Game of Fifteen作爲第三個家庭作業項目。它的範圍很廣,而且是一款遊戲,所以這裏有一些固有的動機。

1

我總是喜歡有這樣做的真實世界目的的問題。就像計算一個數學方程或一系列素數一樣。我認爲,ProjectEuler上的很多內容都會很好。並不是每個人都喜歡數學(但是再一次,這對計算機科學來說是必要的!)。

0

當我拿C++時,我們不得不復制Theseus和Minotaur遊戲。它非常適合輸出多行到控制檯來形成「圖形」的東西,它很容易基於一組實施的規則。

0

我不得不在遊戲機中編程一個Tower of Hanoi遊戲之前,我發現這很有趣。它需要使用基本的數據結構,用戶輸入,檢查遊戲結束條件,因此對於我相信的初學者來說這將是一件好事。

0

新編程的學生通常會發現圖形程序是最令人興奮的。它不必是任何真正先進的東西,只是能夠操縱像素和東西應該足以讓他們感興趣。圍繞SDL製作簡單的圖形課程應該沒問題。也許是這樣的:

int main() 
{ 
    GraphicWindow graphic; 
    graphic.setPixel(10,20,GraphicWindow::Red); 
    graphic.idle(); 
} 

然後你給了像「實施的drawRect函數」分配等

2

怎麼樣從一副撲克牌中生成一組撲克手的一個系統?雖然有明確的定義,但確保沒有重複的卡片等複雜性,使其成爲一個很好的入門級挑戰。

作爲一個擴展,您可以讓系統就是否要下注或棄牌以及有效玩撲克遊戲進行輸入。最後,一個好的設計將允許他們稍後在gui前端切換控制檯(例如中級課程)。

1

而不是隻是打印到屏幕上,你可以做ascii動畫。

+1

我已經在某處丟失了代碼,但是我曾經使用詛咒來繪製圖形,實現了一個帶有揮動植物和游泳魚作爲ASCII藝術動畫的水族館。它在2400波特率撥號上運行得非常好。 – RBerteig 2010-09-03 23:30:37

1

將您的學生介紹給管道和過濾器。創建一個有用的實用程序,它從stdin獲取數據並將其輸出導向stdout。創建另一個實用程序,使用相同的協議執行其他操作。創建第三個實用程序。演示公用事業公司如何協同工作。

例如,創建一個GNU headtee實用程序的克隆,並且可能會添加一個名爲cap的新實用程序,它將字母大寫。然後演示如何獲取文本文件的前三行,並將其大寫並設置爲文件和標準輸出。接下來,演示如何在不更改單行代碼的情況下使用相同的實用程序,獲取文件的前5行並將大寫字母輸出到屏幕,並將原始字母輸出到文件中。

3

回到我講授的時候,我做了一個早期的項目是一臺ATM機。

純文本界面,與基本操作一樣退出,存款,查詢餘額,賬戶之間轉移等

那件事,大家都已經非常熟悉,它沒有考慮的編程大量時間,但它的確幫助學生認爲這是一個實際而現實的計劃。

其他類似的想法可能是現金登記(手續費退款,優惠券,以英鎊定價的物品,銷售稅,商店特價等)或手機計費計劃(單獨的白天,晚上,和週末分鐘,賬單短信,分開的圖片信息等)。

0

也許是Lunar Lander game的文本版本。您可以將完整的ASCII藝術和動畫(可能帶有ncurses)作爲高級練習,但即使是純文本形式,也可能很有趣。

我記得玩的是HP 67計算器上運行的版本,只有七段顯示器可供使用。

我隱約記得一個版本可能運行在MITS/Microsoft BASIC中的ALTAIR 8800上,該版本使用該行的前導部分來顯示高於地面的高度作爲ASCII藝術,並提示您在右側刻錄下一個刻度。

另一個傳統的選擇是實施Hunt the Wumpus,或爲野心勃勃的戰列艦。

0

我的第一個編程課有一個關於實施(減少)壟斷遊戲的漫長作業。

您可以使用電路板鏈接列表。 您可以對棋盤圖塊使用「繼承」。 你需要一些邏輯來處理玩家輪流。

這可能是我在CS中完成的第一個項目,我可以與我的非技術朋友討論併產生一些興趣。