学习编程从游戏开始——编程计划(目录)
0.前言
前面已经写了搭建程序开发环境的几篇文章,虽然有些内容跟网上的其他一些文章有重复和相似之处,但总觉得这些内容各有所长,每个人的文章里都有自己的经历和感受,也就是说,除了通用的知识,还包含了个人经验。
写了这些文章之后,有读者问我,搭建了编程开发环境后怎么使用啊?
听了这样的问话,开始时我没怎么在意,但后来想一想,觉得有必要写一点东西了。为什么呢?读者中有资深的程序员,也有新手。当然这里的新手有初学编程的人,也有是刚更换了新的开发环境的人。不管是哪一种人,对于新的开发环境都需要有一个熟悉的过程。怎么才能熟悉新的开发环境呢?有两种方法:一个是学习,一个是练习。
在这篇文章里,我主要讲述以下几个方面的内容:
- 编程计划
- 已经编写完成的文章(目录)
- 我的学习编程的经历
- 结束语
1.编程计划
学习编程的教程在网上有很多,我写出来肯定不如那些文章的作者写得好,所以,我想通过编写一个程序,一步步地引导新手熟习新的开发环境。
网上有很多编写程序的示例,如果一个一个地去看源码,只能看到一个结果,而不能了解编写程序的过程。我想写的文章就是从一个空白窗口一步一步地添加组件、编写代码、优化结构,直到形成一个完整的应用程序。
当初我学习C++ Builder时是从编写一个叫做“多彩俄罗斯方块”的单机版游戏开始的,所以我今天想写一个这样的游戏应用程序,通过编写这个程序,达到手把手引导读者熟悉程序开发环境和学会编写程序的目的。
我计划使用多种方式编写程序,从而体验不同的程序语言和编程工具,对比不同方法的优缺点,对于想选择编程工具的人来说应该是有帮助的。
不过,计划的方式有多种,最终能不能完全实现还要看以后的情况,也许能全部完成,也许半途而废。
计划采用以下几种方案编写具有相同功能的“多彩俄罗斯方块”单机版游戏应用程序,先用一种方式完成,之后有时间了在考虑用其他方式完成:
- pTetris:在Lazarus中使用Pascal语言编写,使用LCL和FCL组件
- xTetris:在Code Blocks中使用C++语言编写,使用wxWidgets组件,通过编写代码构建显示界面
- sTetris:在Code Blocks中使用C++语言编写,使用wxWidgets组件,通过wxSmith辅助构建界面
- aTetris:在Code Blocks中使用C++语言编写,使用Windows API调用,通过编写代码构建界面
- oTetris:在Code Blocks中使用C++语言编写,使用面向对象的吧编程改写aTetris的代码,通过编写代码构建界面
2.已经编写完成的文章(目录)
下面是这几中方案的有关文章的链接,也可以算是相关文章的目录:
- 通用文章:
- pTetris项目的文章:
- 在Lazarus下的Free Pascal编程教程——用向导创建一个使用LCL和FCL组件的项目(pTetris) - lexyao - 博客园
- 在Lazarus下的Free Pascal编程教程——使用LCL布局组件构建应用程序主窗口布局 - lexyao - 博客园
- 在Lazarus下的Free Pascal编程教程——在Lazarus中使用计时器组件TTimer - lexyao - 博客园
- 在Lazarus下的Free Pascal编程教程——向窗体动态添加组件 - lexyao - 博客园
- 在Lazarus下的Free Pascal编程教程——按数据流程规划程序结构 - lexyao - 博客园
- 在Lazarus下的Free Pascal编程教程——在应用程序中使用鼠标和键盘输入 - lexyao - 博客园
- 在Lazarus下的Free Pascal编程教程——打造有智能感知的用户设置操作界面 - lexyao - 博客园
- 在Lazarus下的Free Pascal编程教程——应用程序配置数据的管理 - lexyao - 博客园
- 在Lazarus下的Free Pascal编程教程——应用程序配置数据的使用 - lexyao - 博客园
- xTetris项目的文章:
- sTetris项目的文章:
- aTetris项目的文章:
- oTetris项目的文章:
3.我的学习编程的经历
我需恶习编写程序是从计算开始的,把工作中耗费时间比较多的计算过程编写成程序,一方面节省了计算耗费的时间,另一方面也避免了计算过程中出现的人为错误。
计算机使用程序计算比人用计算器计算速度要快的很多,节省时间是必然的。这不用解释,一个人需要几天完成的计算过程,在计算机上使用程序计算,除了输入数据的时间,计算过程只需要几分钟甚至几秒钟的时间。
使用计算机避免错误这也是一个很大的优势。如果是人工计算,一个计算过程需要几个小时甚至几天的时间,计算完成后不能确定是否存在错误,需要重新验算一遍,两遍计算的结果不一致就需要再次计算一遍,有时候还需要采用不同的计算方法进行验算,这个过程消耗的时间是很多的,当然也很费力。
把一套计算过程的所有计算编写到一个程序中去,将程序计算的结果与手工计算的结果对比,只要结果是正确的,那么以后使用这个程序进行的计算就一定是正确的,计算过程不会出现任何错误。为了避免错误需要做的唯一的工作就是核对作为输入数据的文件内容没有错误,这样的工作量就很小了。
我开始是使用Basic语言在PC-1500袖珍机上编写程序,这种袖珍机除了Basic编写的程序其他的什么也没有,而且内部只能保存一个程序,编写的程序要使用录音机保存在磁带上。
后来转到台式个人计算机后使用的是Dos操作系统,使用了Basic和Fortran。Fortran跟Basic比起来编写的程序运行速度快,数字计算精度高,运行程序时不需要像Basic那样先运行一个解释环境,除此之外也没有什么别的优势。
记得有一次讨论工程设计方案,其中的水力计算需要一个人用四五个小时才能完成一次计算,当时我使用了Fortran编写的计算程序,修改源数据文件需要大约一分钟的时间,计算过程只需要几秒钟。讨论方案的地点从会议室搬到了计算机房,领导跟专家们每提出修改一个方案的意见,我只需要修改一下源数据文件中的数据,抬手之间就出了计算结果。如果是在往常,一个项目最多从两三个方案中选择一个认为相对好一点的就可以了,而这一次从几十个方案中选择了大家认为最优秀的方案,而验证这些方案需要的计算几乎是瞬间就完成了。这让领导和专家们大感惊奇。
这样的例子很多,就不一 一列举了。
再后来我得到了Turbo Pascal 5.5,它的集成开发环境和优异的性能吸引了我,从此我就与Pascal结缘了。
很快,我使用Pascal重新编写了我以前使用的程序。而这只是一个开始,只是一些小程序,真正使用Pascal编写大型程序是从一个意外的需求开始的。
有时候有很多的数字或者名单,每个数字或者名称占用一行,打印出来会浪费纸张,版面也不好看。如果在一张纸上分成多列,这样不就可以了吗?这样的要求现在看起来很简单,但在当时来说是很难办到的。由于文字处理软件功能的限制,打字员除了重新打印,没有办法把一列数据放到另一列的右边的。比如说,有若干数字,每页纸张只能打印20行,要想让第1到20各数据放在纸张的左边,21到40放在中间,41到60放在右边,就需要打字员把数据一个一个地复制过去或者重新输入。打印完成之后想改成每页18行,则需要打字员重新输入。
那时我在《软件报》上看到一个小程序,内容是把两个文件纵向合并,目的就是为了解决上面说的这个问题。我用Pascal借用了这个小程序,实现了文件的纵向合并。在此基础上,随着需求的增加,逐渐增加功能,最后形成了一个集文字和表格于一体的文字处理软件,它的功能和方便程度超过了当时买到的文字和表格处理软件的总和。也就是在这个时候,Windows时代来临了,电脑里有了微软的word,我自己写的文字处理程序被替代了。
使用了Windows操作系统后,原来在Dos下编写的程序虽然能够使用,但已经跟不上形势了,需要使用能够编写视窗界面的程序的开发环境。
首先找到的是Visual Basic和Visual FoxPro,但前者对操作系统的依赖性太强,后者编写的程序离不开开发环境,要发布一个程序还要“拖家带口”,这些都不是我喜欢的。这个时候已经开始了互联网时代,申请的网站空间容量很小,发布一个应用程序太大了实在不方便。直到找到了Visual C++ 6.0之后才算是找到了自己想要的东西。
尽管我没有系统地学习过C语言和C++,仅有的一点C语言知识也是为了考取高级程序员资格在考试复习资料里看到的一些程序片段,但是在Dos时代积累下来的程序语言功底还是很有作用的,所谓的触类旁通,学习一种新的程序语言并不是什么困难的事情。
后来有了Delphi,我又回归到了Pascal。尽管后来使用了C++ Builder,这是一个被人称作C++版的Delphi的开发环境,开发C++程序要比Visual C++方便很多,但是自从C++ Builder为了适应.net吧自己搞得不伦不类之后,我就再也不碰这东西了。虽然电脑里也安装了Visual Studio的各个版本,但是我写程序主要使用的还是Delphi。
4.结束语
从我学习和使用编程工具的经历来说,我的经验就是有实用需求才有动力,多动手才能熟练掌握。很多在大学里学习计算机的毕业后不会写程序,并不是因为他们不够聪明,而是在工作后用不到也就放下了,日子久了也就忘记了。
希望我的经历能给你带来启发,我将要写的东西能够对你有所助益。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!