24點(diǎn)游戲軟件的開發(fā)_第1頁
24點(diǎn)游戲軟件的開發(fā)_第2頁
24點(diǎn)游戲軟件的開發(fā)_第3頁
24點(diǎn)游戲軟件的開發(fā)_第4頁
24點(diǎn)游戲軟件的開發(fā)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

24點(diǎn)游戲軟件的開發(fā)1PAGE0124點(diǎn)游戲軟件的開發(fā)1概述1.1課程設(shè)計(jì)目的a、穩(wěn)固并加深學(xué)生對C++語言程序設(shè)計(jì)知識的理解;b、培養(yǎng)學(xué)生面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,使學(xué)生認(rèn)識面向過程和面向?qū)ο髢煞N設(shè)計(jì)方法的區(qū)別;c、進(jìn)一步掌握和應(yīng)用VC++6.0集成開發(fā)環(huán)境;d、提高運(yùn)用C++語言解決實(shí)際問題的能力;e、初步掌握開發(fā)小型實(shí)用軟件的根本方法,能獨(dú)立設(shè)計(jì)、實(shí)現(xiàn)根本的MIS系統(tǒng);f、掌握書寫程序設(shè)計(jì)開發(fā)文檔的能力〔書寫課程設(shè)計(jì)實(shí)驗(yàn)報告〕。1.2課程設(shè)計(jì)內(nèi)容課題名稱:24點(diǎn)游戲軟件的開發(fā)說明:24點(diǎn)游戲是一種常見的紙牌游戲說明要求:a〕實(shí)現(xiàn)隨機(jī)發(fā)牌;b〕能進(jìn)行結(jié)果驗(yàn)算;c〕計(jì)分;d〕難度設(shè)置。2系統(tǒng)需求分析系統(tǒng)目標(biāo)24點(diǎn)游戲是個流行的數(shù)學(xué)運(yùn)算游戲。本次課程設(shè)計(jì)通過24點(diǎn)游戲來加深我們對對話框編程的認(rèn)識和理解,并介紹VisualC++在數(shù)學(xué)計(jì)算方面的應(yīng)用,以及在按鈕上設(shè)置位圖和設(shè)置計(jì)時器的方法。24點(diǎn)撲克游戲的規(guī)那么是:由系統(tǒng)發(fā)出4張撲克牌,要求用戶利用撲克牌上顯示的數(shù)字〔JQKA算10〕,通過加減乘除運(yùn)算得出24。主體功能a.對游戲設(shè)計(jì)三個難易級別,分別為低級、中級和高級。每次開始游戲前可以根據(jù)玩家的需要進(jìn)行難度設(shè)置,如假設(shè)不設(shè)置,系統(tǒng)默認(rèn)難度級別為中級,設(shè)置完難度級別之后就可以開始游戲了,單擊“發(fā)牌〞按鈕,桌面上出現(xiàn)四張翻開的撲克牌,與此同時,游戲開始計(jì)時,進(jìn)度條開始前進(jìn)。b.在規(guī)定的時間內(nèi),玩家可以在“輸入算式〞的編輯框中輸入自己想好的算式,然后點(diǎn)擊“驗(yàn)算〞按鈕:如果輸入的算式經(jīng)運(yùn)算后所的答案正確,那么會在編輯框中顯示“正確!〞;如果輸入的數(shù)字與給出的牌的數(shù)字不符或者符號不合法,那么會彈出“內(nèi)部錯誤!〞的窗口;如果輸入的數(shù)字與四張牌相符、字符亦合法但是答案不正確,那么會在編輯框中顯示“錯誤〞;如果未輸入任何的數(shù)字和算符,那么會彈出“內(nèi)部錯誤!〞的窗口。c.如果在規(guī)定的時間內(nèi),玩家沒有點(diǎn)擊驗(yàn)算按鈕,那么會彈出“內(nèi)部錯誤〞的窗口。d.在結(jié)束本輪游戲后,如果玩家想繼續(xù)游戲,那么可點(diǎn)擊“發(fā)牌〞按鈕即可重新發(fā)牌,開始下一輪的游戲;如果玩家想結(jié)束游戲,那么可點(diǎn)擊“結(jié)束〞按鈕即可結(jié)束游戲。2.3開發(fā)環(huán)境3系統(tǒng)概要設(shè)計(jì)3.1系統(tǒng)功能模塊劃分a.建立一個隨機(jī)產(chǎn)生撲克牌的模塊。由程序隨機(jī)產(chǎn)生4張撲克牌,每張牌對應(yīng)一個整數(shù)。b.計(jì)時的模塊。定義一個計(jì)時器,以便對使用時間進(jìn)行計(jì)數(shù)。c.計(jì)算表達(dá)式的模塊。主要是通過函數(shù)來確定運(yùn)算式各符號優(yōu)先級和最終計(jì)算出輸入算式的結(jié)果。d.驗(yàn)算表達(dá)式正誤的模塊。在規(guī)定的時間內(nèi)輸入算式進(jìn)行驗(yàn)算,根據(jù)不同的情況會出現(xiàn)不同的對話框。3.2系統(tǒng)流程圖YYNNYNYYN是否設(shè)置難度?級級級系統(tǒng)默認(rèn)難度級別為中級初始化發(fā)牌計(jì)時開始輸入算式,進(jìn)行計(jì)算比擬函數(shù)值與參數(shù)值得大小顯示“錯誤!〞驗(yàn)算函數(shù)判斷計(jì)算結(jié)果是否為24?超時,輸入空白顯示:“錯誤!〞輸入字符錯誤:顯示:“錯誤!〞運(yùn)算結(jié)果正確:“正確!〞運(yùn)算結(jié)果錯誤:顯示:“錯誤!〞繼續(xù)否?結(jié)束開始圖3-1系統(tǒng)流程圖說明:按下“發(fā)牌〞按鈕游戲開始,通過調(diào)用函數(shù),桌面上隨機(jī)顯示4張紙牌。這4張紙牌從1-K中隨機(jī)調(diào)出。與此同時,標(biāo)識耗時時標(biāo)的進(jìn)度條開始前進(jìn)。計(jì)時同步開始。設(shè)置了時間限制,如果玩家沒有在規(guī)定時間內(nèi)輸入表達(dá)式,本輪游戲結(jié)束,在函數(shù)OnTimer()的作用下,會彈出對話“內(nèi)部錯誤〞。假設(shè)用戶在規(guī)定時間內(nèi)點(diǎn)擊了“驗(yàn)算〞按鈕,系統(tǒng)進(jìn)行相應(yīng)運(yùn)算,緊接著系統(tǒng)調(diào)用驗(yàn)算函數(shù)對編輯框中運(yùn)算出的結(jié)果進(jìn)行驗(yàn)算,根據(jù)驗(yàn)算情況給出相應(yīng)的結(jié)果。出現(xiàn)的結(jié)果有以下四中情況:〔1〕如果用戶沒在輸入算式中輸入算式,直接按“驗(yàn)算〞按鈕,會彈出“錯誤!〞的提示?!?〕如果輸入的數(shù)字與給出的不符或者符號不合法,會彈出“錯誤!〞的提示?!?〕如果輸入的數(shù)字與四張牌相符、字符亦合法但是答案不正確,會彈出“錯誤!〞?!?〕如果輸入算式經(jīng)運(yùn)算后所得答案正確,那么會彈出“正確!〞,點(diǎn)擊彈出框中的“發(fā)牌〞按鈕,系統(tǒng)會自動給出本局的得分和耗時。本輪游戲結(jié)束后,用戶可以選擇重新開始,否那么,可以點(diǎn)擊“結(jié)束游戲〞按鈕退出游戲。4系統(tǒng)詳細(xì)設(shè)計(jì)4.1設(shè)計(jì)步驟〔a〕在VC++6.0中,建立一個MFCAppWizard(exe)工程,在應(yīng)用程序類型中選擇“根本對話框〞,其余的都采用默認(rèn)選項(xiàng),即可完成對話框的創(chuàng)立?!瞓〕在對話框中添加4個圖像(分別用于四張撲克牌),4個按鈕〔分別是發(fā)牌、輸入算式、驗(yàn)算、結(jié)束游戲〕,1個編輯框〔輸入算式〕,一個進(jìn)度條和一個下拉式按鈕〔用于選擇難度級別〕,接著根據(jù)屬性對以上所添加的控件進(jìn)行屬性修改,主要進(jìn)行重命名,以便編輯源代碼的時候區(qū)分,另外對圖像的處理除了對其進(jìn)行重命名外還要對其添加位圖。通過插入-資源-Bitmap加載圖片,圖片通過拷貝和復(fù)制等操作加載完成。加載完成的圖片在對應(yīng)的工作區(qū)可以找到,選中對其名字進(jìn)行修改?!瞔〕接著對以上添加的控件建立類向?qū)АV饕蠥ddFunction、AddVariable和EditCode這三項(xiàng)的添加?!瞕〕根據(jù)流程圖在類的原文件中逐一添加實(shí)現(xiàn)各個模塊其功能所需要的各種函數(shù),并添加相應(yīng)的源代碼,同時在頭文件中添加對各種函數(shù)及變量的聲明?!瞖〕對編譯好的程序進(jìn)行保存,開始進(jìn)行調(diào)試,邊調(diào)試邊根據(jù)報錯對原程序進(jìn)行修改,直至程序不再報錯,并且可以實(shí)現(xiàn)預(yù)計(jì)的各種功能。4.2界面設(shè)計(jì)界面設(shè)計(jì)主要是創(chuàng)立控件,在ResoureView選項(xiàng)卡中翻開Dialog資源組,雙擊IDD_ZHOUTONG_DIALOG,在右邊的窗口中顯示出待編輯的對話框。開始擺放控件,包括編輯框和按鈕的創(chuàng)立。按鈕的創(chuàng)立以“1〞為例進(jìn)行介紹,其他按鈕的創(chuàng)立可參照此進(jìn)行操作。〔a〕在Controls的“編輯框〞按鈕上單擊鼠標(biāo)左鍵,在對話框編輯窗口上適宜的位置按下鼠標(biāo)左鍵并拖動鼠標(biāo)畫出一個大小適宜的編輯框。在編輯框上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇屬性選項(xiàng),此時彈出Edit屬性對話框,在該對話框中輸入ID屬性。按照上面的操作過程編輯其他按鈕和編輯框等對象的屬性。表4-1各按鈕和編輯框等對象的屬性控件對象IDCaption顯示紙牌的靜態(tài)控件1IDC_STATIC1/顯示紙牌的靜態(tài)控件2IDC_STATIC2/顯示紙牌的靜態(tài)控件3IDC_STATIC3/顯示紙牌的靜態(tài)控件4IDC_STATIC4/耗時標(biāo)識提示靜態(tài)控件IDC_STATIC耗時標(biāo)識:難度級別提示靜態(tài)控件IDC_STATIC5難度級別:當(dāng)前得分提示靜態(tài)控件IDC_STATIC6當(dāng)前得分:顯示當(dāng)前得分靜態(tài)控件IDC_STATIC7/歷史記錄提示靜態(tài)控件IDC_STATIC8歷史記錄發(fā)牌按鈕IDC_BUTTON1發(fā)牌輸入算式按鈕IDC_BUTTON2輸入算式驗(yàn)算按鈕IDC_BUTTON3驗(yàn)算結(jié)束游戲按鈕IDC_BUTTON4結(jié)束游戲進(jìn)度條IDC_PROGRESS1/輸入算式編輯框IDC_EDIT1/顯示歷史記錄列表控件IDC_COMBO1/難度級別選擇組合框IDC_LIST1/4.3關(guān)鍵功能的實(shí)現(xiàn)a.發(fā)牌功能的實(shí)現(xiàn),首先,通過BOOLCDingluDlg::OnInitDialog()中,根據(jù)紙牌對應(yīng)的ID號加載紙牌,。利用函數(shù)加載了標(biāo)號1~10的十張紙牌和兩張背景紙牌。然后運(yùn)行代碼,即可在圖像框中得到四張鋪開的紙牌。b.計(jì)時功能的實(shí)現(xiàn),在CPoint24Dlg::OnTimer中通過m_progress.StepIt()設(shè)置是否超時。如果(m_progress.GetPos()>=100)代表游戲結(jié)束,用戶沒有時間進(jìn)行思考了,本輪游戲結(jié)束,在函數(shù)OnTimer〔〕的作用下,會彈出對話“超時!〞c.計(jì)算功能的實(shí)現(xiàn),對于輸入結(jié)果的驗(yàn)算,主要是通過函數(shù)來確定運(yùn)算式各符號優(yōu)先級和最終計(jì)算出輸入算式的結(jié)果。對于編輯框中輸入的表達(dá)式進(jìn)行計(jì)算,借助于Str=Left+Middle+Right;將有優(yōu)先級差異同時表達(dá)式傳送到SubCompute〔〕函數(shù)中,最終計(jì)算出輸入到編輯框中的表達(dá)式結(jié)果Result,并將其返回。d.驗(yàn)算功能的實(shí)現(xiàn),在規(guī)定的時間內(nèi)輸入算式進(jìn)行驗(yàn)算,根據(jù)不同的情況會出現(xiàn)不同的對話框。有以下四種情況:如果用戶沒在輸入算式中輸入算式,直接按“驗(yàn)算〞按鈕,如果輸入的數(shù)字與給出的不符或者符號不合法,會彈出“內(nèi)部錯誤!〞的提示對話框;如果輸入的數(shù)字與四張牌相符、字符亦合法但是答案不正確,會彈出“錯誤!〞;如果輸入算式經(jīng)運(yùn)算后所得答案正確,那么會彈出“正確!〞。e.計(jì)分功能的實(shí)現(xiàn),當(dāng)用戶在每局游戲結(jié)束后,如果沒有計(jì)算出正確結(jié)果,那么會在歷史記錄中顯示1題錯誤;如果計(jì)算出了正確結(jié)果,那么會在記錄中顯示1題正確并顯示一個0~100之間的整數(shù)值。用戶最終得分確實(shí)定是由其選擇的游戲級別和游戲所花費(fèi)時間長短來確定的。5測試5.1測試方案測試過程中,由于既涉及到紙牌點(diǎn)數(shù)和運(yùn)算符,又會涉及到運(yùn)算式結(jié)果,于是相應(yīng)地會顯示出四種結(jié)果,〔a〕如果玩家在編輯框中沒有輸入任何數(shù)字和算符而直接按下了“驗(yàn)算〞按鈕,那么會彈出“內(nèi)部錯誤!〞的提示對話框。〔b〕如果玩家輸入的數(shù)字與撲克牌給出的數(shù)字不符合,那么會彈出“內(nèi)部錯誤!〞的提示對話框?!瞔〕如果玩家輸入的數(shù)字與四張牌相符、字符亦合法但是計(jì)算結(jié)果不為24,會彈出“內(nèi)部錯誤!〞的提示對話框并在表達(dá)式編輯框中顯示“錯誤!〞〔d〕如果玩家輸入算式經(jīng)運(yùn)算后所得答案正確,那么會在編輯表達(dá)式框中顯示“正確!〞5.2測試結(jié)果〔a〕進(jìn)入游戲界面圖5-1游戲界面說明:本界面為游戲初始界面,默認(rèn)難度級別為中級?!瞓〕發(fā)牌圖5-2發(fā)牌界面說明:點(diǎn)擊“發(fā)牌〞按鈕,自動發(fā)牌,計(jì)時進(jìn)度條開始滾動?!瞔〕不輸入驗(yàn)算公式界面圖5-3錯誤界面說明:當(dāng)不輸入驗(yàn)算公式時,游戲界面會顯示錯誤的提示?!瞕〕輸入驗(yàn)算公式圖5-4輸入算式界面圖5-5正確輸出界面圖5-6錯誤輸出界面說明:點(diǎn)擊輸入算式后耗時標(biāo)識停止,在旁邊的輸入框中輸入算式后點(diǎn)擊驗(yàn)算,正確或錯誤的界面會顯示(e)沒有來的及輸入表達(dá)式,超過限制時間,頁面顯示為圖5-7超時輸出界面說明:.如果在規(guī)定的時間內(nèi),玩家沒有點(diǎn)擊驗(yàn)算按鈕,那么會彈出“內(nèi)部錯誤〞的窗口。這次課程設(shè)計(jì),還是像往常一樣,先由班長進(jìn)行分組,每個小組完成一個任務(wù)。這次我分到的學(xué)習(xí)任務(wù)是完成二十四點(diǎn)游戲軟件開發(fā)的編程。由于沒有接觸過游戲編程,一看到這個題目我就懵了。但是課程設(shè)計(jì)還要繼續(xù),我先試著從網(wǎng)上搜尋我所需要的資料,可網(wǎng)上資料比擬零散,在老師的提醒下,我去圖書館找到了我所需要的。書中一些案例和我所要做的課程設(shè)計(jì)類似,經(jīng)過自己知識上的補(bǔ)充和同組成員的協(xié)助,我順利的完成了這次課程設(shè)計(jì)。課程設(shè)計(jì)是本科學(xué)習(xí)階段一次非常難得的理論與實(shí)際相結(jié)合的時機(jī),通過這次比擬完整的一個程序的設(shè)計(jì),我擺脫了單純的理論知識學(xué)習(xí)狀態(tài),和實(shí)際設(shè)計(jì)的結(jié)合鍛煉了我的綜合運(yùn)用所學(xué)的基礎(chǔ)知識,解決實(shí)際問題的能力,同時也提高我查閱文獻(xiàn)資料、對程序整體的把握等其他能力水平,而且通過對整體的掌控,對局部的取舍,以及對細(xì)節(jié)的斟酌處理,都使我的能力得到了鍛煉,經(jīng)驗(yàn)得到了豐富。這是我們都希望看到的也正是我們進(jìn)行課程設(shè)計(jì)的目的所在。雖然設(shè)計(jì)內(nèi)容繁多,過程繁瑣但我的收獲卻更加豐富。各種組件的運(yùn)用,各種算法的應(yīng)用,各種控件的利用我都是隨著設(shè)計(jì)的不斷深入而不斷熟悉并逐步掌握的。和老師以及同學(xué)的溝通交流更使我對程序整體的規(guī)劃與設(shè)計(jì)有了新的認(rèn)識也對自己提出了新的要求。根據(jù)我在實(shí)習(xí)中遇到得問題,我將在以后的學(xué)習(xí)過程中注意以下幾點(diǎn):1、認(rèn)真上好專業(yè)實(shí)驗(yàn)課,多在實(shí)踐中鍛煉自己。2、寫程序的過程中要考慮周到,嚴(yán)密。3、在做設(shè)計(jì)的時候要有信心,有耐心,切勿急躁。4、認(rèn)真的學(xué)習(xí)課本知識,掌握課本中的知識點(diǎn),并在此基礎(chǔ)上學(xué)會靈活運(yùn)用。5、在課余時間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯誤,以便能節(jié)省調(diào)試程序的時間。課程設(shè)計(jì)不僅能提高我們對所學(xué)知識的綜合運(yùn)用能力,全面檢查并掌握所學(xué)的內(nèi)容,還讓我懂得怎樣把理論運(yùn)用到實(shí)際,在實(shí)踐中遇到問題怎樣用理論解決。在上機(jī)調(diào)試的過程中,我對數(shù)據(jù)結(jié)構(gòu)這一門課所學(xué)的知識有了更深入的掌握和理解,穩(wěn)固了理論教學(xué)所學(xué)到的知識,擴(kuò)展了我的編程思想。順利如期的完本錢次課程設(shè)計(jì)給了我很大的信心,但是也讓多缺乏的地方,學(xué)習(xí)其實(shí)就是一個不斷完善的過程,正視自己的缺乏之處,在以后的工作和學(xué)習(xí)中不斷的彌補(bǔ)這些缺乏之處,在以后的生活中也要保持同樣的態(tài)度,不斷的完善自己。參考文獻(xiàn)++程序設(shè)計(jì)(第二版)[M].北京:清華大學(xué)出版社,2021.——VC++6.0與基于ACIS的幾何造型[M].北京:北京郵電大學(xué)出版社,2021.[3]楊正華,張秋生.VisualC++游戲編程導(dǎo)學(xué)[M].北京:清華大學(xué)出版社,2021.[4]++程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第二版)[M].北京:清華大學(xué)出版社,2021.[5]肖永亮.VisualC++游戲編程基礎(chǔ)[M].北京:電子工業(yè)出版社,2021.[6]肖宏偉.VisualC++實(shí)效編程百例[M].北京:人民郵電出版社,2021.[7]陳清華.VisualC++課程設(shè)計(jì)案例精選與編程指導(dǎo)[M].南京:東南大學(xué)出版社,2021.11附錄附錄1源程序清單//Point24Dlg.cpp:implementationfile#include"stdafx.h"#include"Point24.h"#include"Point24Dlg.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:publicCDialog{public: CAboutDlg();//DialogData //{{AFX_DATA(CAboutDlg) enum{IDD=IDD_ABOUTBOX}; //}}AFX_DATA //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport //}}AFX_VIRTUAL//Implementationprotected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD){ //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog) //{{AFX_MSG_MAP(CAboutDlg) //Nomessagehandlers //}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CPoint24DlgdialogCPoint24Dlg::CPoint24Dlg(CWnd*pParent/*=NULL*/) :CDialog(CPoint24Dlg::IDD,pParent){ //{{AFX_DATA_INIT(CPoint24Dlg) m_inputs=_T(""); //}}AFX_DATA_INIT //NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32 m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); //初始化變量 m_number1=m_number2=m_number3=m_number4=0; m_pattern1=m_pattern2=m_pattern3=m_pattern4=129; Step=500; m_score=0; m_factor=4; count=0;//設(shè)置列表框列屬性 lvItem.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_STATE; lvItem.state=0; lvItem.stateMask=0; lvItem.iImage=0;}voidCPoint24Dlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPoint24Dlg) DDX_Control(pDX,IDC_LIST,m_list); DDX_Control(pDX,IDC_PROGRESS,m_progress); DDX_Control(pDX,IDC_COMBO,m_combo); DDX_Control(pDX,IDC_EDIT1,m_input); DDX_Text(pDX,IDC_EDIT1,m_inputs); DDV_MaxChars(pDX,m_inputs,15); //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CPoint24Dlg,CDialog) //{{AFX_MSG_MAP(CPoint24Dlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_START,OnStart) ON_BN_CLICKED(IDC_INPUT,OnInput) ON_BN_CLICKED(IDC_CALC,OnCalc) ON_CBN_SELCHANGE(IDC_COMBO,OnSelchangeCombo) ON_WM_TIMER() ON_COMMAND(IDD_ABOUT,OnAbout) //}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CPoint24DlgmessagehandlersBOOLCPoint24Dlg::OnInitDialog(){ CDialog::OnInitDialog(); //Add"About..."menuitemtosystemmenu. //IDM_ABOUTBOXmustbeinthesystemcommandrange. ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX<0xF000); CMenu*pSysMenu=GetSystemMenu(FALSE); if(pSysMenu!=NULL) { CStringstrAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if(!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu); } } //Settheiconforthisdialog.Theframeworkdoesthisautomatically //whentheapplication'smainwindowisnotadialog SetIcon(m_hIcon,TRUE); //Setbigicon SetIcon(m_hIcon,FALSE); //Setsmallicon //TODO:Addextrainitializationhere //設(shè)置組合框選項(xiàng) m_combo.InsertString(0,"高級"); m_combo.InsertString(1,"中級"); m_combo.InsertString(2,"低級"); m_combo.SetCurSel(1); //設(shè)置記錄條 m_progress.SetRange(1,100); m_progress.SetStep(2); m_progress.SetPos(0); //初始化分?jǐn)?shù) SetDlgItemText(IDC_CUR_SCORE,"0"); //設(shè)置列表框列屬性 LV_COLUMNlvColumn; lvColumn.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM; lvColumn.fmt=LVCFMT_CENTER; lvColumn.cx=52; //設(shè)置列表框列標(biāo)題 lvColumn.iSubItem=0; lvColumn.pszText="題數(shù)"; m_list.InsertColumn(0,&lvColumn); lvColumn.iSubItem=1; lvColumn.pszText="對錯"; m_list.InsertColumn(1,&lvColumn); returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCPoint24Dlg::OnSysCommand(UINTnID,LPARAMlParam){ if((nID&0xFFF0)==IDM_ABOUTBOX) { CAboutDlgdlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID,lParam); }}//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,//thisisautomaticallydoneforyoubytheframework.voidCPoint24Dlg::OnPaint(){ CPaintDCpDC(this);//devicecontextforpainting if(IsIconic()) { SendMessage(WM_ICONERASEBKGND,(WPARAM)pDC.GetSafeHdc(),0); //使圖標(biāo)處于客戶矩形的中央 intcxIcon=GetSystemMetrics(SM_CXICON); intcyIcon=GetSystemMetrics(SM_CYICON); CRectrect; GetClientRect(&rect); intx=(rect.Width()-cxIcon+1)/2; inty=(rect.Height()-cyIcon+1)/2; //畫圖標(biāo) pDC.DrawIcon(x,y,m_hIcon); } else { //顯示撲克牌 CRectrect; CBitmapcard1,card2,card3,card4,*OldBitMap; CDC*dc,dcMem; dc=GetDC(); dcMem.CreateCompatibleDC(&pDC); card1.LoadBitmap(m_pattern1); OldBitMap=dcMem.SelectObject(&card1); dc->BitBlt(50,30,BitmapW,BitmapH, &dcMem,0,0,SRCCOPY); dcMem.SelectObject(OldBitMap); DeleteObject(&card1); card2.LoadBitmap(m_pattern2); OldBitMap=dcMem.SelectObject(&card2); dc->BitBlt(130,30,BitmapW,BitmapH, &dcMem,0,0,SRCCOPY); dcMem.SelectObject(OldBitMap); DeleteObject(&card2); card3.LoadBitmap(m_pattern3); OldBitMap=dcMem.SelectObject(&card3); dc->BitBlt(210,30,BitmapW,BitmapH, &dcMem,0,0,SRCCOPY); dcMem.SelectObject(OldBitMap); DeleteObject(&card3); card4.LoadBitmap(m_pattern4); OldBitMap=dcMem.SelectObject(&card4); dc->BitBlt(290,30,BitmapW,BitmapH, &dcMem,0,0,SRCCOPY); dcMem.SelectObject(OldBitMap); DeleteObject(&card4); dcMem.DeleteDC(); CDialog::OnPaint(); }}//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags//theminimizedwindow.HCURSORCPoint24Dlg::OnQueryDragIcon(){ return(HCURSOR)m_hIcon;}//發(fā)牌voidCPoint24Dlg::OnStart(){ //TODO:Addyourcontrolnotificationhandlercodeherem_progress.SetPos(0); m_combo.EnableWindow(FALSE); m_number1=((double)rand()/(double)RAND_MAX)*9+1; m_number2=((double)rand()/(double)RAND_MAX)*9+1; m_number3=((double)rand()/(double)RAND_MAX)*9+1; m_number4=((double)rand()/(double)RAND_MAX)*9+1; m_pattern1=130+m_number1; m_pattern2=143+m_number2; m_pattern3=156+m_number3; m_pattern4=169+m_number4; m_input.SetReadOnly(TRUE); if(m_pattern4>172)m_pattern4+=7; UpdateData(FALSE); Invalidate(FALSE);SetTimer(1,Step,NULL); CWnd*pWnd=GetDlgItem(IDC_CALC); pWnd->EnableWindow(TRUE); pWnd=GetDlgItem(IDC_INPUT); pWnd->EnableWindow(TRUE);}//輸入計(jì)算式voidCPoint24Dlg::OnInput(){ //TODO:Addyourcontrolnotificationhandlercodehere m_input.SetReadOnly(FALSE); KillTimer(TRUE);}//計(jì)算voidCPoint24Dlg::OnCalc(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); intresult=m_expression.ChangeExpression(m_inputs); if(result<0) { longresult=m_expression.Value(m_Result); if(result==DIVISION_BY_0) AfxMessageBox("除數(shù)不能為零!"); } else { AfxMessageBox(_T("內(nèi)部錯誤!")); } m_inputs.Empty(); if(m_Result==24) { m_inputs="正確!"; m_score+=m_factor; CStringstr; str.Format("%d",m_score); SetDlgItemText(IDC_CUR_SCORE,str); } else m_inputs="錯誤!"; chars; count+=1; wsprintf(&s,"%d",count); lvItem.iItem=count-1; lvItem.iSubItem=0; lvItem.pszText=&s;m_list.InsertItem(&lvItem); m_list.SetItemText(count-1,1,m_inputs); UpdateData(FALSE); m_inputs=_T("");// FirstResult=SecondResult=0;// flag='a'; KillTimer(TRUE); m_combo.EnableWindow(TRUE); CWnd*pWnd=GetDlgItem(IDC_CALC); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_INPUT); pWnd->EnableWindow(FALSE);}//選擇組合框選項(xiàng)voidCPoint24Dlg::OnSelchangeCombo(){ //TODO:Addyourcontrolnotificationhandlercodehere inti=m_combo.GetCurSel(); if(i=0) { Step=600; m_factor=2; } if(i=1) { Step=500; m_factor=4; } if(i=2) { Step=400; m_factor=6; }}//計(jì)時器處理函數(shù)voidCPoint24Dlg::OnTimer(UINTnIDEvent){ //TODO:Addyourmessagehandlercodehereand/orcalldefault m_progress.StepIt(); if(m_progress.GetPos()>=100) { KillTimer(1); m_inputs=_T("超時!"); OnCalc(); } else CDialog::OnTimer(nIDEvent);}voidCPoint24Dlg::OnAbout(){ //TODO:Addyourcommandhandlercodehere CAboutDlgdlg; dlg.DoModal();}voidCPoint24Dlg::OnCancel(){}

