首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请教一个,4*4方格游戏的算法有关问题

2011-12-20 
请教一个,4*4方格游戏的算法问题12345678910111213141516这样的一个 44方格,当点击其中一个方格的时候,周

请教一个,4*4方格游戏的算法问题
1 2 3 4
  5 6 7 8
  9 10 11 12
  13 14 15 16

这样的一个 4×4方格,当点击其中一个方格的时候,周围的方格变红色,被点击的方格为绿色!
比如点1,就是2,5,6,变红色,1变绿色,
点6就是1,2,3,5,7,9,10,11,变绿色,6变红色~
应该怎么写算法啊?
最好用C#实现~

[解决办法]
只能想到一个比较笨的办法,不能说是算法,期待学习,盼高手现身!

C# code
int c = 所点数字;int x = c % 4; //取所在列int y = Math.Ceiling(c / 4); //取所在行int[] r;r[0] = ((y - 2) * 4) + x; //上数r[1] = ((y - 0) * 4) + x; //下数r[2] = ((y - 1) * 4) + x - 1; //左数r[3] = ((y - 1) * 4) + x + 1; //右数r[4] = ((y - 2) * 4) + x - 1; //上左数r[5] = ((y - 2) * 4) + x + 1; //上右数r[6] = ((y - 0) * 4) + x - 1; //下左数r[7] = ((y - 0) * 4) + x + 1; //下右数for (int i = 0; i < r.Length; i++){    if (r[i] % 4 != 0 && (r[i] - 1) % 4 != 0 && r[i] > 0 && r[i] < 16)    {        // 设置r[i]的颜色    }}
[解决办法]
C# code
static void Main(string[] args){    Console.WriteLine(fun(2, 3));}static string fun(int x, int y){    string s = null;    int[,] a = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 15, 16 } };    for(int i = x - 1;i < x + 2;i++)        for (int j = y - 1; j < y + 2; j++)        {            if (i < 0 || j < 0 || i > 3 || j > 3)                continue;            if (i == x && j == y)                s += a[i, j] + " = red\n";            else                s += a[i, j] + " = green\n";        }    return s;} 

热点排行