上次,我们呢完成游戏区域的设计
今天我们接着介绍控制区域的介绍
控制区域
1、游戏的开始和暂停
控制区域可以在this窗体中设计,也可以再创建一个Panel控件来完成(这里介绍第二种)
分析:
1、创建panel对象为控制区域
设置控制区域的位置,大小,图片
2、开始暂停
这里,我们用图片控件Pcturebox实现,并且是一个控件,所以先设置其大小,位置和背景图片
①当点击它后开始游戏,所以要添加点击事件
②在点击事件中,我们循环遍历控制区域控件,并且找到这个开始控件,然后打开timer1和timer2(就是控制创建字母和字母下降)
③然后,当计时器开了一个,我们插入暂停图像
④否则,那么就关机timer1和timer2,并且将图片转换为开始图片
//控制游戏开始和暂停的触发事件
private void Ksbox_Click(object sender, EventArgs e)
{
// MessageBox.Show("1");
foreach (Control item in this.kz.Controls)//循环遍历找控制区域的子空间集合
{
if (item.Tag.ToString()=="kstp")//如果找到了标记为kstp的控件
{
item.Tag = "zttp";//此时将它他的标记转换为zttp,此时生成了另一个标记
timer1.Start();
timer2.Start();
ksbox.Image = Image.FromFile("../../img/game_pause_pressed.png");
//更换暂停图片
}
else if (item.Tag.ToString()=="zttp")//否则,如果找到标记为zttp的控件
{
item.Tag = "kstp";//又将标记改为第一个
ksbox.Image = Image.FromFile("../../img/game_resume_pressed.png");
timer1.Stop();
timer2.Stop();
}
}
}
2、显示积分和错误
分析:
1、我们可以用label控件来做,所以创建两个label。一个是分数,一个是错误,并添加到控制区域
2、设置他们的大小,文本和位置
3、要定义两个变量,来记录分数和错误
int i = 0;//分数
int j = 0;//错误
4、什么时候算分数,什么时候算错误呢?
当打掉一个字母,字母和子弹消失后我们将分数+1,并将总分添加到分数label的文本中
当没有打掉字母,并且在字母到达飞机控件的时候,就记录错误分数+1,最后将总分添加到错误label的文本中
fs.Tag = "fenshu";
fs.Text = "分数:" + i;
cw.Text = "错误:" + j;
cw.Tag = "cuowu";
3、设置关卡和地图
分析:
1、实际上,关卡就是一个下拉的选择列表框控件,并添加文本和事件
2、创建ComboBox控件,并设大小,位置,将其添加到控制区域
3、下拉列表不能输入
4、设置下拉列表中的文本,
①要创建文本数组
②数组要通过for循环取出
5、设置下拉列表的默认
ComboBox combox = new ComboBox();//创建一个下拉列表文本框
combox.Tag = "xllb";//设置标记
combox.Size = new Size(80, 20);
combox.ForeColor = Color.MediumOrchid;
combox.Font = new Font("宋体", 15f, FontStyle.Bold);
//ComboBox表示:显示一个可编辑的文本框,其中包含一个允许值下拉列表
//设置下拉列表的位置
combox.Left = kz.Width / 2 - combox.Width / 2;
combox.Top = ksbox.Top + ksbox.Height + 40;
combox.DropDownStyle = ComboBoxStyle.DropDownList;
//在列表中添加文字,就是关卡
string[] a = { "简单", "困难", "炼狱", "噩梦" };//设置关卡数组
//要想获取数组中的值,就必须通过for循环获取
for (int i = 0; i < a.Length; i++)
{
combox.Items.Add(a[i]);//取出数组a中的所有值
combox.SelectedIndex = 0;//设置下拉框中的默认值为“简单”
//SelectedIndex表示:获取或设置指定当前选定项的索引
}
kz.Controls.Add(combox);//将下拉列表控件添加到控制区域
//给下拉列表添加点击事件
6、添加控件的点击事件
combox.SelectedIndexChanged += Combox_SelectedIndexChanged;
//SelectedIndexChanged表示:属性更改后发生
7、点击事件就是点击后发生
(1)如何说点击到下拉列表中的任意一个值,那么我们就改变计时器触发的频率,来增加难度
(2)并且更换地图,就是插入图片
添加图片这里再介绍一种方法,叫Bitmap(),它的好处就是可以自动裁剪图片
//更改下拉列表的值后触发的事件
private void Combox_SelectedIndexChanged(object sender, EventArgs e)
{
if (combox.Text=="简单")//如股下拉列表中的文本是简单
{
kz.BackgroundImage = new Bitmap("../../img/bjt1.jpg");就改变图片
//Bitmap表示:自动裁剪图片
kz.BackgroundImageLayout = ImageLayout.Stretch;//图片可以拉伸
//重新设置字母创建和字母下降的频率
timer1.Interval = 1000;
timer2.Interval = 100;
}
if (combox.Text == "困难") ;
{
kz.BackgroundImage = new Bitmap("../../img/bjtp2.jpg");
kz.BackgroundImageLayout = ImageLayout.Stretch;
timer1.Interval = 950;
timer2.Interval = 80;
}
if (combox.Text=="炼狱")
{
kz.BackgroundImage = new Bitmap("../../img/bjtp3.jpg");
kz.BackgroundImageLayout = ImageLayout.Stretch;
timer1.Interval = 900;
timer2.Interval = 40;
}
if (combox.Text=="噩梦")
{
kz.BackgroundImage = new Bitmap("../../img/bjtp4.jpg");
kz.BackgroundImageLayout = ImageLayout.Stretch;
timer1.Interval = 800;
timer2.Interval = 20;
}
}