用C#做个小游戏!
是个手机的"点灯"游戏!规则是这样的:有9个方格!3个列,共3行!每个方格代表一个灯,开始的时候所有的灯都是灭的!当你每点击一个灯时,被点的这个灯和它上、下、左、右的灯都...
是个手机的"点灯"游戏!
规则是这样的: 有9个方格!3个列,共3行!
每个方格代表一个灯,开始的时候所有的灯都是灭的!
当你每点击一个灯时,被点的这个灯和它上、下、左、右的灯都会切换开/关
游戏的结果是点亮所有的灯的!
我不会做!
请各位高手多多指点!
提供的信息越多越好!
谢谢! 展开
规则是这样的: 有9个方格!3个列,共3行!
每个方格代表一个灯,开始的时候所有的灯都是灭的!
当你每点击一个灯时,被点的这个灯和它上、下、左、右的灯都会切换开/关
游戏的结果是点亮所有的灯的!
我不会做!
请各位高手多多指点!
提供的信息越多越好!
谢谢! 展开
展开全部
做法很多,这里提供其中一种思路:
建class存放格子坐标,参数x,y还有个boolean状态,总共这三个参数。
建9个该类的实例,分别赋值,boolean状态就是灯的亮和灭,初始化的时候都赋值灭的状态。
事件处理:点击某个格子,对应的object以及它所具有的x值正负1(y相等),y值正负1(x相等)的object,这几个object的boolean状态全部反向, 这样遇到点击边角格子的情况也可以正确处理。
还有个更简单的办法,因为这个程序需要处理的对象不多,直接建立个长度为9的数组,存放boolean变量表示灯的亮和灭,建立9个click时间,每个事件需要反向哪些数组元素的boolean值直接手动设置,然后最后定义一个UpdateStatus()之类的方法,更新9个格子的状态,就OK了。
我简单搞了一个,工作正常。
namespace TurnOnLightGame
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 9; i++)
{
box[i] = false;
}
}
private void button1_Click(object sender, EventArgs e)
{
box[0] = !box[0];
box[1] = !box[1];
box[3] = !box[3];
UpdateBox();
}
private void button2_Click(object sender, EventArgs e)
{
box[0] = !box[0];
box[1] = !box[1];
box[2] = !box[2];
box[4] = !box[4];
UpdateBox();
}
private void button3_Click(object sender, EventArgs e)
{
box[1] = !box[1];
box[2] = !box[2];
box[5] = !box[5];
UpdateBox();
}
private void button4_Click(object sender, EventArgs e)
{
box[0] = !box[0];
box[3] = !box[3];
box[4] = !box[4];
box[6] = !box[6];
UpdateBox();
}
private void button5_Click(object sender, EventArgs e)
{
box[1] = !box[1];
box[3] = !box[3];
box[4] = !box[4];
box[5] = !box[5];
box[7] = !box[7];
UpdateBox();
}
private void button6_Click(object sender, EventArgs e)
{
box[5] = !box[5];
box[8] = !box[8];
box[2] = !box[2];
box[4] = !box[4];
UpdateBox();
}
private void button7_Click(object sender, EventArgs e)
{
box[3] = !box[3];
box[6] = !box[6];
box[7] = !box[7];
UpdateBox();
}
private void button8_Click(object sender, EventArgs e)
{
box[4] = !box[4];
box[6] = !box[6];
box[7] = !box[7];
box[8] = !box[8];
UpdateBox();
}
private void button9_Click(object sender, EventArgs e)
{
box[5] = !box[5];
box[7] = !box[7];
box[8] = !box[8];
UpdateBox();
}
public void UpdateBox()
{
if (box[0] == true) button1.Text = "@"; else button1.Text = "";
if (box[1] == true) button2.Text = "@"; else button2.Text = "";
if (box[2] == true) button3.Text = "@"; else button3.Text = "";
if (box[3] == true) button4.Text = "@"; else button4.Text = "";
if (box[4] == true) button5.Text = "@"; else button5.Text = "";
if (box[5] == true) button6.Text = "@"; else button6.Text = "";
if (box[6] == true) button7.Text = "@"; else button7.Text = "";
if (box[7] == true) button8.Text = "@"; else button8.Text = "";
if (box[8] == true) button9.Text = "@"; else button9.Text = "";
}
}
}
建class存放格子坐标,参数x,y还有个boolean状态,总共这三个参数。
建9个该类的实例,分别赋值,boolean状态就是灯的亮和灭,初始化的时候都赋值灭的状态。
事件处理:点击某个格子,对应的object以及它所具有的x值正负1(y相等),y值正负1(x相等)的object,这几个object的boolean状态全部反向, 这样遇到点击边角格子的情况也可以正确处理。
还有个更简单的办法,因为这个程序需要处理的对象不多,直接建立个长度为9的数组,存放boolean变量表示灯的亮和灭,建立9个click时间,每个事件需要反向哪些数组元素的boolean值直接手动设置,然后最后定义一个UpdateStatus()之类的方法,更新9个格子的状态,就OK了。
我简单搞了一个,工作正常。
namespace TurnOnLightGame
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 9; i++)
{
box[i] = false;
}
}
private void button1_Click(object sender, EventArgs e)
{
box[0] = !box[0];
box[1] = !box[1];
box[3] = !box[3];
UpdateBox();
}
private void button2_Click(object sender, EventArgs e)
{
box[0] = !box[0];
box[1] = !box[1];
box[2] = !box[2];
box[4] = !box[4];
UpdateBox();
}
private void button3_Click(object sender, EventArgs e)
{
box[1] = !box[1];
box[2] = !box[2];
box[5] = !box[5];
UpdateBox();
}
private void button4_Click(object sender, EventArgs e)
{
box[0] = !box[0];
box[3] = !box[3];
box[4] = !box[4];
box[6] = !box[6];
UpdateBox();
}
private void button5_Click(object sender, EventArgs e)
{
box[1] = !box[1];
box[3] = !box[3];
box[4] = !box[4];
box[5] = !box[5];
box[7] = !box[7];
UpdateBox();
}
private void button6_Click(object sender, EventArgs e)
{
box[5] = !box[5];
box[8] = !box[8];
box[2] = !box[2];
box[4] = !box[4];
UpdateBox();
}
private void button7_Click(object sender, EventArgs e)
{
box[3] = !box[3];
box[6] = !box[6];
box[7] = !box[7];
UpdateBox();
}
private void button8_Click(object sender, EventArgs e)
{
box[4] = !box[4];
box[6] = !box[6];
box[7] = !box[7];
box[8] = !box[8];
UpdateBox();
}
private void button9_Click(object sender, EventArgs e)
{
box[5] = !box[5];
box[7] = !box[7];
box[8] = !box[8];
UpdateBox();
}
public void UpdateBox()
{
if (box[0] == true) button1.Text = "@"; else button1.Text = "";
if (box[1] == true) button2.Text = "@"; else button2.Text = "";
if (box[2] == true) button3.Text = "@"; else button3.Text = "";
if (box[3] == true) button4.Text = "@"; else button4.Text = "";
if (box[4] == true) button5.Text = "@"; else button5.Text = "";
if (box[5] == true) button6.Text = "@"; else button6.Text = "";
if (box[6] == true) button7.Text = "@"; else button7.Text = "";
if (box[7] == true) button8.Text = "@"; else button8.Text = "";
if (box[8] == true) button9.Text = "@"; else button9.Text = "";
}
}
}
舞侠
2024-11-07 广告
2024-11-07 广告
《舞侠OL》全球首款音乐副本网游,既传承音舞游戏经典又实现全面超越。首推带有RPG属性的音乐副本玩法,华丽的明星BOSS阵容,舞蹈属性养成体系,开创了舞蹈技能玩法,使游戏更具有策略性和挑战性,而不再是单纯击打键盘。《舞侠online》游戏采...
点击进入详情页
本回答由舞侠提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询