版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
XXXX大學(xué)C#S程設(shè)計(jì)報(bào)告打字練習(xí)小游戲院(系)別 專業(yè) 班級 學(xué)號(hào) 姓名 指導(dǎo)教師 二Oxx年xx月山東交通學(xué)院課程設(shè)計(jì)報(bào)告山東交通學(xué)院課程設(shè)計(jì)報(bào)告11摘要隨著社會(huì)經(jīng)濟(jì)的發(fā)展,計(jì)算機(jī)在生活占據(jù)著越來越重要的地位,如何高效快速的使用計(jì)算機(jī)解決問題重要性尤為突出,社會(huì)競爭壓力越來越大,工作與娛樂相結(jié)合更受群眾喜愛?;谝陨戏治觯覀冮_發(fā)了一個(gè)打字練習(xí)的小游戲。本游戲應(yīng)用基于 VisualStudio2008平臺(tái)的應(yīng)用程序開發(fā)技術(shù),采用C#乍為開發(fā)編程語言,實(shí)現(xiàn)打字游戲的練習(xí)計(jì)算機(jī)鍵盤按鍵位置及娛樂功能。該系統(tǒng)具有結(jié)構(gòu)清晰、便于分布、實(shí)施簡單、易于擴(kuò)充、維護(hù)等特點(diǎn),其功能主要是:在玩游戲的過程中練習(xí)打字,提高打字速度,熟悉鍵盤。其主要特點(diǎn)是操作簡單,娛樂性強(qiáng),可自由控制難易度。關(guān)鍵詞:打字練習(xí),C#g程TOC\o"1-5"\h\z\o"CurrentDocument"摘要 1目錄 1\o"CurrentDocument"1概述 2\o"CurrentDocument"設(shè)計(jì)的背景和意義 2\o"CurrentDocument"設(shè)計(jì)任務(wù)分工說明 2\o"CurrentDocument"2系統(tǒng)分析 2\o"CurrentDocument"軟件功能分析 2\o"CurrentDocument"程序流程分析 4\o"CurrentDocument"程序性能分析 43系統(tǒng)設(shè)計(jì) 5物理配置方案設(shè)計(jì) 5\o"CurrentDocument"數(shù)據(jù)文彳^設(shè)計(jì) 5\o"CurrentDocument"操作數(shù)據(jù)文件 6\o"CurrentDocument"界面設(shè)計(jì) 6\o"CurrentDocument"其他說明 8\o"CurrentDocument"4系統(tǒng)實(shí)現(xiàn) 8\o"CurrentDocument"5總結(jié) 10\o"CurrentDocument"參考文獻(xiàn) 11山東交通學(xué)院課程設(shè)計(jì)報(bào)告山東交通學(xué)院課程設(shè)計(jì)報(bào)告概述設(shè)計(jì)的背景和意義設(shè)計(jì)的背景1946年,第一臺(tái)計(jì)算機(jī)在美國誕生。之后隨著社會(huì)經(jīng)濟(jì)的發(fā)展,計(jì)算機(jī)的作用與日俱增,計(jì)算機(jī)的高效運(yùn)用決定了工作的效率及質(zhì)量。 它被廣泛運(yùn)用于人們生活的各個(gè)方面,軍事、工業(yè)、教育、農(nóng)業(yè)等各個(gè)方面,從而更好的推動(dòng)經(jīng)濟(jì)的增長。同系列的其他打字游戲的功能主要包括熟悉字母,提高辨識(shí)、確認(rèn)字母能力,特殊的還具有計(jì)時(shí)和懲罰獎(jiǎng)勵(lì),調(diào)節(jié)游戲速度功能。我們的打字游戲在實(shí)現(xiàn)以上的所有功能外還有所創(chuàng)新,不僅游戲方式新穎,還具有分?jǐn)?shù)換取游戲次數(shù)的機(jī)制,使得游戲可玩性大大加強(qiáng)。設(shè)計(jì)的意義隨著計(jì)算機(jī)的更進(jìn)一步普及,人們熟練掌握計(jì)算機(jī)運(yùn)用已經(jīng)成為衡量一個(gè)優(yōu)秀人才的重要指標(biāo)。打字速度的快慢直接影響工作的質(zhì)量和效率。打字游戲,主要是培養(yǎng)電腦新手更快的掌握計(jì)算機(jī)的鍵盤布局以及特性, 為以后更快更便捷的使用鍵盤做基礎(chǔ)。同時(shí),它也是一款休閑益智的小游戲,可供人們在閑暇時(shí)刻放松自己。這樣既能娛樂又能練習(xí)打字速度,不失為一款好游戲。設(shè)計(jì)任務(wù)分工說明本設(shè)計(jì)的完成者包括:XX和XX,其中XX主要負(fù)責(zé)分析程序,從網(wǎng)上及其圖書館瀏覽他人程序進(jìn)行剖析利用,進(jìn)一步改進(jìn)游戲程序。 XX主要負(fù)責(zé)系統(tǒng)的總體方向,及其個(gè)別控件的利用及其實(shí)現(xiàn),主要是課程設(shè)計(jì)報(bào)告的編寫及其排版等。2系統(tǒng)分析軟件功能分析該游戲的整體功能設(shè)計(jì)如圖2.1所示
打字游戲積分換生命開始打字游戲積分換生命開始圖2.1游戲整體功能圖各部分的功能說明:此軟件模仿了其他同類游戲的部分功能,簡單易用,可以對游戲有直觀的行認(rèn)識(shí),其游戲界面如圖2.2鼠潴累灣從資開始! 一.. 一 [口I叵圖2.2登陸界面展示
程序流程分析該程序主要實(shí)現(xiàn)對提高打字速度的能力,我們進(jìn)入界面后點(diǎn)擊游戲控制中的開始,可以進(jìn)行游戲,根據(jù)用戶所完成的情況,適當(dāng)調(diào)節(jié)游戲速度,暫停為用戶提供了一個(gè)遇忙的時(shí)間,而積分兌換是當(dāng)用戶失誤的時(shí)候補(bǔ)救的一個(gè)措施, 游戲中。根據(jù)用戶所完成的結(jié)果會(huì)適當(dāng)?shù)慕o用戶積分, 一般需要付出一定的積分,才能換回一條生命值,用戶也可以不選擇積分兌換。系統(tǒng)流程如圖 2.3。圖2.3系統(tǒng)流程圖程序性能分析該軟件由于是初級程序編寫修改練習(xí),因此處理方便簡單易行,不需要很多的電腦專業(yè)知識(shí),初學(xué)者也可熟練掌握。該程序的運(yùn)行環(huán)境是Windows系統(tǒng),兼容性好,可以普遍的應(yīng)用于各個(gè)計(jì)算機(jī)的各個(gè)系統(tǒng),共享性良好。3系統(tǒng)設(shè)計(jì)物理配置方案設(shè)計(jì)由于是小容量的小游戲,因而可以在任何完整配置的電腦中使用,不存在兼容性以及使用要求問題。游戲編寫運(yùn)用了MicrosoftVisualStudio2008,游戲時(shí)只需要普通的自帶打開軟件即可。數(shù)據(jù)文件設(shè)計(jì)本游戲的設(shè)計(jì)程序主要有兩個(gè)表構(gòu)成,它們分別為游戲規(guī)則表與游戲構(gòu)造表,如圖數(shù)據(jù)文件截圖卜面是游戲構(gòu)造文件示例性展示,如圖3.1.2市打字游說myRandooi ▼白dasznyianlon(sliticint_i-L.|i publicgstChv(intItn)Istrict]char=n”武打M口『A, JF",飛‘「工'口",TT.TTJF**T):飛,T.V,干,?。篢TJY,丁卜?.anlonraid;ttrin*itr=whi1e(true)Iif(jtr.Length==lui)treak:ruid-TieRgndpm(D^terinf.JTpw.IIi11isecand*_i)i;iltr-rand.ITe^t(0,2S)i:tstr.工ndej£lEC_dur[rD!=-1](Etr-}str'二_cKarLr];■■3.2游戲內(nèi)容表卜面是游戲規(guī)則文件示例性展示,如圖3.1.3return;ItkiSutimerrlie.Interval-tim>e;ArrazListal-nwMi■期Li式0:〃在故已經(jīng)沉;建|最僵部的在艮0中的Lyftireich(Di:tionaryintrydeinhllab)(-北力lit-(L小白JJ艇.VslmifaabLocation.IKthis.Sire.Height-90){〃如果1處坐標(biāo)大于栩序最詢-迎行必DisMstO:/廨臬l*bsi.顯也?.liy):/施當(dāng)苗hashfi1怔電了存入arr承ist〃落地球生命thu.T^t二噪"+Q“gt/50:+1)4哪生副配”+_lift+"分?jǐn)?shù):"+_count.}*1"ifaal.Lotfttion.X<3SD齷lab.Locition.I>250){Lotahon=nmQab.Loc&tian.K,lab.LocatiuLT+nlu):3.1.3游戲規(guī)則表操作數(shù)據(jù)文件啟動(dòng)MicrosoftVisualStudio2008運(yùn)行程序,即可開始游戲界面設(shè)計(jì)本軟件主要包括兩部分:游戲控制和游戲難度。游戲控制里又有三個(gè)控制按鈕,分別為開始,暫停和積分兌換。開始和暫停鍵分別控制著游戲的進(jìn)程狀態(tài)。每成功擊打一個(gè)飄落字母,便可獲得一個(gè)積分,積分兌換作用是將玩家游戲過程中成功積攢的積分轉(zhuǎn)換為玩家的生命值, 每十個(gè)積分可換一次生命值。此設(shè)置大大加強(qiáng)游戲的可玩性。本游戲主要有主界面、開始界面與結(jié)束界面構(gòu)成,如圖圖3.4.1主界面圖3.4.2開始界面圖3.4.3結(jié)束界面3.1.5 積分換生命界面3.4其他說明由于時(shí)間倉促,其中讓字母實(shí)現(xiàn)交叉飄動(dòng)沒能夠完成, 在后期我們會(huì)進(jìn)一步設(shè)計(jì)和完善。4系統(tǒng)實(shí)現(xiàn)publicvoidflutter(inttime,intvalue){if(_life<=0)stop();MessageBoxShow("生命值為0,游戲結(jié)束!","對不起");return;}this.timerrate.Interval=time;ArrayListal=newArrayList(); 〃存放已經(jīng)沉淀到最底部的 lab在hash中的keyforeach(DictionaryEntrydein_htlab){Labellab=(Label)de.Value;if(lab.Location.Y>=this.Size.Height-80){ 〃如果lab坐標(biāo)大于本程序最底部-80執(zhí)行l(wèi)ab.Dispose(); //銷毀labal.Add(de.Key); //把當(dāng)前hash的key存入arraylist_life--; //落地減生命this.Text= "第"+((_count/50)+1)+ "關(guān)您的生命值:”+_life+ "分?jǐn)?shù):"+_count;}elseif(lab.Location.X<350&&lab.Location.X>250){lab.Location= newPoint(lab.Location.X,lab.Location.Y+value);}elseif(lab.Location.X>350){lab.Location= newPoint(lab.Location.X-value,lab.Location.Y+value);}else{lab.Location= newPoint(lab.Location.X+value,lab.Location.Y+value);}//讓lab像屏幕下方移動(dòng)for(inti=0;i<al.Count;i++) //循環(huán)從hash移除已經(jīng)不顯示的lab{_htlab.Remove(al[i]);}}這里重點(diǎn)修改了字符飄動(dòng)的軌跡5總結(jié)經(jīng)過這次課程設(shè)計(jì),我們完成了自己選擇的打字母小游戲課題,有挺多的收獲。雖然程序最后是完成了,但是實(shí)現(xiàn)的過程中卻遇到了很多問題。 平時(shí)感覺挺簡單的那些枯燥單調(diào)的代碼,真正到了自己運(yùn)用的時(shí)候卻無從下手; 好不容易寫出來的一大段代碼,一經(jīng)調(diào)試卻跳出來一大堆的錯(cuò)誤;還有就是這最后的課程設(shè)計(jì)報(bào)告書,平時(shí)都不怎么碰的word文檔,文檔處理、排版又成了令人頭疼的一大問題。但是,解決問題的過程恰是不斷學(xué)習(xí)的過程:平時(shí)所學(xué)的一小段一小段的代碼到現(xiàn)在必須把它們聯(lián)系起來使用,把平時(shí)學(xué)的知識(shí)運(yùn)用到實(shí)際,增強(qiáng)了我的實(shí)踐動(dòng)手能力;面對一大堆的錯(cuò)誤,只得一個(gè)個(gè)找出來,一個(gè)個(gè)改掉,一遍遍的調(diào)試,一行行代碼的運(yùn)行,不斷地重復(fù),最終將錯(cuò)誤改正,這番痛苦的過程讓我學(xué)們會(huì)了如何調(diào)試運(yùn)行,如何逐行逐語句運(yùn)行,鍛煉了我調(diào)試、測試程序的能力;同時(shí),報(bào)告書的書寫,讓我們學(xué)會(huì)了word文檔的排版以及文檔處理,學(xué)會(huì)如何做出美觀整齊的課程設(shè)計(jì)報(bào)告書。課程設(shè)計(jì)中遇到的問題只憑自己苦思冥想是不能全部解決的, 這是同學(xué)老師的建議和網(wǎng)絡(luò)給了我很大的幫助。遇到自己解決不了的問題時(shí),多多向老師同學(xué)請教,或許問題就能迎刃而解。另外,生在這個(gè)信息化社會(huì),互聯(lián)網(wǎng)的作用不言而喻,許多問題只要在網(wǎng)上搜索一下就能得到非常令人滿意的解答。 此次課程設(shè)計(jì)鍛煉了我和老師同學(xué)交流的能力,以及網(wǎng)上搜索資源,篩選信息的能力
參考文獻(xiàn)1明日科技,C#從入門到精通,北京.清華大學(xué)出版社,20082付強(qiáng)丁寧,C#編程實(shí)戰(zhàn)寶典,北京清華大學(xué)出版社,2014201420113畢文斌孫明亮,C#Windows201420114齊立波,C趴門經(jīng)典,北京,清華大學(xué)出版社,第五版5王小科,王軍,C#FF發(fā)實(shí)戰(zhàn)1200例,北京,清華大學(xué)出版社,附錄1:項(xiàng)目源碼usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Collections;//Hashtableaddnamespace打字游戲{publicpartialclassForm1:Form{//私有字段Hashtable_htlab=newHashtable();//存放lab控件int_count=0; //游戲分?jǐn)?shù)int_life=10; //生命值,小于0死亡,過關(guān)生命10publicForm1(){InitializeComponent();}///<summary>///開始游戲///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidTSMenuItemStart_Click(objectsender,EventArgse){this.timerlab.Enabled=true;this.timerrate.Enabled=true;this.timerrate.Interval=1;this.timerlab.Interval=1;_count=0;_life=10;if(_htlab==null)_htlab= newHashtable();}〃/<summary>///暫停游戲///</summary>〃/<paramname="sender"></param>///<paramname="e"></param>privatevoidTSMenuItemPause_Click(objectsender,EventArgse){this.timerlab.Enabled=false;this.timerrate.Enabled=false;}///<summary>/// 讓字符飄動(dòng)的定時(shí)器Tick事件///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidtimerrate_Tick(objectsender,EventArgse){//調(diào)用飄動(dòng)方法,設(shè)置飄動(dòng)速度為10毫秒移動(dòng)(_count/50)+1個(gè)大小的位置flutter(10,(_count/50)+6);}//產(chǎn)生字符的定時(shí)事件privatevoidtimerlab_Tick(objectsender,EventArgse){〃調(diào)用產(chǎn)生字符方法,每888-(_count/50)*200 毫秒產(chǎn)生一個(gè)字號(hào)20的字符create(888-(_count/50)*200,20);}///<summary>///游戲結(jié)束時(shí)狀態(tài)///</summary>publicvoidstop(){this.timerlab.Enabled=false;this.timerrate.Enabled= false;foreach(DictionaryEntry dein_htlab){Labell=(Label)de.Value;l.Dispose();}this.Text="游戲結(jié)束,請從新開始!";}///<summary>/// 讓屏幕控件飄動(dòng)方法〃/ </summary>///<paramname="time">飄動(dòng)速度</param>///<paramname="value”>飄動(dòng)范圍-在軟件上移動(dòng)的范圍</param>publicvoidflutter(inttime,intvalue){if(_life<=0){stop();MessageBoxShow("生命值為0,游戲結(jié)束!","對不起");return;}this.timerrate.Interval=time;ArrayListal=newArrayList();//存放已經(jīng)沉淀到最底部的lab在hash中的keyforeach(DictionaryEntrydein_htlab){Labellab=(Label)de.Value;if(lab.Location.Y>=this.Size.Height-80){ //如果lab坐標(biāo)大于本程序最底部-80執(zhí)行l(wèi)ab.Dispose(); //銷毀labal.Add(de.Key); //把當(dāng)前hash的key存入arraylist_life--; //落地減生命this.Text= "第"+((_count/50)+1)+ "關(guān)您的生命值:"+_life+ "分?jǐn)?shù):"+_count;}elseif(lab.Location.X<350&&lab.Location.X>250){lab.Location= newPoint(lab.Location.X,lab.Location.Y+value);}elseif(lab.Location.X>350){lab.Location= newPoint(lab.Location.X-value,lab.Location.Y+value);}else{lab.Location= newPoint(lab.Location.X+value,lab.Location.Y+value);}//讓lab像屏幕下方移動(dòng)}for(inti=0;i<al.Count;i++) //循環(huán)從hash移除已經(jīng)不顯示的lab{_htlab.Remove(al[i]);}}〃/ <summary>/// 從屏幕產(chǎn)生字符///</summary>///<paramname="value">產(chǎn)生速度-毫秒</param>///<paramname="font">字體大小</param>publicvoidcreate(intvalue,intfont){this.Text="第"+((_count/50)+1)+ "關(guān)您的生命值:"+_life+ "分?jǐn)?shù):"+_count;this.timerlab.Interval=value; //設(shè)置產(chǎn)生速度毫秒Labellab=newLabel();lab.AutoSize=true;lab.Font=newFont("MicrosoftSansSerif",font,FontStyle.Regular,GraphicsUnit.Point,0); //設(shè)置字體Randomr=newRandom);lab.ForeC010r=Color.FromArgb(r.Next(100,255),r.Next(100,255),r.Next(100,255)); //隨機(jī)生成顏色//屏幕隨機(jī)出現(xiàn)位置lab.Location=newPoint((this.Size.Width-50)-r.Next(0,( this.Size.Width-50)),28);string_char= newmyRandor().getChar(1); //獲取隨機(jī)出來的字符stringlabname="";//lab名字inti=0; 〃臨時(shí)計(jì)數(shù)器存儲(chǔ)當(dāng)前界面上的lab是否存在本次生成的字母個(gè)數(shù)foreach(DictionaryEntrydein_htlab){if(de.Key.ToString().IndexOf(_char)!=-1){i++;}}labname=_char+(i* DateTime.Now.Millisecond);lab.Name=labname; 〃設(shè)置lab名字,防止打亂順序lab.Text=_char; //讓止匕l(fā)ab顯示生成的字符this.Controls.Add(lab);//把本次隨機(jī)出的lab放入Hashtable集合,方便驗(yàn)證_htlab.Add(labname,lab);}privatevoidTSMenuItemLife_Click(objectsender,EventArgse){if(_count>=10){_life++;_count-=10;this.Text="您的生命值:"+_life+ "分?jǐn)?shù):"+_count;}elseMessageBoxShow("您的游戲積分不足10!","對不起");}//判斷用戶輸入字符的事件privatevoid
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國自動(dòng)式雙面研磨床行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 土地廠房買賣合同
- 空心磚采購合同
- 石材采購合同范本
- 涂料勞務(wù)承包合同協(xié)議書
- 醫(yī)療器械配送合同
- 汽車貨物運(yùn)輸合同樣本
- 2025農(nóng)村簡易買賣合同
- 2025如何確定勞動(dòng)合同的成立商業(yè)保理資格
- 最高額抵押擔(dān)保合同
- 2024年江西省南昌市中考一模數(shù)學(xué)試題(含答案)
- 48貴州省貴陽市2023-2024學(xué)年五年級上學(xué)期期末數(shù)學(xué)試卷
- 《采暖空調(diào)節(jié)能技術(shù)》課件
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 游戲綜合YY頻道設(shè)計(jì)模板
- arcgis軟件操作解析課件
- 中興ZCTP 5GC高級工程師認(rèn)證考試題庫匯總(含答案)
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)教程PPT全套完整教學(xué)課件
- 小學(xué)科學(xué)項(xiàng)目化作業(yè)的設(shè)計(jì)與實(shí)施研究
- 2020年中考生物試卷及答案
- MCNP-5A程序使用說明書
評論
0/150
提交評論