




已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VISUAL BASIC 課程設(shè)計(jì)報(bào)告 題目 打字練習(xí) 姓名 學(xué)號(hào) 班級(jí) 1 題目介紹 在計(jì)算機(jī)及其它數(shù)碼產(chǎn)品日益普及的今天 人們使用鍵盤應(yīng) 像使用筆寫字一樣熟練 進(jìn)行打字練習(xí)是熟悉鍵盤并提高打字速 度的豪放法 本題目要求編制一個(gè)打字練習(xí)游戲 是用戶在游戲 過(guò)程中練習(xí)指法 2 設(shè)計(jì)過(guò)程中用到的知識(shí)點(diǎn) 1 控件數(shù)組 2 鍵盤事件處理 3 文本文件的讀寫 4 多模塊程序設(shè)計(jì) 5 隨機(jī)值的生成 3 課題要求和承擔(dān)的任務(wù) 1 游戲開始時(shí)出現(xiàn) 打字設(shè)置 窗口 在 您的姓名 文本 框中輸入用戶名 若未輸入名字 就點(diǎn)擊 開始練習(xí) 與 查看成績(jī) 按鈕 則提示用戶輸入姓名 若未輸入時(shí)間 就點(diǎn)擊 開始練習(xí) 與 查看成績(jī) 按鈕 則提示用戶輸 入時(shí)間 在 打字設(shè)置 窗口可以設(shè)置打字速度和難度 速度決定字母下落的快慢 共分高 中 低速三檔 難度 等級(jí)也分為三檔 小寫字母 大寫字母 所有混合 字母 數(shù)字和符號(hào) 2 選擇速度和難度之后 單擊 開始練習(xí) 按鈕后 主頁(yè)面 以全屏方式顯示 根據(jù)難度的設(shè)置 屏幕上隨即產(chǎn)生并落 下各種字符 若用戶在字符落到屏幕底部之前敲擊了相應(yīng) 的鍵盤鍵 則該字符被 擊中 后消失 擊中時(shí)在字符位 置上顯示一個(gè)爆炸的效果 程序根據(jù)速度和難度的不同自 動(dòng)進(jìn)行計(jì)分 分?jǐn)?shù)實(shí)時(shí)地顯示在主界面的頂部 計(jì)分標(biāo)準(zhǔn)為 1 慢速 小寫字母 打中一個(gè) 1 分 2 慢速 大寫字母 打中一個(gè) 2 分 3 慢速 混合字符 打中一個(gè) 3 分 4 中速 小寫字母 打中一個(gè) 4 分 5 中速 大寫字母 打中一個(gè) 5 分 6 中速 混合字符 打中一個(gè) 6 分 7 高速 小寫字母 打中一個(gè) 7 分 8 高速 大寫字母 打中一個(gè) 8 分 9 高速 混合字符 打中一個(gè) 9 分 3 打字前可以選擇打字的時(shí)間 時(shí)間一到彈出消息框顯示 用戶本次練習(xí)得分 并提示是否繼續(xù)練習(xí) 如果選 否 返回 打 字設(shè)置 窗口 用戶的成績(jī)被保存在 SCORE TXT 文件中 供以 后查詢 4 當(dāng)下落字符中有相同字符時(shí) 一次只能打掉一個(gè) 5 在打字過(guò)程中 可以按 ESC 鍵中止游戲 返回打字設(shè)置窗 口 但游戲的成績(jī)并不保存 6 打字過(guò)程中如果按 F1 功能鍵 彈出鍵盤布局窗口供用戶 參考 顯示該窗口時(shí)主窗口的字符暫停下落 關(guān)閉此窗口 游戲繼續(xù)進(jìn)行 7 在 打字設(shè)置 窗口中 點(diǎn)擊 查看成績(jī) 按鈕 顯示當(dāng) 前用戶的歷次練習(xí)的成績(jī)和時(shí)間 8 要求程序運(yùn)行時(shí)將各個(gè)字符均勻地分布占滿屏幕寬度 4 程序關(guān)鍵代碼 frmSet 界面代碼 Option Explicit 強(qiáng)制變量聲明 Private Sub Form Load Label2 Caption Now End Sub Private Sub cmdPlay Click If txtName Text Then MsgBox 您還沒(méi)有輸入姓名 32 打字設(shè)置 txtName SetFocus Exit Sub End If If Text1 Text Then MsgBox 您還沒(méi)有輸入時(shí)間 32 打字設(shè)置 Text1 SetFocus Exit Sub End If games Show games deadtime Val Text1 Text 60 Me Hide End Sub Private Sub cmdScore Click Dim pd1 As PersonData Dim pd2 As PersonData Dim str As String Dim strFind As Boolean pd1 name txtName Text If Dir App Path Score txt Then 測(cè)試一個(gè)指定的路徑下是否有指定的文件或文 件夾 MsgBox 文件不存在 48 成績(jī)查看 Exit Sub Else Open App Path Score txt For Input As 1 If txtName Text Then 讀取成績(jī) Do While Not EOF 1 Input 1 pd2 name pd2 score pd2 time 讀入值賦給相應(yīng)的變量 strFind True Grade Text1 Text Grade Text1 Text pd2 name Space 2 pd2 score 分 Space 2 pd2 time Chr 13 Chr 10 Loop Else Do While Not EOF 1 Input 1 pd2 name pd2 score pd2 time If pd2 name pd1 name Then strFind True Grade Text1 Text Grade Text1 Text pd2 name Space 2 pd2 score 分 Space 2 pd2 time Chr 13 Chr 10 End If Loop End If Close 1 If strFind True Then Grade Show Me Hide Else MsgBox 沒(méi)有您的成績(jī)記錄 48 成績(jī)查看 End If End If End Sub Private Sub cmdExit Click Unload Me End Sub Private Sub Form Unload Cancel As Integer Unload games End Sub Private Sub Frame2 DragDrop Source As Control X As Single Y As Single End Sub Private Sub Label2 Click End Sub Games 界面代碼 Option Explicit Dim second As Integer Public deadtime As Integer Private Sub Form KeyDown KeyCode As Integer Shift As Integer If KeyCode vbKeyF1 Then Timer1 Enabled False frmKB Show 1 Timer1 Enabled True End If End Sub Private Sub Form Load Dim i As Integer For i 1 To 9 Load lblLetter i Next For i 0 To 9 lblLetter i Left Screen Width 11 i 1 lblLetter i Top 0 lblLetter i Visible True Next Start End Sub Private Sub Form KeyPress KeyAscii As Integer Dim i As Integer For i 0 To lblLetter Count 1 If Chr KeyAscii lblLetter Item i Caption Then 有匹配字符 ScoreCount imgExplode Left lblLetter Item i Left imgExplode Top lblLetter Item i Top imgExplode Visible True Timer2 Enabled True lblLetter Item i Top 0 Letter i Label2 Caption frmSet txtName Text 你現(xiàn)在的得分是 TotalScore 分 Exit Sub End If Next If KeyAscii 27 Then If MsgBox 真的要結(jié)束練習(xí)嗎 vbYesNo vbQuestion 打字練習(xí) vbYes Then Unload Me frmSet Visible True End If End If TotalScore TotalScore 1 Label2 Caption frmSet txtName Text 你現(xiàn)在的得分是 TotalScore 分 End Sub Private Sub Image1 Click End Sub Private Sub Timer1 Timer Dim i As Integer For i 0 To lblLetter Count 1 Randomize Speed i Next Label2 Caption frmSet txtName Text 你現(xiàn)在的得分是 TotalScore 分 End Sub Private Sub Timer2 Timer Dim i As Integer For i 0 To lblLetter Count 1 If lblLetter Item i Top Me Height Then Letter i End If Next imgExplode Visible False Timer2 Enabled False End Sub Private Sub Timer3 Timer Dim person As PersonData second second 1 lblTime second 60 second Mod 60 If second deadtime Then person name frmSet txtName Text person score TotalScore person time frmSet Label2 Caption Open App Path Score txt For Append As 1 Write 1 person name person score person time Close 1 If MsgBox frmSet txtName Text 本次練習(xí)您的得分是 TotalScore 分 Chr 13 Chr 10 游戲結(jié)束 繼續(xù)嗎 vbYesNo vbQuestion 打字練習(xí) vbYes Then TotalScore 0 second 0 Label2 Caption frmSet txtName Text 你現(xiàn)在的得分是 TotalScore 分 Start Else Unload Me frmSet Visible True End If End If End Sub Grade 界面代碼 Private Sub Command1 Click frmSet Show Unload Me End Sub 模塊代碼 Type PersonData name As String score As String time As String End Type Public TotalScore As Integer 游戲總得分 Public Sub ScoreCount 計(jì)算總分?jǐn)?shù) If frmSet LSpeed Value And frmSet Lowercase Value Then TotalScore TotalScore 1 ElseIf frmSet LSpeed Value And frmSet Uppercase Value Then TotalScore TotalScore 2 ElseIf frmSet LSpeed Value And frmSet Mixcase Value Then TotalScore TotalScore 3 ElseIf frmSet MSpeed Value And frmSet Lowercase Value Then TotalScore TotalScore 4 ElseIf frmSet MSpeed Value And frmSet Uppercase Value Then TotalScore TotalScore 5 ElseIf frmSet MSpeed Value And frmSet Mixcase Value Then TotalScore TotalScore 6 ElseIf frmSet HSpeed Value And frmSet Lowercase Value Then TotalScore TotalScore 7 ElseIf frmSet HSpeed Value And frmSet Uppercase Value Then TotalScore TotalScore 8 ElseIf frmSet HSpeed Value And frmSet Mixcase Value Then TotalScore TotalScore 9 End If End Sub Public Sub Letter n As Integer 根據(jù)選擇產(chǎn)生英文字母 If frmSet Lowercase Value Then j Int Rnd 26 97 產(chǎn)生小寫字母 ElseIf frmSet Uppercase Value Then If n Mod 2 0 Then 產(chǎn)生大小寫混合字母 j Int Rnd 26 65 Else j Int Rnd 26 97 End If ElseIf frmSet Mixcase Value Then j Int Rnd 79 48 產(chǎn)生混合字母 End If games lblLetter Item n Caption Chr j games lblLetter Item n ForeColor RGB Rnd 254 Rnd 254 Rnd 254 End Sub Public Sub Speed n As Integer 根據(jù)選擇產(chǎn)生不同的速度 If frmSet LSpeed Value Then games lblLetter Item n Top games lblLetter Item n Top 50 ElseIf frmSet MSpeed Value Then games lblLetter Item n Top games lblLetter Item n Top 90 ElseIf frmSet HSpeed Value Then games lblLetter Item n Top games lblLetter Item n Top 130 End If If games lblLetter Item n Top games Height Then games lblLetter Item n Top 0 TotalScore TotalScore 10 Letter n End If End Sub Public Sub Start With games 調(diào)用會(huì)反復(fù)出現(xiàn)的對(duì)象名 Label2 Caption frmSet txtName Text 您現(xiàn)在的得分是 TotalScore 分 imgExplode Visible False Dim i As Integer For i 0 To lblLetter Count 1 lblLetter Item i Top 1000 Next For i 0 To lblLetter Count 1 Randomize 為隨機(jī)數(shù)生成器生成一個(gè)隨機(jī)數(shù)省略 EXPN1 則用系統(tǒng)時(shí)鐘返回 值作為 種子 值 Letter i Next End With End Sub 5 課程設(shè)計(jì)中的一些問(wèn)題以及解決的方法 1 在編 frmSet 中的程序時(shí) 為了讓沒(méi)輸入名字和時(shí)間都要提示 玩家輸入 我為兩個(gè)都編寫了語(yǔ)句 但卻發(fā)現(xiàn) 當(dāng)兩者都沒(méi) 輸入的時(shí)候 它是先后跳出兩個(gè)對(duì)話框來(lái)提示 這顯然是沒(méi) 有必要的 所以 一直在那想該怎么達(dá)到好的效果 后來(lái)才 想到應(yīng)該在對(duì)名字文本框確認(rèn)后如不符合就應(yīng)強(qiáng)制退出 這 樣就不會(huì)重復(fù) 2 最令我頭疼的還是那個(gè)更上一層樓的要求 怎么樣才能使在 游戲過(guò)程中碰到相同并符合的字符時(shí) 最先擊打最靠近底部 的字符呢 我已開始的時(shí)候就是把從左往右十列建立一個(gè)變 量數(shù)組 用 for next 語(yǔ)句來(lái)依次實(shí)行 這樣就程序在每一回 查找相同字符時(shí)都是呆板地從左往右掃描一遍 一旦找到合 適字符就引發(fā)擊中事件 并返回最左端重新開始掃描 但是怎么樣才能達(dá)到更上一層樓的效果呢 我想了很多方法 并查找了相關(guān)的資料 并覺得這種方法可行 那就是先把所 有的相同的符合的字符先全都找出來(lái) 并繼續(xù)在這些滿足條 件的字符中再挑選出 top 值最大的一個(gè)字符 即是最靠近屏 幕底端的字符 再擊中就可以了 3 還一個(gè) 問(wèn)題就是設(shè)計(jì)在同意屏幕中弄出不同的速度 這一點(diǎn) 我就沒(méi)有做到 深表遺憾 6 對(duì)游戲改進(jìn)的建議以及一些控件的其它設(shè)置方法 1 覺得游戲的查成績(jī)部分有值得完善的地方 成績(jī)被保存 在指定的文件中 但是如果玩的次數(shù)多了會(huì)有一大堆成績(jī)保存在里 面顯得很亂而且不便于成績(jī)查詢 因此我建議在成績(jī)查詢界面加一 個(gè)清除成績(jī)的控件 點(diǎn)擊控件已有的成績(jī)被清除 2 我覺得控制下落速度除了可以加控件的 TOP 值之外 還 可以在 TOP 值一定的情況下用 TIMER 的 INTERVAL 屬性 不同 的下落速度使用不同的屬性值 如低速 300 中速 200 高速 100 也可實(shí)現(xiàn)此功能 3 在記分時(shí) 難度不同得分不同 在此程序中我用最笨的方 法就是把所有情況的用文字列出來(lái) 其實(shí)用它們的 INDEX 屬
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年環(huán)境影響評(píng)價(jià)公眾參與效果評(píng)估與優(yōu)化路徑報(bào)告
- 2025年元宇宙社交平臺(tái)虛擬社交隱私泄露與用戶體驗(yàn)研究報(bào)告
- 2025年元宇宙社交平臺(tái)社交廣告投放策略與效果評(píng)估報(bào)告
- 2025年醫(yī)院信息化建設(shè)成本效益評(píng)估報(bào)告
- 2025年醫(yī)院信息化建設(shè)電子病歷系統(tǒng)初步設(shè)計(jì)評(píng)估報(bào)告
- 2025年電商售后服務(wù)質(zhì)量提升:售后服務(wù)團(tuán)隊(duì)溝通策略與效果評(píng)估報(bào)告001
- 2025年房地產(chǎn)市場(chǎng)區(qū)域分化對(duì)房地產(chǎn)基金投資策略的影響報(bào)告
- 快消品包裝行業(yè)可持續(xù)發(fā)展與市場(chǎng)競(jìng)爭(zhēng)力研究報(bào)告
- 2025年物流金融服務(wù)在供應(yīng)鏈金融風(fēng)險(xiǎn)控制中的市場(chǎng)風(fēng)險(xiǎn)監(jiān)測(cè)與預(yù)警報(bào)告
- 城市污水處理廠智能化升級(jí)改造與智能優(yōu)化調(diào)度平臺(tái)應(yīng)用案例實(shí)施路徑報(bào)告001
- 幼兒生活常規(guī)教育的現(xiàn)狀研究
- 完整版-第八版內(nèi)科冠心病課件
- 戴爾電腦培訓(xùn)課件
- 光伏電站逆變器檢修規(guī)程
- 醫(yī)生護(hù)士家長(zhǎng)父母進(jìn)課堂助教-兒童醫(yī)學(xué)小常識(shí)PPT
- 2023春國(guó)開幼兒園科學(xué)教育專題形考任務(wù)1-4試題及答案
- 丹東港大東港區(qū)糧食、#13、#14泊位升級(jí)改造工程環(huán)境影響報(bào)告
- 生產(chǎn)計(jì)劃排產(chǎn)表-自動(dòng)排產(chǎn)
- 基于PLC的臺(tái)車呼叫控制設(shè)計(jì)
- JJF 1334-2012混凝土裂縫寬度及深度測(cè)量?jī)x校準(zhǔn)規(guī)范
- GB/T 18711-2002選煤用磁鐵礦粉試驗(yàn)方法
評(píng)論
0/150
提交評(píng)論