打字游戏

来源:互联网 发布:思考快与慢 知乎 编辑:程序博客网 时间:2024/04/30 06:50

学习c#也有一段时间了,也写了一些小东西,但我不满足这些,下面是我写的一个小游戏,打字游戏,我就不拷贝全部代码了,我把主要实现复制下来。using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 打字练习
{

    /// 打字游戏的form类
    /// <summary>
    /// 打字游戏的form类
    /// </summary>
    public partial class Form1 : Form
    {
        public int Speed;//移动速度
        public Random random;
        public int Score;//分数
        public int Grade;//等级
        public bool ifInit;//对label进行初始化

        /// form1的构造函数
        /// <summary>
        /// form1的构造函数
        /// </summary>
        public Form1()
        {
            InitializeComponent();
            this.Text = "打字游戏";
            Speed = 10;//标签移动速度
            Score = 0;//分数
            Grade = 1;//等级
            random = new Random();
            ifInit = true;//是否对label进行初始化
            timer2.Enabled = false ;
            radBGrade1.Checked = true;
            FormBorderStyle = FormBorderStyle.Fixed3D;//边框风格
            CancelButton = butExit;//Esc键退出
            butBegin.KeyDown += new KeyEventHandler(Form1_KeyDown);
            //将button1的keydown进行绑定
            //panel1.Focus();//转移焦点
        }

        /// 对label进行初始化
        /// <summary>
        /// 对label进行初始化
        /// </summary>
        /// <param name="label"></param>
        private void Initialize(Label label)
        {
            label.Top = 0;
            label.Text = GetRandomChar();
            int red = random.Next(255);
            int green = random.Next(255);
            int blue = random.Next(255);
            label.ForeColor = Color.FromArgb(red, green, blue);
            //label的前景色
        }

        /// 产生随机字母
        /// <summary>
        /// 产生随机字母
        /// </summary>
        /// <returns></returns>
        public string GetRandomChar()
        {
            string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            return s.Substring(random.Next(s.Length - 1), 1);
            //substring(int,int)从字符串的第n位开始取n位,
            //random.Next(s.Length - 1)产生一个小于罪大值的非负整数

        }

       /// 移动label
       /// <summary>
       /// 移动label
       /// </summary>
       /// <param name="label"></param>
        private void Movelabel(Label label)
        {
            label.Top += (Speed*Grade );//改变label的top来移动
            if (label.Top >= panel1.Height)//判断标签是否移动到了窗口的最下面
            {
                Initialize(label);
            }
        }
      
       /// label.Text和KeyValue进行比较
       /// <summary>
       /// label.Text和KeyValue进行比较
       /// </summary>
       /// <param name="label"></param>
       /// <param name="keyvalue"></param>

        private void Compale(Label label, int  keyvalue)
        {

            int acc1 = (int)char.Parse(label.Text.ToUpper());

            if (keyvalue == acc1)
            {
                Score += 10;
                labScore.Text = "分数:" + Score.ToString();
                Initialize(label);

            }
          
        }
      
        /// timer控制器
        /// <summary>
        /// timer控制器
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer2_Tick(object sender, EventArgs e)
        {
            //for (int i = 1; i <= 10; i++)
            //{
            //    Movelabel(labeli);
            //}
            Movelabel(label1);
            Movelabel(label2);
            Movelabel(label3);
            Movelabel(label4);
            Movelabel(label5);
            Movelabel(label6);
            Movelabel(label7);
            Movelabel(label8);
            Movelabel(label9);
            Movelabel(label10);
        }
      
        /// KeyDown事件
        /// <summary>
        /// KeyDown事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            Compale(label1, e.KeyValue);
            Compale(label2, e.KeyValue);
            Compale(label3, e.KeyValue);
            Compale(label4, e.KeyValue);
            Compale(label5, e.KeyValue);
            Compale(label6, e.KeyValue);
            Compale(label7, e.KeyValue);
            Compale(label8, e.KeyValue);
            Compale(label9, e.KeyValue);
            Compale(label10, e.KeyValue);
        }
        //protected override bool ProcessDialogKey(Keys keyData)
        //{
        //    //Compale(label1, keyData.ToString);
        //    return base.ProcessDialogKey(keyData);
        //}
       /// 开始按钮
       /// <summary>
       /// 开始按钮
       /// </summary>
       /// <param name="sender"></param>
       /// <param name="e"></param>
        private void butBegin_Click_1(object sender, EventArgs e)
        {
            timer2.Enabled = true;
            if (ifInit )
            {
                Initialize(label1);
                Initialize(label2);
                Initialize(label3);
                Initialize(label4);
                Initialize(label5);
                Initialize(label6);
                Initialize(label7);
                Initialize(label8);
                Initialize(label9);
                Initialize(label10);
                ifInit = false;
            }
            radBGrade1.Enabled = false;
            radBGrade2.Enabled = false;
            radBGrade3.Enabled = false;
            radBGrade1.Visible = false;
            radBGrade2.Visible = false;
            radBGrade3.Visible = false;
            labScore.Text = "分数:0";
         }
       
        /// 停止按钮
        /// <summary>
        /// 停止按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void butStop_Click(object sender, EventArgs e)
        {
            timer2.Enabled = false;
            radBGrade1.Enabled = true ;
            radBGrade2.Enabled = true;
            radBGrade3.Enabled = true;
            radBGrade1.Visible = true;
            radBGrade2.Visible = true;
            radBGrade3.Visible = true;
        }
       
        /// 退出按钮
        /// <summary>
        /// 退出按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void butExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        /// 等级1
        /// <summary>
        /// 等级1
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void radBGrade1_CheckedChanged(object sender, EventArgs e)
        {
            Grade = 1;
            label1.Visible = false;
            label3.Visible = false;
            label5.Visible = false;
            label7.Visible = false;
            label9.Visible = false;
        }

        /// 等级2
        /// <summary>
        /// 等级2
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void radBGrade2_CheckedChanged(object sender, EventArgs e)
        {
            Grade = 2;
            label1.Visible = true;
            label3.Visible = true;
            label5.Visible = true;
            label7.Visible = true;
            label9.Visible = true;
        }

        /// 等级3
        /// <summary>
        /// 等级3
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void radBGrade3_CheckedChanged(object sender, EventArgs e)
        {
            Grade = 3;
        }

     }
}

原创粉丝点击