C# 绘制方格方阵游戏 15
全一游戏概述在一个如下图的n*n方阵中,每一个方格中有一盏灯和一个开关。灯有亮和灭两种状态。方格为白色表示灯是亮的,方格为黑色表示灯是灭的。每一个方格里还有一个开关。这个...
全一游戏
概述
在一个如下图的n*n方阵中,每一个方格中有一盏灯和一个开关。灯有亮和灭两种状态。方格为白色表示灯是亮的,方格为黑色表示灯是灭的。每一个方格里还有一个开关。这个开关很有趣,当你拨动这个开关的时候,它会改变所在的方格的灯的状态,还会改变与所在方格相邻的上、下、左、右四个方格(有些情况只有其中三个或两个方格)里面的灯的状态。
例如,我们拨动图中红色箭头所指的方格中的开关,使得该方格的灯由灭变亮,同时,使得方格上、下、左、右相邻的四个方格中的灯由亮变灭。
任意给定一种初始状态,也就是说各个方格中的灯随意设置为亮或者灭的状态。玩家可以通过点击某一个方格来拨动方格中的开关,从而改变方格中的灯和相邻方格中的灯的状态。游戏的目标是把所有的灯都点亮。
游戏规则:
1. 进入游戏的时候,需要设定初始状态,也就是决定开始的时候那些灯是亮的,那些灯是暗的。玩家可以选择由电脑设定,也可以自己指定。
2. 如果玩家选择自己指定初始状态,那么他(她、它?)可以通过用鼠标点击一个方格来改变那个方格里面的灯的初始状态。
3. 有一个“开始游戏”按钮,点击以后就结束初始状态设置,开始游戏。
4. 游戏中,玩家用鼠标单击某一个方格,就表示拨动方格中的开关。方格和相邻方格的灯的状态改变。
5. 对于给定的初始状态,并不一定保证可以把所有的灯点亮,所以,玩家可以一直玩下去,也可以随时结束游戏。提供一个“结束游戏”按钮给玩家。如果玩家按了结束游戏,就清空方阵,重新设定初始状态。
6. 如果游戏过程中,所有的灯被点亮,程序应该弹出窗体,对玩家表示祝贺。玩家可以选择继续玩,或者重新开始。
类似数独游戏这样的方格阵:
没有财富值了, 展开
概述
在一个如下图的n*n方阵中,每一个方格中有一盏灯和一个开关。灯有亮和灭两种状态。方格为白色表示灯是亮的,方格为黑色表示灯是灭的。每一个方格里还有一个开关。这个开关很有趣,当你拨动这个开关的时候,它会改变所在的方格的灯的状态,还会改变与所在方格相邻的上、下、左、右四个方格(有些情况只有其中三个或两个方格)里面的灯的状态。
例如,我们拨动图中红色箭头所指的方格中的开关,使得该方格的灯由灭变亮,同时,使得方格上、下、左、右相邻的四个方格中的灯由亮变灭。
任意给定一种初始状态,也就是说各个方格中的灯随意设置为亮或者灭的状态。玩家可以通过点击某一个方格来拨动方格中的开关,从而改变方格中的灯和相邻方格中的灯的状态。游戏的目标是把所有的灯都点亮。
游戏规则:
1. 进入游戏的时候,需要设定初始状态,也就是决定开始的时候那些灯是亮的,那些灯是暗的。玩家可以选择由电脑设定,也可以自己指定。
2. 如果玩家选择自己指定初始状态,那么他(她、它?)可以通过用鼠标点击一个方格来改变那个方格里面的灯的初始状态。
3. 有一个“开始游戏”按钮,点击以后就结束初始状态设置,开始游戏。
4. 游戏中,玩家用鼠标单击某一个方格,就表示拨动方格中的开关。方格和相邻方格的灯的状态改变。
5. 对于给定的初始状态,并不一定保证可以把所有的灯点亮,所以,玩家可以一直玩下去,也可以随时结束游戏。提供一个“结束游戏”按钮给玩家。如果玩家按了结束游戏,就清空方阵,重新设定初始状态。
6. 如果游戏过程中,所有的灯被点亮,程序应该弹出窗体,对玩家表示祝贺。玩家可以选择继续玩,或者重新开始。
类似数独游戏这样的方格阵:
没有财富值了, 展开
1个回答
展开全部
使用GDI+画一下就是了,很简单的!!
//模拟颜
private List<Color> colors = new List<Color> {Color.Blue, Color.Black,Color.White };
protected const int xNum = 10;
protected const int yNum = 10;
protected int cxBlock 拆蔽明= 60, cyBlock = 40;
protected bool[,] abChecked = new bool[yNum, xNum];
protected int[,] abCheckedColor = new int[yNum, xNum];
//窗体的绘制事件
private void Form1_Paint(object sender, PaintEventArgs e)
{
try
{
Graphics g = e.Graphics;
Pen pen = new Pen(Color.FromArgb(0, 0, 0));
并判 for (int y = 0; y < yNum; y++)
旅告 for (int x = 0; x < xNum; x++)
{
g.FillRectangle(new SolidBrush(colors[abCheckedColor[y, x]]),x * cxBlock, y * cyBlock, cxBlock, cyBlock);
g.DrawRectangle(pen, x * cxBlock, y * cyBlock, cxBlock, cyBlock);
abCheckedColor[y, x] = abCheckedColor[y, x] + 1 > 2 ? 0 : abCheckedColor[y, x] + 1;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
//窗体的鼠标释放事件
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
int x = e.X / cxBlock;
int y = e.Y / cyBlock;
Invalidate(new Rectangle(x * cxBlock, y * cyBlock, cxBlock, cyBlock));
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询