俄罗斯方块
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:editor 阅读 434
需要的公共变量ViewCode1//各种形状的编号,0代表没有形状2NoShape=03ZShape=14SShape=25LineShape=36TShape=47SquareShape=58LS

需要的公共变量

View Code
   1 //各种形状的编号,0代表没有形状   2             NoShape = 0;   3             ZShape = 1;   4             SShape = 2;   5             LineShape = 3;   6             TShape = 4;   7             SquareShape = 5;   8             LShape = 6;   9             MirroredLShape = 7  10             //各种形状的颜色  11             Colors = ["black", "fuchsia", "green", "red", "orange", "blue", "teal", "orchid"];  12             //各种形状的数据描述  13             Shapes = [[[0, 0], [0, 0], [0, 0], [0, 0]], [[0, -11], [0, 0], [-11, 0], [-11, 11]], [[0, -11], [0, 0], [11, 0], [11, 11]], [[0, -11], [0, 0], [0, 11], [0, 22]], [[-11, 0], [0, 0], [11, 0], [0, 11]], [[0, 0], [11, 0], [0, 11], [11, 11]], [[-11, -11], [0, -11], [0, 0], [0, 11]], [[11, -11], [0, -11], [0, 0], [0, 11]]];  14             //形状类型  15             var type = 0;  16             //当前模块的坐标(独立)  17             var block = [[0, 0], [0, 0], [0, 0], [0, 0]];  18             //当前模块的坐标(全局)  19             var block_x = 0, block_y = 0;  20             //固定的方块(0||1)  21             var FixBlock;

开始游戏,具体代码如下

View Code
    1             $(function() {    2                 $("a#a13").click(function() {    3                     ctx.clearRect(0, 0, canvas.width, canvas.height);    4                     //初始化固定的方块    5                     FixBlock = new Array();    6                     for( i = 0; i < 50; i++) {    7                         FixBlock[i] = new Array();    8                         for( j = 0; j <= 25; j++) {    9                             FixBlock[i][j] = 0;   10                         }   11                     }   12                     CreatBlock();   13                     document.onkeydown = changeBlock;   14                     setInterval(BeginGame, 300)   15                 });   16             });   17             function BeginGame() {   18                 if(MoveDown() != 0) {   19                     AddFixedBlock();   20                     CreatBlock();   21                 }   22                 DelFixedBlock();   23                 ctx.clearRect(0, 0, 275, 550);   24                 creatMap();   25                 DrawBlock();   26             }   27    28             function changeBlock(e) {   29                 switch (e.keyCode) {   30                     //   31                     case 37:   32                         MoveLeft();   33                         break;   34                     //   35                     case 39:   36                         MoveRight();   37                         break;   38                     //   39                     case 38:   40                         block = rotate(block);   41                         break;   42                     //   43                     case 40:   44                         if(MoveDown() != 0) {   45                             AddFixedBlock();   46                             CreatBlock();   47                         }   48                         break;   49                 }   50                 ctx.clearRect(0, 0, 275, 550);   51                 creatMap();   52                 DrawBlock();   53             }   54    55             function rotate(data) {   56                 //向右旋转一个形状:x'=y, y'=-x   57                 var copy = [[], [], [], []];   58                 for(var i = 0; i < 4; i++) {   59                     copy[i][0] = data[i][1];   60                     copy[i][1] = -data[i][0];   61                     //判断旋转是否合理   62                     var px = copy[i][0] + block_x;   63                     var py = copy[i][1] + block_y;   64                     var isRight = true;   65                     if(px <= 0)   66                         isRight = false;   67                     if(px > 275 - 11)   68                         isRight = false;   69                     if(py >= 550 - 11)   70                         isRight = false;   71                 }   72                 if(isRight)   73                     return copy;   74                 else   75                     return data;   76             }   77    78             function creatMap() {   79                 //生成网格   80                 Px = 0;   81                 Py = 0;   82                 ctx.save();   83                 while(Py != 550) {   84                     if(Px > 275 || Px < 0) {   85                         Py = Py + 11;   86                         gx = -gx;   87                         Px = Px + 11 * gx;   88                     } else {   89                   
联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2