请教一个,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#实现~
[解决办法]
只能想到一个比较笨的办法,不能说是算法,期待学习,盼高手现身!
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]的颜色 }}
[解决办法]
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;}