资源描述:
《案例Cnavas第3天笔记.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Canvas游戏制作第3天课堂笔记(本课程共8天)目录目录2一、3一、游戏分析砖块是独立的个体,所以要有一个转块类。所有的小砖块,都是这个类的实例。那么很明显,这个转块类有属性:行、列、颜色。这个转块类,还应该有的方法:update、render。所以,我们想在页面上放置1个方块,就是使用1varb=newBlock(3,2,1);//3行、2列,红色定时器:1b.render();转块管理类:里面有一个属性,叫做map,是一个二维数组,存储着抽象的地图。鸟瞰地图(aerialMap),里面存放的是数字,表示颜色的小数字。0表示没有,1表示红色,2表示蓝色。里面存放的
2、不是block对象,而是数字。鸟瞰地图,存放的数字,所以里面的内容不能被render。必须要有一个存放转块的二维数组,和我们的鸟瞰地图是一一对应的。转块管理类BlockManager,管理当前的地图。如果有一个小砖块,被打掉了,那么就要从转块管理类里面删除它。小球类:肯定有属性x、y、angle。方法update、render。小球在每次update的时候,都要检测有没有撞到小砖块。小球在每次update的时候,都要检测有没有撞到挡板。如果有的话,就要反弹,就是改变自己的角度。撞到左右边,自己的角度=180-原来的角度。撞到上下边,自己的角度=360-原来的角度。挡板
3、类Racket:有属性x。方法update、render。也需要知道小球的位置。二、游戏实现Game类,是中介者,但是自己没有智慧。就是傻傻的更新自己的演员、渲染自己的演员。所有的元素的智慧,都体现在自己的Update方法里面。所有的演员,都是自治的,自己管理自己的。角度:1//角度2this.angle=330;3//dX、dY4this.dX=this.speed*Math.cos(this.angle*Math.PI/180);5this.dY=this.speed*Math.sin(this.angle*Math.PI/180);撞到底边:研究碰撞:打砖块的剩
4、余能够升级的:1)碰撞检测,要进一步完善。碰撞区域实际上应该是圆角矩形,现在我们偷懒了,是矩形。碰到角,有特殊的角度改变。2)“搓球”,挡板的移动,能够给球加速度。3)命、关,自定义地图。三、俄罗斯方块这个东西很神圣的,就是一个人是从编程菜鸟,到真的成为一个程序员的标志。俄罗斯方块的业务量,刚刚好适合一个人开发。24行,12列:方块有很多种,我们用英语字母表示,不管什么方块,都能够用4*4的矩阵来表示:I型[0010,0010,0010,0010][0000,1111,0000,0000]L型[0100,0100,0110,0000][0000,1110,1000,0
5、000][1100,0100,0100,0000][0010,1110,0000,0000]J型[0100,0100,1100,0000][1000,1110,0000,0000][0110,0100,0100,0000][0000,1110,0010,0000]Z型[0000,1100,0110,0000][0100,1100,1000,0000]T型[0000,1110,0100,0000][0100,1100,0100,0000][0100,1110,0000,0000][0100,0110,0100,0000]O型[0110,0110,0000,0000]编程
6、原理,就是画布上的方块,分为两种,一种叫做“当前活动方块”,就是下落的。另外一种,就是已经在地下摞起来的方块。摞起来的方块,用数组来存储就可以。摞起来的方块:当前下落的方块,是个对象:对象有col、row、type属性。col表示这个4*4组合体,左上角那个格格的位置。所以,图中,这个组合体的row值为5col值为6type值为["0110","0010","0011","0000"]当前方块能不能继续下落,还是会被已经下落的方块挡住??就要比较当前正在下落的矩阵,和摞起来的方块的矩阵的关系。有没有一位重合了。当方块不能下落,被卡住了,要做什么?消行判定,当一个方块被
7、卡主了,就要检测是不是有满行,就要让上面的行下落。