zoukankan      html  css  js  c++  java
  • 基于C#开发的2048

    昨天花了一晚上的时间写了一个过气的小游戏-2048,一直到晚上十二点多才把键盘响应事件写好,感觉自己的脑子不行,还要再补补。

    先来一波运行的效果:

      1 主要算法,可以实现不同边长的2048
      2    private void Up()
      3         {
      4             int i, j;
      5             for (j = 0; j < gameHeight; j++)
      6             {//每一列   
      7                 for (i = 0; i < gameWidth - 1; i++)
      8                 {
      9                     if (game[i, j].Value == game[i + 1, j].Value)
     10                     {
     11                         game[i, j].Value = game[i, j].Value + game[i + 1, j].Value;
     12                         game[i + 1, j].Value = 0;
     13                         //移除空格  
     14                         Up_Remove_Blank();
     15                     }
     16 
     17                 }
     18             }
     19         }
     20         private void Up_Remove_Blank()
     21         {
     22             int i, j, k;
     23             for (j = 0; j < gameHeight; j++)
     24             {
     25                 for (i = 1; i < gameWidth; i++)
     26                 {
     27                     k = i;
     28                     while (k - 1 >= 0 && game[k - 1, j].Value == 0)
     29                     {//上面的那个为空   
     30                         int temp;
     31                         temp = game[k, j].Value;
     32                         game[k, j].Value = game[k - 1, j].Value;
     33                         game[k - 1, j].Value = temp;
     34                         k--;
     35 
     36                     }
     37                 }
     38             }
     39         }
     40         private void Down()
     41         {
     42             int i, j;
     43             for (j = 0; j < gameHeight; j++)
     44             {//每一列   
     45                 for (i = gameWidth - 1; i >= 1; i--)
     46                 {
     47                     if (game[i, j].Value == game[i - 1, j].Value)
     48                     {
     49                         game[i, j].Value = game[i, j].Value + game[i - 1, j].Value;
     50                         game[i - 1, j].Value = 0;
     51                         //移除空格  
     52                         Down_Remove_Blank();
     53                     }
     54 
     55                 }
     56             }
     57         }
     58         private void Down_Remove_Blank()
     59         {
     60             int i, j, k;
     61             for (j = 0; j < gameHeight; j++)
     62             {
     63                 for (i = gameWidth - 2; i >= 0; i--)
     64                 {
     65                     k = i;
     66                     while (k + 1 <= gameWidth - 1 && game[k + 1, j].Value == 0)
     67                     {//上面的那个为空   
     68                         int temp;
     69                         temp = game[k, j].Value;
     70                         game[k, j].Value = game[k + 1, j].Value;
     71                         game[k + 1, j].Value = temp;
     72                         k++;
     73                     }
     74                 }
     75             }
     76         }
     77         private void Left()
     78         {
     79             int i, j;
     80             for (i = 0; i < gameWidth; i++)
     81             {
     82                 for (j = 0; j < gameHeight - 1; j++)
     83                 {
     84                     if (game[i, j].Value == game[i, j + 1].Value)
     85                     {
     86                         game[i, j].Value += game[i, j + 1].Value;
     87                         game[i, j + 1].Value = 0;
     88                         Left_Remove_Blank();
     89                     }
     90 
     91                 }
     92             }
     93         }
     94         public void Left_Remove_Blank()
     95         {
     96             int i, j, k;
     97             for (i = 0; i < gameWidth; i++)
     98             {
     99                 for (j = 1; j < gameHeight; j++)
    100                 {
    101                     k = j;
    102                     while (k - 1 >= 0 && game[i, k - 1].Value == 0)
    103                     {//上面的那个为空   
    104                         int temp;
    105                         temp = game[i, k].Value;
    106                         game[i, k].Value = game[i, k - 1].Value;
    107                         game[i, k - 1].Value = temp;
    108                         k--;
    109                     }
    110                 }
    111             }
    112         }
    113         private void Right()
    114         {
    115             int i, j;
    116             for (i = 0; i < gameWidth; i++)
    117             {
    118                 for (j = gameHeight - 1; j >= 1; j--)
    119                 {
    120                     if (game[i, j].Value == game[i, j - 1].Value)
    121                     {
    122                         game[i, j].Value += game[i, j - 1].Value;
    123                         game[i, j - 1].Value = 0;
    124                         Right_Remove_Blank();
    125                     }
    126                 }
    127             }
    128         }
    129 
    130         private void Right_Remove_Blank()
    131         {
    132             int i, j, k;
    133             for (i = 0; i < gameWidth; i++)
    134             {
    135                 for (j = gameHeight - 2; j >= 0; j--)
    136                 {
    137                     k = j;
    138                     while (k + 1 <= gameHeight - 1 && game[i, k + 1].Value == 0)
    139                     {//上面的那个为空  
    140                         int temp;
    141                         temp = game[i, k].Value;
    142                         game[i, k].Value = game[i, k + 1].Value;
    143                         game[i, k + 1].Value = temp;
    144                         k++;
    145                     }
    146                 }
    147             }
    148         }

    附上源码:链接:http://pan.baidu.com/s/1skOKdR3 密码:2p3h

  • 相关阅读:
    Win32应用中创建多窗口
    同时控制多个UIScrollView对象
    在后台代码中设定控件的Visibility
    VC中使用GDI+
    悬垂指针(Dangling pointer)和野指针(Wild pointer)
    在Windows下通过命令行界面编译并生成 .exe
    C++流重定向到文件
    读写文本文件和二进制文件——二进制模式
    使用MahApps.Metro
    WPF之GUI编写
  • 原文地址:https://www.cnblogs.com/pushudepu/p/6104225.html
Copyright © 2011-2022 走看看