原文链接
身为小白的我最近在学C语言,想想学完做点实际性的东西,写一个小游戏自己玩一玩,但是写好的游戏怎么把它倒腾成可以在电脑安装的软件那,????
于是就各种上网搜,找到一篇不错的回答,虽然没告诉具体的怎样做,但是我感觉能给学习C语言带来一点启发,就搬运过来了,原文链接在上面,下面是提问者的问法和大牛的答案
问题如下:
我们学C,学算法,学数据结构,可是这些学出来有什么用呢?
一行行的程序,可是却变成不了软件啊? 比如,拿个最简单的例子,写了个程序,比较两个数的大小,输入两个数,然后显示比较大的那个!
我想做个软件,是一个EXE文件,然后出现两个书写的地方,写两个数,然后一点确定,就会显示出比较大的那个数!
我这样说的应该很清楚了吧,希望听到正常的解释,不要复制的那种,网上的东西我都看过了,没有我想要的!
我想知道的不光是如何让程序变成EXE文件,请看看我的例子,比如,那个按扭放在哪?字体是什么样子?按扭的颜色等等~这些不是靠TURBO C就能解决的!
答案如下:
不晓得是我太笨,还是大家太笨,我觉得大家要么没看出楼主的意思,要么,要么没讲清楚问题。还是让老夫来说说吧:
首先,楼主所谓的学C,学算法,实际上就是说学会了编写代码,即知道让计算机先干什么,再干什么,最后得什么结果。他遇到的问题是,没有一个界面让他输入数据,因为他看到的几乎所有软件,都具有输入框、“确定”、“取消”、“关闭”之类的按钮,而他不知道从哪儿弄到这些按钮。
其次,我觉得楼主要有必要建立一些“面向对象程序设计”的观念,具体我不多说,楼主可以自己查。
希望大家不要嫌我罗嗦,因为我觉得,要为楼主解决问题很简单,但要让楼主知道为什么会有这样的迷惑,则须多说几句。
在上世纪九十年代以前的微机,也就是人们说的286,386时代,计算机的运行速度还很低,那时候的计算机几乎不需要用到鼠标,也几乎没什么图形界面,没音响,没彩色……当然也没有windows操作系统,人们操作计算机,大都是用的DOS操作系统。屏幕是黑的,字符是白的,人们输入一组字符串组成的命令,回车,计算机就开始执行,执行完后,再由人输入下一组命令。其界面相信楼主见识过,因为楼主似乎能将原代码变成exe文件,运行时跳出一个黑框来,程序在黑框中运行。实际上,那个黑框就是DOS操作系统的界面,只不过以前的计算机上,这个界面占据了整个屏幕,而现在,却是一个窗口。也就是说,windows操作系统为了方便老用户,提供了这样一个功能:可以运行DOS操作系统的程序,只不过不是占据整个屏幕,而是将其显示在一个窗口中。人们可在里面运行DOS程序,就同当年使用DOS操作系统一样。楼主所学的TC,就是那个时代的程序设计软件,由于几乎不需用到图形界面,当然也没有提供相应的按钮,窗体等功能。假如你非要一个按钮,那么你先得掌握绘图语句,如画线,画点,填色等等。在公元2000年以前,湖南教育界的计算机一级考试系统界面中的那几个按钮就是这样完成的。另外,我最初学用qbasic语言设计界面时,也是这样做的,画个按钮形状,当遇到回车键时,再画个被按下去的形状,半秒种后让它又恢复弹起的形状……总之,麻烦。
随着计算机软、硬件的高速发展以及鼠标,音响,图片,动画在计算机中的大量应用,DOS操作系统已如昔日黄花,退出了历史舞台。windows的普及,使得人们能够更方便,直观的操作电脑。那么新兴起的软件,当然需要经常用到诸如菜单、按钮,图标,滚动条,进度条,文本框之类的东西,我们把它叫做控件,在面像对像程序设计中,一个已绘好的控件就可以理解为一个对像。显然,每编一个程序都去画这些东西是相当烦人的,所以微软公司在后来提供的软件开发工具,比如visual c++中,就直接提供这些控件让人们使用,因为绘制各种控件的方式虽然麻烦,但其过程大致是相同的,所以人们只需给出诸出高度,宽度,名称之类的参数,而把绘制的过程交给了编译程序,就好像在word里面画一张表格一样,你只需用鼠标一拖,它就自己给你画好了。实际上产生的绘制语句代码,可以从头文件里找到,不过我估计没多少人去研究这些无多大意义的过程。为了便于理解,以VC++6.0为例:启动程序–新建–在“工程”栏选择“MFC AppWizard”,工程名字随便填,确定–单选“基本对话框”,然后点“完成”–最后确定。这时你可以见到一个面板,他就是你将要设计的程序的界面。初始时只有“确定”、“取消”两个按钮,当然,旁边还有一个工具箱,上面有很多其它的控件,需要的话你自己加,比如你想要两个框框输入数据,就可从工具箱中选“编辑框”,画两个就是。楼主希望按“确定”后,显示较大的数,则应该对着“确定”按右键,选“事件”,将相应的代码写在clicked事件里面,若想双击“确定”后显示,就将相应代码写在doublecliced事件里……要说更具体的操作,比如改变字体、大小、颜色、文字对齐方式等等,那是一门完整的课程,这里我就不谈了,楼主可以自己查相关资料。幸运的是,VC几乎完全兼容TC,所以TC里面设计的源程序,只要作少量的修改,就可以在VC上运行。
说到这儿,最起码楼主的问题应该解决了,即TC本身不提供“输入框”、“确定”之类的控件,因为他不是为windows操作系统设计的开发工具,如果你非要用,就只能用其提供的绘图语句去画,那不是一般的麻烦,当然你不介意的话,可以画着玩玩,然后作成一个模板函数保存吧。如果你嫌麻烦,算了,还是将就着用”scanf”之类的函数吧,虽然不美观也不方便,但用久了就习惯了……在DOS中,一个程序甚至就可以理解为一个软件。而在windows中,则可能需要很多相对独立却又彼此关联的程序,共同完成软件功能。比如,单击“确定”时该执行的程序;单击“取消”时该执行的程序。所有这些程序和控件的集合被称为“工程”,狭义上的一个“软件”就是一个“工程”,而广义上的软件,则还包括帮助文件,说明文档,需求分析,数据流图,调试维护记录,客户说明书等等一系列乱七八糟的东西。具体可参考“软件工程”一类的书籍。
楼主的问题,实际上代表了新一代计算机专业学生的迷惑,产生这种迷惑的本质原因,是在于教学内容跟不上时代的发展。十几年前,人们在学TC,那时学了就可以上机用,而现在,大家所见到的软件,基本上都是图形、窗口界面了,很多学生不知道自己学的程序设计,与自己平常见到的软件为何有那么大的差别。其实道理很简单:时代变了,而教科书没有变……
我本人并不反对学习TC之类的结构化的程序设计,毕竟,那也是一种程序设计的方法,而且有了TC作基础,再学VC就不是一件难事,但是,要学习VC,真的如某些老师所言,必须先学好TC吗?
面对C语言黑乎乎的窗口是不是会感觉学了这个有啥用?????
嗯嗯嗯,很有用,