打字母小游戏(续)——控制区域的设计

上次,我们呢完成游戏区域的设计

今天我们接着介绍控制区域的介绍

控制区域

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;
            }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御弟謌謌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值