编写程序就是这样,调试、运行、再调试…
这天早晨的晨练,亚瑟和修都没能去,只有林鸿一人。
在行过十几次不断地来回调试和传输程序的过程之后,亚瑟的俄罗斯游戏终于顺利地在ti-82上运行了!
在将近凌晨五的时候,他们终于将最终版的俄罗斯方块游戏给确定下来。
之前他们两个讨论了很久,始终无法确定第一个件该编写什么功能。亚瑟比较倾向于
一个实用
的
件,例如可以辅助学生在学校的学习,而
修则倾向于编写一个有意思的游戏。
立刻想要看一下破解之后的成果,可是接下来难题又来了——没有合适的可以运行在上面的件。
这个过程,说起来看似简单,实际上却是经过林鸿无数次测试才找到的,为了确计算栈的长度,他至少反反复复重复了五十遍以上的数据压
过程,而为了能够让自己的这个程序能够顺利接
固件的运行
程,其中所
费的时间和
力,也是无法三言两语描述得清楚的。
于是,这个严密的堡垒便被林鸿给成功攻克了。
两个人的意见不能统一,时间就在他们不断地争辩中逝,结果什么东西都没
来。
这个时候,修提
,先编写一个相对比较简单的游戏跑起来再说,得到了林鸿和亚瑟的一致认可。
修第一时间将计算
抢了过来,然后开始玩了起来。
他发现,亚瑟编写程序的时候,有一些细小的编程习惯值得借鉴和学习,例如在关键的地方给注释、给代码语句多分行缩
,提
代码的可读
…等等。
现在机已经
来了,却没有合适的
件,真是够郁闷的。
修在玩了一会儿就发现,由于计算
显示屏
度太低,很容易就会被撑到
,最终挂掉。
是程序的一个bug,但是当向这些栈中压经过
行设计的数据,就不仅仅是bug了,而是成为了可供黑客利用的漏
。
在整个过程中,林后都没再手,他只是在旁边观看着亚瑟编写程序。
于是,他提了改
意见,将显示方式向顺时针方向旋转90度,这样方块下落的路程就可以大大加长,可以降低难度。
俄罗斯方块是苏联科学家阿列克谢*帕基特诺夫一个经典游戏,它看似简单但却变化无穷,令人上瘾。1988年在国上市之后,立刻获得了
大的商业成功,受到了男女老少所有人的
迎,成为一款极为经典的大众游戏,没有任何一款游戏能够与其媲
。
第一百三十九章栈缓冲区溢
亚瑟的这个俄罗斯方块程序是用c语言行编写的,林鸿来
国之后才开始接
这门编程语言,用得还不是很熟,今天看到亚瑟不断修改调试,也学到了不少东西。
林鸿正是心设计好了一个小程序,然后将其编译成机
码,先是向他找到的那个栈中压
一些无效的数据,
确计算这些数据的长度,等达到一定长度之后,再将他设计好的数据给压
去,让其发生溢
,覆盖缓冲区之外的区域,这样当固件系统运行到这里的时候,就会成功地调用执行他的这个程序…
三人商量了一下,最终决定将俄罗斯方块这个游戏移植到计算中。
刚开始的几次运行都了
问题,但是这是很正常的情况,移植到另外一个平台,如果能一次
就成功,那就太夸张了,就算是再
的程序员,有时候也是会犯一些低级错误的,例如变量名称写错,忘记写分号之类的,这是很正常的情况。只要
据调试信息,有针对
地
行修改就行了。
林鸿将其成功破解之后,兴奋之下,忘记了别人不像自己本不用睡觉,当时就立刻敲响了亚瑟的房门,幸好他们刚刚睡下不久,听到他这么快就将计算
给破击
来了,原本已经瞌睡得睁不开
睛的两人顿时
神一振,将睡意抛到了九霄云外。
此刻,除了林鸿,亚瑟和修都疲惫不堪,直接倒在床上呼呼大睡。
玩俄罗斯方块游戏,只需要至多五个键就可以,三个方向键,一个键用来变换,另外一个键则用来加速。而计算
上有几十个
键,足够了。
不断地和各错误和bug
这斗争,直到最终顺利通过的那一刻!
于是,他们又将阵地转移到了林鸿房间,因为他这台机可以模拟z80cpu的运行环境,将亚瑟之前编写的那个源程序
行简单的修改和优化之后,就将其编译成为了一个可在计算
里面执行的文件,然后通过数据线传输到了计算
存储空间中。
亚瑟之前在学习编程的时候,曾经独立开发过这个游戏,有现成的源代码,移植起来的难度并不大。
于是,亚瑟又开始对游戏的源程序行修改…
第一百三十九章栈缓冲区溢,到网址