貌似题主你还是在某个评论区让我来评论的,但你又给你回复删了是什么鬼,到底让不让我说...
就当不请自来吧←_←
今天又看到这帖子顶上来,看到不少人怀疑题主,像我这种心里及其阴暗又闲的没事干的蛇精病必然早就怀疑题主是抄的了!随后为了寻找证据,下载了能搜到的所有网页版坦克大战的源码
先说结论,不管看没看过教程,但程序的确是题主独立完成的
整个程序没看到复制粘贴的痕迹,编程风格统一,并且程序结构和所有教程都不一样
随便说一些代码的问题仅供参考
大部分常量可以维护在一个或几个列表里,或者干脆写全局变量,load我推荐你把他当成其它语言中的主函数,除了一些必要的代码外,其它初始化工作都放在一个初始化函数里,之后再启动游戏主循环
游戏主循环推荐使用requestAnimationFrame,而不要用setInterval
但requestAnimationFrame函数目前需要加上各浏览器前缀兼容,兼容代码很好搜到
元素都可以看成精灵,所有精灵都有移动 显示 碰撞等通用方法,可以通用一个父类,精灵只是一组数据,只对数据进行操纵会方便扩展
draw功能可以集中在一个函数上进行处理,draw函数只管画,位置 状态等,给什么参数画什么东西,不需要管画的是什么
碰撞检测可以统一处理,只管是否碰撞,而碰撞后怎么处理交由其它函数
“题主有能写一行绝不写第二行” 的习惯,虽然和我一样...但有的地方实在太过分了
var obj = {x : i % map.column * map.brickW, y : parseInt(i / map.row) * map.brickH, w : map.brickW, h : map.brickH, bgX : type * 16, bgY : 0, type : type, stopMove : stopMove, base : base};
还有这个
我不觉得其他人看你代码能轻易看懂(甚至一段时间后你自己都看不懂自己代码)
虽然注释比较多,但很多注释我觉得没必要
“嘿!兄弟,我肯定是看不懂英文的low货,那我就好心帮你翻译一下吧”
你的注释大致就是这个效果,而有的可能是公式算法之类的部分确没有注释
“嘿!兄弟,程序员的数学可都是很好的,什么?看不懂? 蠢货快回家种地去吧!”
差不多别人看你代码的时候就是这么个感觉
(type === 1 || type === 2 || type === 4 || type === 6 || type === 7 || type === 8 || type === 9)
像这种地方,每个数字都代表什么? 每个值可以用变量代替,变量名描述值代表的什么东西
地图编辑器的制作你一定受阻了,地图抽象成数据就好办了,参考精灵
就这些,有错误请指出
试玩了一下,游戏的完成度非常高。
然后去看了一下源代码,确认一下是自己撸的。
源代码格式清晰,注释有度。
等等等等,溢美之词就不多说了。
如果是独立作品,那么已经可以秒杀一众前端程序员了。
但是问题问的是够吗?
就我的观点来看,如果你是以应届毕业生的身份,想要找一份前端方面的工作,如果这个是独立作品,那么这个作为敲门砖已经完全足够。
但是,如果是以一个专业前端的角度来看,那么这个作品却仍有欠缺。
因为作为前端工程师,其工作职能和职责是复原设计师的作品,进行数据绑定填充和完成页面交互效果。
这个作品我们可以看到什么?显然作者展示了其优秀的JavaScript编程技能和canvas动画技巧。但是这并没有覆盖前端的所有工作职能,页面的布局和样式非常简陋。JavaScript脚本方面没有采取有效的手段避免多重if嵌套逻辑和冗长的if ... else if代码。这些都是作为前端一个整体职业素养的减分项。
总之这个项目充分的突出了你在某些方面的长处,但恐怕同时也暴露了你的某些短板。作为一个应届生的敲门砖,这个项目足够优秀。
但作为一个优秀的前端,这个项目恐怕还不够全面。
最后,建议你在游戏中加入一些彩蛋,譬如说作者水印,或者把老巢换成你的头像什么的,以证明这是你的独立作品。老实说这样一个完成度非常高的游戏,有些公司可能会认为是你从哪里把拉过来的,加入这样的彩蛋可以证明你有能力修改这个游戏,进一步证明这是你的独立作品。