版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C++程序設計實踐打MadeBy陳鍇劉若欣王一凡楊仕俊地鼠*所有排序均按學號DEMO題目分析總體設計介紹詳細設計介紹遇到的問題尚存的不足心得體會1.題目分析①題目分析本游戲是一個基于對話框C++應用程序。在程序的編輯中涉及到MFC控件的編輯和使用,文件的讀,消息的響應。
本程序可以實現的功能有:1.選擇不同的難度開始游戲;2.鼠標擊中“地鼠”時得分+1;3.未擊中時得分不變,統(tǒng)計未擊中次數+1;4.切換難度時得分清零;5.點錯5次后顯示“GameOver”,得分不再增加,提示重選難度進行游戲;6.點擊按鈕讀取txt文件顯示得分榜2.總體設計分析項目提出主邏輯控件與功能函數得分+1功能函數未擊中+1功能函數難度選擇控件與消息響應函數得分榜顯示控件與消息響應函數調試與優(yōu)化開始選擇關卡擊中地鼠?得分加一未擊中加一5次未擊中?鼠標點擊YNYN3.詳細設計分析③詳細設計介紹界面構成模塊實現:王一凡PushButtonComboBoxStaticText③詳細設計介紹控件屬性模塊實現:王一凡ComboBoxPushButton將準備好的png格式文件上傳到在線icon制作網站:http://www.ico.la/③詳細設計介紹icon制作模塊實現:王一凡在資源視圖中右擊icon,選擇insert,在彈出的對話框中選擇導入③詳細設計介紹icon導入模塊實現:王一凡③詳細設計介紹添加變量模塊實現:陳鍇楊仕俊public:CComboBoxm_eb;Cstringm_select;private:
inta;interror;CButton*PMouse[16];intnowMouse;
intgameScore;③詳細設計介紹編寫OnInitDialog函數模塊實現:陳鍇楊仕俊SetWindowText("打地鼠");//改變標題欄的名稱
gameScore=0;//初始得分為0
nowMouse=0;//初始化鼠標點擊位置
③詳細設計介紹編寫OnInitDialog函數模塊實現:陳鍇楊仕俊srand((unsigned)time(NULL));//隨機數發(fā)生器播種,srand函數是隨機數發(fā)生器的初始化函數。原型:voidsrand(unsignedseed);用法:它需要提供一個種子,這個種子會對應一個隨機數,如果使用相同的種子后面的rand()函數會出現一樣的隨機數。如:srand(1);直接使用1來初始化種子。不過為了防止隨機數每次重復,常常使用系統(tǒng)時間來初始化,即使用time函數來獲得系統(tǒng)時間,它的返回值為從00:00:00GMT,January1,1970到現在所持續(xù)的秒數,然后將time_t型數據轉化為(unsigned)型再傳給srand函數,即:srand((unsigned)time(&t));還有一個經常用法,不需要定義time_t型t變量,即:srand((unsigned)time(NULL));直接傳入一個空指針,因為你的程序中往往并不需要經過參數獲得的t數據。③詳細設計介紹編寫OnInitDialog函數模塊實現:陳鍇楊仕俊for(inti=0;i<16;i++){
PMouse[i]=(CButton*)GetDlgItem(IDC_BUTTON1+i);}//GetDlgItem函數的功能是返回窗口中指定參數ID的子元素的句柄,可以通過返回的句柄對窗口內的子元素進行操作。一個句柄是指使用的一個唯一的整數值,即一個4字節(jié)(64位程序中為8字節(jié))長的數值,來標識應用程序中的不同對象和同類中的不同的實例如,一個窗口,按鈕,圖標,滾動條,輸出設備,控件或者文件等,應用程序能夠通過句柄訪問相應的對象的信息。本段即將指向第i個button的指針存入數組PMouse,實現button控件PMouse的一一對應③詳細設計介紹編寫OnCommand函數模塊實現:陳鍇楊仕俊CStringstr;//定義CString型變量strfor(inti=0;i<16;i++){if(LOWORD(wParam)==PMouse[i]->GetDlgCtrlID())
break;}//GetDlgCtrlID函數的功能是獲得指定控件的ID號,LOWORD(wParam)是命令的ID號。
③詳細設計介紹編寫OnCommand函數模塊實現:陳鍇楊仕俊if(i==nowMouse){gameScore++;//如果檢測到鼠標響應位置與隨機生成的“地鼠”位置相同,得分加一
str.Format("%d",gameScore);//Format函數將十進制數轉化為字符串,%d表示十進制,這里將gameScore轉化為字符串并賦給str
CStatic*pstr=(CStatic*)GetDlgItem(IDC_STATIC);//將文本str傳輸到靜態(tài)控件
pstr->SetWindowText(str);//將靜態(tài)控件中的文本str即得分顯示出來}③詳細設計介紹編寫OnTimer函數模塊實現:陳鍇楊仕俊PMouse[nowMouse]->SetIcon(0);//SetIcon能將圖標自動地放到按鈕的上面,缺省時居中放置。如果圖標太大,則會自動剪裁。
nowMouse=rand()%16;//產生隨機數取余
PMouse[nowMouse]->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));//加載已裝載的圖片資源
CDialog::OnTimer(nIDEvent);//OnTimer()是響應CDialog對象產生的WM_Timer消息。nIDEvent表示要響應TIMER事件的ID。③詳細設計介紹編寫OnSelchangeCombo函數模塊實現:劉若欣intnIndex=m_eb.GetCurSel();//GetCurSel函數用于獲取當前光標位置,定義int型變量nIndex并將得到的光標位置賦給它。
CStringstrCBText;//定義CString類變量strCBText
m_eb.GetLBText(nIndex,strCBText);//GetLBText把選中字符賦值給strCBText即將光標所在的字符串賦給strCBTextintnLength=strCBText.GetLength();//定義int型變量nLength并將strCBText的長度賦給它intnLengthLeft=0;//定義int型變量nLength初始值為0
nLengthLeft=strCBText.Find(":");//用Find函數獲取冒號的位置
③詳細設計介紹編寫OnSelchangeCombo函數模塊實現:劉若欣
CStringstrRightString;//定義CString型變量strRightString
strRightString=strCBText.Right(nLength-nLengthLeft-1);//Right函數從右邊第一個字符起獲得從右向左nLength-nLengthLeft-1個字符。此處獲得冒號右面的字符串。
a=atoi(strRightString);//atoi函數將字符串轉化為整型數。具體為如果第一個非空格字符存在,是數字或者正負號則開始做類型轉換,之后檢測到非數字(包括結束符\0)字符時停止轉換,返回整型數。SetTimer(1,a,NULL);//設置計數器,時間間隔為a,單位毫秒
③詳細設計介紹編寫OnButton函數模塊實現:劉若欣CFilemyfile;CStringfilename=“c:\\得分榜.txt”;
myfile.Open(filename,CFile::modeRead);//文件打開及打開方式intfilelength=myfile.GetLength();
//獲取文件長度CStringdata;
//定義字符串類,接收數據char*temp;
//臨時變量,用于read函數按字節(jié)讀取數據temp=newchar[filelength+1];myfile.Read(temp,filelength);
temp[filelength]='\0';
//讀文件data=temp;//賦值給data,等號=已經在CString類中重載,直接使用,可以實現賦值delete[]temp;GetDlgItem(IDC_STATIC3)->SetWindowText(data);//發(fā)送到IDC_STATIC34.遇到的問題及解決遇到的問題及解決④在低難度的模式下,鼠標快速多次單擊一個有“地鼠”的Button,得分會持續(xù)增加。問題一:“可以刷分了!233333”遇到的問題及解決④
解決方法:當鼠標響應當前的地鼠位置,可以重新運行一邊Ontimer函數,更新隨機地鼠的位置。不過此時需要重新設置時間,否則就會出現地鼠位置突然變化的情況。因為前一個地鼠(1000ms)可能在500ms被選中,此時地鼠變換位置,就會只停留500ms就轉換位置了,所以要重新設置時間。遇到的問題及解決④由于rand()的隨機性,會出現rand()%16為0的情況。在這種情況下,沒有任何一個Button加載地鼠圖標。問題二:“什么都沒有讓寶寶怎么點???
嚴重影響游戲體驗”遇到的問題及解決④解決方法:加一個循環(huán)語句和一個IF語句,循環(huán)5次,當隨機數取余為0的情況就重新取余,5次就大大降低了取余為0的情況。5.尚存的不足⑤尚存的不足1.UI有待優(yōu)化;2.Button不能批量定義大小,批量對齊;3.尚未完成得分榜的寫操作;4.……6.心得體會⑥心得體會經過一周多的時間我們完成了一個簡單的打地鼠程序,經過這次小組合作我認識到了很多。首先一個明確的目標十分重要,在開始設計之前我們花了很長時間來討論要做什么,否定了很多不成熟的方案。但是一旦目標定下來是打地鼠后進度就開始變快了,根據組內每個人的特點分配了不同的任務,學習能力比較強的同學負責一些較難的模塊,然后每個人將各自負責的部分在組內講解清楚,真正達到了小組學習的目的。⑥心得體會另外我們發(fā)現程序設計中不止需要學習能力,創(chuàng)新能力也很重要,通過網絡了解了打地鼠程序的主要思路和一些基本知識后,我們將一部分精力放在了優(yōu)化程序上,增加一些我們自己希望的功能,刪去一些我們認為設計不好的地方,(辯證否定的實質是揚棄,新事物對舊事物既批判又繼承,既克服其消極因素又保留其積極因素)。⑥心得體會我們還認識到,一個程序的真正價值是面向使用者,只有充實的內涵沒有必要的外觀也是不夠的,就和這次大作業(yè)一樣,一個好的程序沒有一個好的PPT去展示也是不足的,因此我
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 4 Natural disasters Project 說課稿-2024-2025學年高中英語人教版(2019)必修第一冊
- 3 地球的形狀說課稿-2023-2024學年大象版科學四年級下冊
- 2023六年級語文上冊 第三單元 12 故宮博物院說課稿新人教版
- 2024年四年級品社下冊《第三單元 交通連著你我他》說課稿 山東版
- Module 3 Unit 2 You can use the computers.(說課稿)-2023-2024學年外研版(一起)英語五年級下冊001
- 6 傳統(tǒng)游戲我會玩 第二課時 說課稿-2023-2024學年道德與法治二年級下冊統(tǒng)編版
- 2025砌筑工程勞務承包合同范本
- 2025建材店勞動合同
- 2024-2025學年高中物理 第三章 傳感器 第01節(jié) 認識傳感器說課稿 粵教版選修3-2
- 2024-2025學年高中歷史上學期第16周 美蘇爭鋒說課稿
- 《奧特萊斯業(yè)態(tài)淺析》課件
- 2022年湖南省公務員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 國家安全教育課程教學大綱分享
- 養(yǎng)殖場獸醫(yī)服務合同
- 電氣工程及其自動化基礎知識單選題100道及答案解析
- HR六大板塊+三支柱體系
- 慢性病患者門診身份管理方案
- 2025年高考英語一輪復習講義(新高考)第2部分語法第23講狀語從句(練習)(學生版+解析)
- 連鑄工職業(yè)技能大賽考試題庫-上(單選、多選題)
- 2024年全國統(tǒng)一高考數學試卷(新高考Ⅱ)含答案
- 十七個崗位安全操作規(guī)程手冊
評論
0/150
提交評論