【问题标题】:Interesting Console Program for C++ beginners适合 C++ 初学者的有趣控制台程序
【发布时间】:2010-09-03 22:53:59
【问题描述】:

我正在教授入门级 C++ 编程课程。我们只在类中使用 iostream(无 GUI)。学生们似乎不太兴奋将字符串和数字打印到他们的控制台。 (大多数学生以前甚至从未使用过控制台。)很难通过在控制台中显示字符串来激发或传达编程的兴奋。

什么是 C++ 初学者可以编写的优秀且令人兴奋的控制台程序?我正在寻找具有基本 C++ 技能 + 有点挑战性 + 非常令人兴奋的东西,它可以激励学生学习编程语言。

任何 cmets 将不胜感激。

【问题讨论】:

    标签: c++ console


    【解决方案1】:

    当我教授本科生入门课程时,我们将 Game of Fifteen 用纯 C 语言作为第三个家庭作业项目。它的范围很广,而且它是一个游戏,所以有一些内在的动机。

    【讨论】:

      【解决方案2】:

      当我教书的时候,我做了一个早期的项目是一台 ATM 机。

      纯文本界面,具有提现、存款、查询余额、账户间转账等基本操作。

      这是每个人都已经熟悉的东西,它不需要花费大量的编程时间,但它确实让学生感觉这是一个实用和现实的程序。

      其他类似的想法是收银机(处理退款、优惠券、按英镑定价的商品、销售税、商店特价等)或手机计费程序(分开白天、晚上和周末分钟,单独计费短信,图片信息等)。

      【讨论】:

        【解决方案3】:

        从一副牌中生成一组扑克牌的系统怎么样?虽然定义明确,但确保没有重复卡等的复杂性使其成为一个很好的入门级挑战。

        作为扩展,您可以让系统输入您是要下注还是弃牌,从而有效地玩扑克游戏。

        最后,一个好的设计将允许他们稍后将控制台切换为 gui 前端(例如中间类)。

        【讨论】:

          【解决方案4】:

          我总是喜欢有实际目的的问题。类似于计算数学方程式或一系列素数。我想,ProjectEuler 上的很多东西都会很好。不是每个人都喜欢数学(但话说回来,这对计算机科学来说是一种必要的东西!)。

          【讨论】:

            【解决方案5】:

            您可以制作 ascii 动画,而不仅仅是打印到屏幕上。

            【讨论】:

            • 我在某处丢失了代码,但我曾经使用诅咒实现了一个带有挥舞植物和游泳鱼的水族箱作为 ASCII 艺术动画来进行绘图。它在 2400 波特的拨号上运行得非常好。
            【解决方案6】:

            向您的学生介绍管道和过滤器。创建一个有用的实用程序,从标准输入获取数据并将其输出定向到标准输出。创建另一个使用相同协议执行其他操作的实用程序。创建第三个实用程序。展示这些实用程序可以如何稳健地协同工作。

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

            【讨论】:

              【解决方案7】:

              当我学习 C++ 时,我们不得不复制忒修斯和牛头怪游戏。它非常适合将多行输出到控制台以形成“图形”的东西,而且它很容易基于一组已实施的规则。

              【讨论】:

                【解决方案8】:

                我以前必须在控制台中编写Tower of Hanoi 游戏,我发现这很有趣。它需要使用基本的数据结构、用户输入、检查游戏结束条件,所以我相信这对初学者来说会很好。

                【讨论】:

                  【解决方案9】:

                  新的编程学生通常会发现图形程序是最令人兴奋的。

                  它不必是非常先进的东西,只要能够操纵像素和东西就足以让他们感兴趣。围绕 SDL 制作一个简单的图形类应该没问题。也许是这样的:

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

                  然后你给出诸如“实现一个drawRect函数”之类的任务。

                  【讨论】:

                    【解决方案10】:

                    也许是Lunar Lander game 的纯文本版本。您可以将完整的 ASCII 艺术和动画(也许使用 ncurses)作为高级练习,但即使是纯文本形式也可能很有趣。

                    我记得玩过在 HP 67 计算器上运行的版本,它只有一个七段显示器可以使用,很有趣。

                    我隐约记得有一个版本可能运行在用 MITS/Microsoft BASIC 编写的 ALTAIR 8800 上,该版本使用行的前导部分将高于地面的高度显示为 ASCII 艺术,并在右侧提示下一个刻度的刻录。

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

                    【讨论】:

                      【解决方案11】:

                      我的第一堂编程课有一个关于实现(减少的)大富翁游戏的长期作业。

                      您可以对板子使用链式列表。 您可以将继承用于棋盘图块。 你需要一些逻辑来处理玩家的回合。

                      这可能是我在 CS 中完成的第一个项目,我可以与我的非技术朋友谈论并引起一些兴趣。

                      【讨论】:

                        猜你喜欢
                        • 2022-01-15
                        • 2019-02-23
                        • 1970-01-01
                        • 2010-09-17
                        • 2015-02-11
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2015-08-17
                        相关资源
                        最近更新 更多