有什么好的、令人兴奋的控制台程序可以由C++初学者编写?我正在寻找一些基本的C++技能可以完成但又有一定挑战性和非常令人兴奋的项目,这可以激励学生学习编程语言。
欢迎提出任何意见。
在我从事教学时,我曾经做过一个早期项目,那就是一个ATM机。
这个界面只有文字,功能包括取款、存款、查询余额、账户之间转账等基本操作。
这是一个很实用和现实的程序,而且大家都很熟悉,所以它不需要花费大量的编程时间。
其他类似的想法还可以是一个收银机(处理退款、优惠券、按磅计价的商品、销售税、商店特价等等),或者一个手机计费程序(将白天、晚上和周末的通话时间分开计算,单独计费短信、图片短信等)。
你觉得有一个能够从一副牌中生成一组扑克牌的系统如何?虽然定义明确,但确保没有重复卡牌等细节问题,使其成为一个很好的入门级挑战。
作为扩展,您可以让系统根据输入进行下注或弃牌,并有效地玩扑克游戏。
最后,一个好的设计将允许他们稍后切换控制台以获得GUI前端(例如中级课程)。
我总是喜欢那些有现实世界目的的问题。比如计算数学方程或素数范围之类的东西。我认为ProjectEuler上的很多内容都很不错。虽然并非每个人都喜欢数学(但对于计算机科学来说,它是一种必要的东西!)。
你可以制作 ASCII 动画,而不仅仅是在屏幕上打印。
新的编程学生通常会觉得图形程序最令人兴奋。
它不必非常高级,只要能够操作像素和其他东西就足以保持他们的兴趣。围绕SDL创建一个简单的图形类应该是可以的。也许可以做出这样的东西:
int main()
{
GraphicWindow graphic;
graphic.setPixel(10,20,GraphicWindow::Red);
graphic.idle();
}
然后你会布置任务,比如“实现一个drawRect函数”等。
或许可以提供一个月球着陆游戏的纯文本版本。你可以使用完整的ASCII艺术和动画(也许使用ncurses)作为高级练习,但即使是纯文本形式,它也很有趣。
我记得曾经在HP 67计算器上玩过这个游戏,只有七段显示器,但仍然很有趣。
我模糊地记得有一个版本可能是在ALTAIR 8800上运行的,用MITS/Microsoft BASIC编写,使用行的前面部分以ASCII艺术形式显示离地面的高度,并在右侧提示下一次的燃烧。
另一个传统选择是实现Hunt the Wumpus,或者对于雄心勃勃的人来说,是实现战舰游戏。