适合C++初学者的有趣控制台程序

4
我正在教授一门入门级C++编程课程。我们只在课上使用iostream(没有GUI)。似乎学生们对于在控制台打印字符串和数字并不感到兴奋。(大多数学生甚至从未使用过控制台。)通过在控制台中显示字符串来激发或传达编程的兴趣是很困难的。
有什么好的、令人兴奋的控制台程序可以由C++初学者编写?我正在寻找一些基本的C++技能可以完成但又有一定挑战性和非常令人兴奋的项目,这可以激励学生学习编程语言。
欢迎提出任何意见。
11个回答

3
当我教本科生入门课程时,我们将游戏十五作为第三个编程作业,使用纯C语言实现。这个项目范围相当明确,并且是一个游戏,因此有一定的内在动机。

3

在我从事教学时,我曾经做过一个早期项目,那就是一个ATM机。

这个界面只有文字,功能包括取款、存款、查询余额、账户之间转账等基本操作。

这是一个很实用和现实的程序,而且大家都很熟悉,所以它不需要花费大量的编程时间。

其他类似的想法还可以是一个收银机(处理退款、优惠券、按磅计价的商品、销售税、商店特价等等),或者一个手机计费程序(将白天、晚上和周末的通话时间分开计算,单独计费短信、图片短信等)。


2

你觉得有一个能够从一副牌中生成一组扑克牌的系统如何?虽然定义明确,但确保没有重复卡牌等细节问题,使其成为一个很好的入门级挑战。

作为扩展,您可以让系统根据输入进行下注或弃牌,并有效地玩扑克游戏。

最后,一个好的设计将允许他们稍后切换控制台以获得GUI前端(例如中级课程)。


1

我总是喜欢那些有现实世界目的的问题。比如计算数学方程或素数范围之类的东西。我认为ProjectEuler上的很多内容都很不错。虽然并非每个人都喜欢数学(但对于计算机科学来说,它是一种必要的东西!)。


1

你可以制作 ASCII 动画,而不仅仅是在屏幕上打印。


1
我把代码弄丢了,但是我曾经用curses实现了一个水族馆,其中包括摇摆的植物和游动的鱼作为ASCII艺术动画。它在2400波特率拨号上运行非常流畅。 - RBerteig

1

向学生介绍管道和过滤器。创建一个有用的实用程序,从stdin获取数据并将其输出到stdout。创建另一个使用相同协议的实用程序来执行其他操作。创建第三个实用程序。演示这些实用程序如何强大地协同工作。

例如,创建GNU headtee实用程序的克隆版本,并可能添加一个名为cap的新实用程序,以大写字母。然后演示如何将文本文件的前3行大写并复制到文件和stdout中。接下来,演示如何在不改变任何代码的情况下使用相同的实用程序,获取文件的前5行并将大写字母输出到屏幕和原始字母输出到文件中。


0

新的编程学生通常会觉得图形程序最令人兴奋。

它不必非常高级,只要能够操作像素和其他东西就足以保持他们的兴趣。围绕SDL创建一个简单的图形类应该是可以的。也许可以做出这样的东西:

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

然后你会布置任务,比如“实现一个drawRect函数”等。


0
当我学习C++时,我们必须复制一个忒修斯和米诺陶洛斯的游戏。它非常适合通过在控制台输出多行来形成一些“图形化”的东西,并且很容易基于一组实现的规则。

0

我以前在控制台中编程过汉诺塔游戏,我觉得很有趣。它需要使用基本的数据结构、用户输入、检查游戏结束条件,所以我认为这对初学者来说是很好的。


0

或许可以提供一个月球着陆游戏的纯文本版本。你可以使用完整的ASCII艺术和动画(也许使用ncurses)作为高级练习,但即使是纯文本形式,它也很有趣。

我记得曾经在HP 67计算器上玩过这个游戏,只有七段显示器,但仍然很有趣。

我模糊地记得有一个版本可能是在ALTAIR 8800上运行的,用MITS/Microsoft BASIC编写,使用行的前面部分以ASCII艺术形式显示离地面的高度,并在右侧提示下一次的燃烧。

另一个传统选择是实现Hunt the Wumpus,或者对于雄心勃勃的人来说,是实现战舰游戏。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接