我才刚学C#,求一份用C#编写的打字游戏(字母一个一个掉下来的,可以改变难度,要求不用多线程)源代码,有哪位高手可以帮小弟一下的。

解决方案 »

  1.   

    window应用程序刚学完,随机数也学过了,这个小游戏不是一个很好的实例吗?
      

  2.   

      
             string[] num = new string[5] {"A","b","c","d","e"};
                Console.WindowHeight = 26;
                Console.WindowWidth = 81;
                Random number = new Random();            for (int j= 0; j < num.Length; j++)
                {
                    int n = number.Next(0, 5);
                    for (int i = 0; i < 26; i++)
                    {
                       
                        Console.SetCursorPosition(40, i);
                        Console.Write(num[n]);
                        Thread.Sleep(100);
                        Console.Clear();                }            }   我想你要好的效果的话,还需改动;
         自己改了;
          可以利用文件储存字母;
           这样还要利用控制光标的移动;   
                while (true) 
                { 
                    switch (Console.ReadKey(true).Key) 
                    { 
                        case ConsoleKey.UpArrow: 
                            if(Console.CursorTop!=0) Console.CursorTop--; 
                            break; 
                        case ConsoleKey.DownArrow: 
                            Console.CursorTop++; 
                            break; 
                        case ConsoleKey.LeftArrow: 
                            if (Console.CursorLeft != 0) Console.CursorLeft--; 
                            break; 
                        case ConsoleKey.RightArrow: 
                            Console.CursorLeft++; 
                            break; 
                    } 
       
      

  3.   

    你写的好复杂啊!好像还用的多线程了!
      private void timer1_Tick(object sender, EventArgs e)
            {
                Random r = new Random();
                Label l = new Label();
                char cc = (char)((int)'A' + r.Next(26)); //随机产生26 个字母
                l.Text = cc.ToString();
                l.BackColor = Color.Blue;
                l.ForeColor = Color.Red;
                l.Left = r.Next(this.Width);    //随机水平位置
                this.panel1.Controls.Add(l);
                foreach (Control c in this.panel1.Controls)
                {
                    c.Top += 15;     //向下移动
                    if (c.Top == this.Height) c.Dispose();   //到底消除
                }
            }
     private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                foreach (Control c in this.panel1.Controls)
                {
                    if (c.GetType() == typeof(Label))
                    {
                        Label t = (Label)c;
                        if (t.Text == e.KeyCode.ToString()) //按下的键有, 消除
                            this.panel1.Controls.Remove(c);
                    }
                }
            }
    这个比较简单,我们还没学多线程。上面的就是有个问题,一个panel1里面可以出现重复的!不知道怎么改,你帮忙改一下行吗?顺便给我变漂亮点,比如消去的时候给我加点效果……谢谢啦!