C#打字游戏课程设计复习过程Word文档下载推荐.docx
- 文档编号:18274432
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:15
- 大小:85.33KB
C#打字游戏课程设计复习过程Word文档下载推荐.docx
《C#打字游戏课程设计复习过程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C#打字游戏课程设计复习过程Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
{
publicFrmTyping()
InitializeComponent();
}
publicintright=0;
//正确个数计数
publicintwrong=0;
//错误个数计数
publicintsum=0;
//总个数技术
publicintcount=0;
//按键总次数
publicfloataccuracy;
//正确率
publicintMinute=1;
//设置默认没局游戏时间
publicintminute;
//设置游戏中的倒计时分
publicintsecond;
//设置游戏中的倒计时秒
privatevoidFrmTyping_Load(objectsender,EventArgse)
//在状态栏中显示当前系统时间
privatevoidtimerSys_Tick(objectsender,EventArgse)
DateTimenow=DateTime.Now;
this.tsslSysTime.Text="
系统时间:
"
+now.Hour.ToString()+"
:
"
+now.Minute.ToString()+"
+now.Second.ToString()+'
\t'
;
//开始&
结束按钮
privatevoidtsmiStratOrOver_Click(objectsender,EventArgse)
if(tsmiStratOrOver.Text=="
开始"
)
tsmiStratOrOver.Text="
结束"
timerWord.Start();
timerGame.Start();
timerGT.Start();
//在游戏开始时暂停&
继续按钮可用
tsmiPauseOrContinue.Enabled=true;
//在游戏未开始时选择游戏等级与设置游戏按钮无效
tsmiLevel.Enabled=false;
tsmiOption.Enabled=false;
//游戏开始初始化游戏数据
right=0;
wrong=0;
sum=0;
count=0;
minute=Minute;
second=0;
else
//在游戏未开始时暂停&
继续按钮无效
tsmiPauseOrContinue.Enabled=false;
//在游戏未开始时可以选择游戏等级与设置游戏
tsmiLevel.Enabled=true;
tsmiOption.Enabled=true;
frmResultfrm=newfrmResult(this);
frm.Show();
//游戏暂停&
继续功能实现
privatevoidtsmiPauseOrContinue_Click(objectsender,EventArgse)
if(tsmiPauseOrContinue.Text=="
暂停"
tsmiPauseOrContinue.Text="
继续"
timerWord.Enabled=false;
timerGame.Enabled=false;
timerGT.Enabled=false;
timerWord.Enabled=true;
timerGame.Enabled=true;
timerGT.Enabled=true;
//退出程序
privatevoidtsmiExit_Click(objectsender,EventArgse)
Application.Exit();
//游戏等级为初级时
privatevoidtsmiLevelPrimary_Click(objectsender,EventArgse)
tsmiLevelPrimary.Checked=true;
tsmiLevelMidder.Checked=false;
tsmiLevelHigh.Checked=false;
timerGame.Interval=180;
timerWord.Interval=1800;
//游戏等级为中级时
privatevoidtsmiLevelMidder_Click(objectsender,EventArgse)
tsmiLevelPrimary.Checked=false;
tsmiLevelMidder.Checked=true;
timerGame.Interval=90;
timerWord.Interval=900;
//游戏等级为高级时
privatevoidtsmiLevelHigh_Click(objectsender,EventArgse)
tsmiLevelHigh.Checked=true;
timerGame.Interval=50;
timerWord.Interval=500;
//跳出设置每局时间窗体
privatevoidtsmiSetTime_Click(objectsender,EventArgse)
frmSetTimefrm=newfrmSetTime(this);
//跳出关于窗体
privatevoidtsmiAbout_Click(objectsender,EventArgse)
Aboutfrm=newAbout();
//对打字游戏中字母的掉落
privatevoidtimerGame_Tick(objectsender,EventArgse)
{
foreach(Controlconinthis.Controls)
if(conisLabel)
if(con.Top>
=this.Height-51)
con.Dispose();
//当label掉落到窗体边框label消失
con.Top+=5;
//对打字游戏开始时不断随机生成的字母添加到新生成的label中并设置label的基本属性
privatevoidtimerWord_Tick(objectsender,EventArgse)
Randomr=newRandom();
inta=r.Next(65,90);
//随机生成A~Z的ASCII码
charc=Convert.ToChar(a);
//ASCII转换成字母
LabellalChar=newLabel();
//生成新Label
lalChar.Text=c.ToString();
//字母放入
//设置Label基本属性固定大小字体居中对齐等等...
lalChar.AutoSize=false;
lalChar.Height=51;
lalChar.Width=51;
lalChar.Left=r.Next(r.Next(0,this.Width/5-25),r.Next(this.Width-100,this.Width-51));
lalChar.Font=newFont("
楷体"
15,FontStyle.Regular);
lalChar.TextAlign=ContentAlignment.MiddleCenter;
//将Label加入到Controls中
this.Controls.Add(lalChar);
//每生成一个Label计入字母总数中
sum++;
//每生成一个Label都重新计算一次正确率
accuracy=(float)right/(2*sum)+(float)right/(2*count);
//状态栏中实时更新数据统计
tsslSum.Text="
总个数为:
+sum.ToString();
tsslAccuracy.Text="
正确率为:
+(accuracy*100).ToString()+"
%"
//状态栏中的倒计时算法
privatevoidtimerGT_Tick(objectsender,EventArgse)
if(minute==0&
&
second==0)
elseif(second==0)
minute-=1;
second=59;
second-=1;
//实时更新倒计时数据
tsslGameTime.Text="
游戏剩余时间:
+minute.ToString()+"
+second.ToString();
//键盘输入对应的正确或错误的处理
privatevoidFrmTyping_KeyPress(objectsender,KeyPressEventArgse)
//每按下一个按键加入输入总数的计数
count++;
//boolt的值来判定输入的对错
boolt=false;
strings=e.KeyChar.ToString().ToUpper();
if(con.Text==s)
t=true;
right++;
break;
if(t==false)
wrong++;
//实时更新状态栏的数据
tsslRightNo.Text="
正确个数:
+right.ToString();
tsslWrongNo.Text="
错误个数:
+wrong.ToString();
}
时间设置窗体代码:
publicpartialclassfrmSetTime:
FrmTypingfrm;
publicfrmSetTime(FrmTypingfrm)
this.frm=frm;
//当窗体跳出时textbox默认显示当前游戏的每局时间
privatevoidfrmSetTime_Load(objectsender,EventArgse)
textBox1.Text=frm.Minute.ToString();
//当textbox中内容发生变化时,对textbox中的内容做出判断如果不符合要求label显示提示错误的输入。
privatevoidtextBox1_TextChanged(objectsender,EventArgse)
lalPS.Text="
btnOK.Enabled=true;
try
intm=Convert.ToInt32(textBox1.Text);
if(m<
1||m>
60)
请输入1~60的整数"
btnOK.Enabled=false;
catch(Exceptionex)
//“确定”后数据返回到主窗体从而改变每局时间
privatevoidbtnOK_Click(objectsender,EventArgse)
frm.Minute=int.Parse(textBox1.Text);
this.Close();
//“取消”
privatevoidBtnCancel_Click(objectsender,EventArgse)
成绩窗体代码:
publicpartialclassfrmResult:
publicfrmResult(FrmTypingfrm)
//按下"
确定"
键后原有面板上的显示数据全部清空
privatevoidbutton2_Click(objectsender,EventArgse)
foreach(Controlconinfrm.Controls)
con.Visible=false;
frm.right=0;
frm.sum=0;
frm.wrong=0;
frm.accuracy=0;
frm.tsslAccuracy.Text="
frm.tsslRightNo.Text="
frm.tsslWrongNo.Text="
frm.tsslGameTime.Text="
frm.tsslSum.Text="
frm.tsmiLevel.Enabled=true;
frm.tsmiOption.Enabled=true;
//当该窗体跳出时显示游戏得分等情况同时计时器全部停止
privatevoidfrmResult_Load(objectsender,EventArgse)
frm.timerWord.Stop();
frm.timerGame.Stop();
frm.timerGT.Stop();
lblLevel.Text=(frm.tsmiLevelPrimary.Checked?
frm.tsmiLevelPrimary.Text:
(frm.tsmiLevelMidder.Checked?
frm.tsmiLevelMidder.Text:
frm.tsmiLevelHigh.Text));
lblSum.Text=frm.sum.ToString();
lblRight.Text=frm.right.ToString();
lblWrong.Text=frm.wrong.ToString();
lblAccuracy.Text=(frm.accuracy*100).ToString()+"
if(frm.minute==0&
frm.second==0)
lblTime.Text=frm.Minute.ToString()+"
00"
lblTime.Text=(frm.Minute-frm.minute-1).ToString()+"
+(60-frm.second).ToString();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 打字 游戏 课程设计 复习 过程