早教吧 育儿知识 作业答案 考试题库 百科 知识分享

用winform实现的一个打字游戏求用C#winform实现的一个打字游戏主要由以下部分组成:(1)随机生成字符(2)把生成的字符在屏幕上方显示出来,并开始在屏幕上匀速下落(3)如果用户击

题目详情
用 winform实现的一个打字游戏
求用C# winform实现的一个打字游戏
主要由以下部分组成:
(1) 随机生成字符
(2) 把生成的字符在屏幕上方显示出来,并开始在屏幕上匀速下落
(3) 如果用户击键正确,则字符消失;如果用户击键不正确,则字符继续掉落,直至到达显示区的底部。
(4) 要求有不同级别选择:初级、中级和高级,根据不同级别可以控制字符生成和下落的速度
(5) 屏幕上可以动态显示打字练习的分数(击中字符数/总生成的字符数)
(6) 自学图像处理知识,使得尽量界面美观
▼优质解答
答案和解析
5分呀,帮你顶一下吧!
精简版。
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;
using System.Threading;
namespace 打字游戏
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
}
public void LabelMove(object o)
{
Label label = (Label)o;
for (int i = 1; i <= this.Height; i++)
{
label.Top += 1;
Thread.Sleep(10);
}
if (Thread.CurrentThread.IsAlive)
{
Thread.CurrentThread.Abort();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
Label label = new Label();
Random y = new Random();
label.Left = y.Next(this.Width);
int r, g, b;
r = y.Next(0, 256);
g = y.Next(0, 256);
b = y.Next(0, 256);
label.ForeColor = Color.FromArgb(r, g, b);
label.Text = Convert.ToChar(65 + y.Next(57)).ToString();
this.Controls.Add(label);
Thread t = new Thread(new ParameterizedThreadStart(LabelMove));
t.Start(label);

}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
}
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
foreach (Label l in this.Controls)
{
if (l.Text == e.KeyChar.ToString())
{
l.Dispose();
}
}

}
}
}