历经4天(当然,除去白天正常工作的时间),终于跟着网上的一个免费视频把飞行棋项目做出来了。下载游戏请点击http://wjh.lkbxw.com/htm/soft/softDetail.aspx?iID=31
老师讲的真不错,一步步就是跟着脑子里的思维走,“我想要什么效果,要怎么做”,还把思路过程讲解出来。
不过,哈哈,来“不过”了,不过是虾米意思捏?就是“但是”的意思,哈哈,我的时间太紧张了,没有时间慢慢的跟着把视频全看下来,(老师要照顾大多数)哈哈,所以我都是加快播放速度的,一般我加快到150%~200%之间,有时中间还跳过……(时间太紧张,没办法,又想看又没时间)。
我的观点是完全跟着老师的办法一点点的代码下来,反而会束缚自己的“方法”(这里指程序里的术语“方法”),所以我看了大概,就根据自己的思维写自己的“方法”。
做完了回过来想一想,我认为最难最耗时间最费脑子的应该是“让某玩家暂停1次”功能,就这个功能耗了我2个晚上的时间,最后一次玩我到0:53,说个题外话:程序员,要有个健壮的身体啊!因为我实现的这个游戏,框架和视频里的相差太大了,结构都不一样,所以我找到老师的这一段的实现方法,反复看都没法实现到我程序里,只好自己抠吧!其中,比如我想让玩家A暂停1次,我反复修改代码,竟然能让玩家A连扔两次色子,无语……泪双流!气得我宋词都出来了!夸张了,眼睛累的也差不离了……
其实老师为了照顾初学者,用了一种容易理解的实现玩家A和B掷色子的办法,就是:
do{
//玩家A掷色子
[代码]
//玩家B掷色子
[代码]
}while(true); 就是在代码中顺序执行A、B的掷色子过程,好理解、但是我看到一个缺点是玩家A和B的掷色子的下方的[代码]块非常多而且重复代码(毕竟除了关键处,其它都是只要改 A和B两个字符即可),但就是因为要交替交换A、B掷色子所以没法写成方法被重用(这是我的个人理解)。
而我刚学习了老师讲的out参数一节,想到可以用out参数传递多个参数来解决这个问题(A、B掷色子方法写成一个,用传参的方法传A或B,out参数传出掷出的点数)即:
/// <summary>
/// 掷色子方法
/// </summary>
/// <param name="p">只能接收A或B两个值</param>
/// <param name="DinceValue">out参数向外传值,外边必须先定义过DinceValue|掷色子掷出的数</param>
private static void Dince(char p, out int DinceValue)
{
}
这样,不管是A还是B掷色子,都只需调用这一个方法就可以了。省了“一坨”代码都在主函数内。
当然,用自己的思维实现后,我仍然会再去完整看一遍苏坤老师的视频,我想,用这种方法会事半功倍,好处:
1.不会被别人的思维框住 ;
2.增强了自己写代码的水平(事先没看别人的,用自己的思维先写);
3.自己做出来后,再去看视频(做出来了也不放过老师的视频!!),脑子里会有一个大框架和带着问题,同时能一点点的比较自己和老师的优劣,或者说,老师的“方法”会比我想的好在什么地方;
----------------------------
又看了一遍视频里的代码,发现老师在最后也重写了掷色子的代码:用action方法重用了,关于如何取得对方的名称这点,老师用了一个非常高超的办法:
本文链接:https://my.lmcjl.com/post/9423.html
4 评论