論大學(xué)生寫作能力寫作能力是對自己所積累的信息進(jìn)行選擇、提取、加工、改造并將之形成為書面文字的能力。積累是寫作的基礎(chǔ),積累越厚實(shí),寫作就越有基礎(chǔ),文章就能根深葉茂開奇葩。沒有積累,胸?zé)o點(diǎn)墨,怎么也不會寫出作文來的。寫作能力是每個大學(xué)生必須具備的能力。從目前高校整體情況上看,大學(xué)生的寫作能力較為欠缺。一、大學(xué)生應(yīng)用文寫作能力的定義那么,大學(xué)生的寫作能力究竟是指什么呢?葉圣陶先生曾經(jīng)說過,“大學(xué)畢業(yè)生不一定能寫小說詩歌,但是一定要寫工作和生活中實(shí)用的文章,而且非寫得既通順又扎實(shí)不可?!睂τ诖髮W(xué)生的寫作能力應(yīng)包含什么,可能有多種理解,但從葉圣陶先生的談話中,我認(rèn)為:大學(xué)生寫作能力應(yīng)包括應(yīng)用寫作能力和文學(xué)寫作能力,而前者是必須的,后者是“不一定”要具備,能具備則更好。眾所周知,對于大學(xué)生來說,是要寫畢業(yè)論文的,我認(rèn)為寫作論文的能力可以包含在應(yīng)用寫作能力之中。大學(xué)生寫作能力的體現(xiàn),也往往是在撰寫畢業(yè)論文中集中體現(xiàn)出來的。本科畢業(yè)論文無論是對于學(xué)生個人還是對于院系和學(xué)校來說,都是十分重要的。如何提高本科畢業(yè)論文的質(zhì)量和水平,就成為教育行政部門和高校都很重視的一個重要課題。如何提高大學(xué)生的寫作能力的問題必須得到社會的廣泛關(guān)注,并且提出對策去實(shí)施解決。二、造成大學(xué)生應(yīng)用文寫作困境的原因:(一)大學(xué)寫作課開設(shè)結(jié)構(gòu)不合理。就目前中國多數(shù)高校的學(xué)科設(shè)置來看,除了中文專業(yè)會系統(tǒng)開設(shè)寫作的系列課程外,其他專業(yè)的學(xué)生都只開設(shè)了普及性的《大學(xué)語文》課。學(xué)生寫作能力的提高是一項(xiàng)艱巨復(fù)雜的任務(wù),而我們的課程設(shè)置僅把這一任務(wù)交給了大學(xué)語文教師,可大學(xué)語文教師既要在有限課時時間內(nèi)普及相關(guān)經(jīng)典名著知識,又要適度提高學(xué)生的鑒賞能力,且要教會學(xué)生寫作規(guī)律并提高寫作能力,任務(wù)之重實(shí)難完成。(二)對實(shí)用寫作的普遍性不重視?!按髮W(xué)語文”教育已經(jīng)被嚴(yán)重地“邊緣化”。目前對中國語文的態(tài)度淡漠,而是呈現(xiàn)出全民學(xué)英語的大好勢頭。中小學(xué)如此

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論