您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > C#打字游戏课程设计
C#打字游戏程序核心代码主要部分:设计程序流程图:选择开始/退出主窗口暂停/继续(计时器)选择退出游戏开始/结束(计时器运行)游戏中…(键盘事件)(核心)游戏结束跳出成绩程序结束中途结束时间设置窗体成绩显示窗体打字游戏掉落间隔掉落速度键盘事件计时器倒计时系统时间错误正确程序截图:主窗体代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;//课程名称C#程序设计实践//设计题目打字游戏//专业计算机科学与技术//班级//学号//姓名//指导老师namespaceTyping_Game{publicpartialclassFrmTyping:Form{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{tsmiStratOrOver.Text=开始;//在游戏未开始时暂停&继续按钮无效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;}else{tsmiPauseOrContinue.Text=暂停;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;tsmiLevelHigh.Checked=false;timerGame.Interval=90;timerWord.Interval=900;}//游戏等级为高级时privatevoidtsmiLevelHigh_Click(objectsender,EventArgse){tsmiLevelPrimary.Checked=false;tsmiLevelMidder.Checked=false;tsmiLevelHigh.Checked=true;timerGame.Interval=50;timerWord.Interval=500;}//跳出设置每局时间窗体privatevoidtsmiSetTime_Click(objectsender,EventArgse){frmSetTimefrm=newfrmSetTime(this);frm.Show();}//跳出关于窗体privatevoidtsmiAbout_Click(objectsender,EventArgse){Aboutfrm=newAbout();frm.Show();}//对打字游戏中字母的掉落privatevoidtimerGame_Tick(objectsender,EventArgse){foreach(Controlconinthis.Controls){if(conisLabel){if(con.Top=this.Height-51){con.Dispose();//当label掉落到窗体边框label消失}elsecon.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();//生成新LabellalChar.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){frmResultfrm=newfrmResult(this);frm.Show();}elseif(second==0){minute-=1;second=59;}elsesecond-=1;//实时更新倒计时数据tsslGameTime.Text=游戏剩余时间:+minute.ToString()+:+second.ToString();}//键盘输入对应的正确或错误的处理privatevoidFrmTyping_KeyPress(objectsender,KeyPressEventArgse){//每按下一个按键加入输入总数的计数count++;//boolt的值来判定输入的对错boolt=false;strings=e.KeyChar.ToString().ToUpper();foreach(Controlconinthis.Controls){if(conisLabel){if(con.Text==s){t=true;right++;con.Dispose();break;}}}if(t==false)wrong++;//实时更新状态栏的数据tsslRightNo.Text=正确个数:+right.ToString();tsslWrongNo.Text=错误个数:+wrong.ToString();accuracy=(float)right/(2*sum)+(float)right/(2*count);tsslAccuracy.Text=正确率为:+(accuracy*100).ToString()+%;}}}时间设置窗体代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceTyping_Game{publicpartialclassfrmSetTime:Form{FrmTypingfrm;publicfrmSetTime(FrmTypingfrm){InitializeComponent();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)
本文标题:C#打字游戏课程设计
链接地址:https://www.777doc.com/doc-2672938 .html