24點(diǎn)游戲軟件的開(kāi)發(fā)_第1頁(yè)
24點(diǎn)游戲軟件的開(kāi)發(fā)_第2頁(yè)
24點(diǎn)游戲軟件的開(kāi)發(fā)_第3頁(yè)
24點(diǎn)游戲軟件的開(kāi)發(fā)_第4頁(yè)
24點(diǎn)游戲軟件的開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(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)介

24點(diǎn)游戲軟件的開(kāi)發(fā)1PAGE0124點(diǎn)游戲軟件的開(kāi)發(fā)1概述1.1課程設(shè)計(jì)目的a、穩(wěn)固并加深學(xué)生對(duì)C++語(yǔ)言程序設(shè)計(jì)知識(shí)的理解;b、培養(yǎng)學(xué)生面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,使學(xué)生認(rèn)識(shí)面向過(guò)程和面向?qū)ο髢煞N設(shè)計(jì)方法的區(qū)別;c、進(jìn)一步掌握和應(yīng)用VC++6.0集成開(kāi)發(fā)環(huán)境;d、提高運(yùn)用C++語(yǔ)言解決實(shí)際問(wèn)題的能力;e、初步掌握開(kāi)發(fā)小型實(shí)用軟件的根本方法,能獨(dú)立設(shè)計(jì)、實(shí)現(xiàn)根本的MIS系統(tǒng);f、掌握書(shū)寫(xiě)程序設(shè)計(jì)開(kāi)發(fā)文檔的能力〔書(shū)寫(xiě)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告〕。1.2課程設(shè)計(jì)內(nèi)容課題名稱(chēng):24點(diǎn)游戲軟件的開(kāi)發(fā)說(shuō)明:24點(diǎn)游戲是一種常見(jiàn)的紙牌游戲說(shuō)明要求: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)游戲是個(gè)流行的數(shù)學(xué)運(yùn)算游戲。本次課程設(shè)計(jì)通過(guò)24點(diǎn)游戲來(lái)加深我們對(duì)對(duì)話框編程的認(rèn)識(shí)和理解,并介紹VisualC++在數(shù)學(xué)計(jì)算方面的應(yīng)用,以及在按鈕上設(shè)置位圖和設(shè)置計(jì)時(shí)器的方法。24點(diǎn)撲克游戲的規(guī)那么是:由系統(tǒng)發(fā)出4張撲克牌,要求用戶利用撲克牌上顯示的數(shù)字〔JQKA算10〕,通過(guò)加減乘除運(yùn)算得出24。主體功能a.對(duì)游戲設(shè)計(jì)三個(gè)難易級(jí)別,分別為低級(jí)、中級(jí)和高級(jí)。每次開(kāi)始游戲前可以根據(jù)玩家的需要進(jìn)行難度設(shè)置,如假設(shè)不設(shè)置,系統(tǒng)默認(rèn)難度級(jí)別為中級(jí),設(shè)置完難度級(jí)別之后就可以開(kāi)始游戲了,單擊“發(fā)牌〞按鈕,桌面上出現(xiàn)四張翻開(kāi)的撲克牌,與此同時(shí),游戲開(kāi)始計(jì)時(shí),進(jìn)度條開(kāi)始前進(jìn)。b.在規(guī)定的時(shí)間內(nèi),玩家可以在“輸入算式〞的編輯框中輸入自己想好的算式,然后點(diǎn)擊“驗(yàn)算〞按鈕:如果輸入的算式經(jīng)運(yùn)算后所的答案正確,那么會(huì)在編輯框中顯示“正確!〞;如果輸入的數(shù)字與給出的牌的數(shù)字不符或者符號(hào)不合法,那么會(huì)彈出“內(nèi)部錯(cuò)誤!〞的窗口;如果輸入的數(shù)字與四張牌相符、字符亦合法但是答案不正確,那么會(huì)在編輯框中顯示“錯(cuò)誤〞;如果未輸入任何的數(shù)字和算符,那么會(huì)彈出“內(nèi)部錯(cuò)誤!〞的窗口。c.如果在規(guī)定的時(shí)間內(nèi),玩家沒(méi)有點(diǎn)擊驗(yàn)算按鈕,那么會(huì)彈出“內(nèi)部錯(cuò)誤〞的窗口。d.在結(jié)束本輪游戲后,如果玩家想繼續(xù)游戲,那么可點(diǎn)擊“發(fā)牌〞按鈕即可重新發(fā)牌,開(kāi)始下一輪的游戲;如果玩家想結(jié)束游戲,那么可點(diǎn)擊“結(jié)束〞按鈕即可結(jié)束游戲。2.3開(kāi)發(fā)環(huán)境3系統(tǒng)概要設(shè)計(jì)3.1系統(tǒng)功能模塊劃分a.建立一個(gè)隨機(jī)產(chǎn)生撲克牌的模塊。由程序隨機(jī)產(chǎn)生4張撲克牌,每張牌對(duì)應(yīng)一個(gè)整數(shù)。b.計(jì)時(shí)的模塊。定義一個(gè)計(jì)時(shí)器,以便對(duì)使用時(shí)間進(jìn)行計(jì)數(shù)。c.計(jì)算表達(dá)式的模塊。主要是通過(guò)函數(shù)來(lái)確定運(yùn)算式各符號(hào)優(yōu)先級(jí)和最終計(jì)算出輸入算式的結(jié)果。d.驗(yàn)算表達(dá)式正誤的模塊。在規(guī)定的時(shí)間內(nèi)輸入算式進(jìn)行驗(yàn)算,根據(jù)不同的情況會(huì)出現(xiàn)不同的對(duì)話框。3.2系統(tǒng)流程圖YYNNYNYYN是否設(shè)置難度?級(jí)級(jí)級(jí)系統(tǒng)默認(rèn)難度級(jí)別為中級(jí)初始化發(fā)牌計(jì)時(shí)開(kāi)始輸入算式,進(jìn)行計(jì)算比擬函數(shù)值與參數(shù)值得大小顯示“錯(cuò)誤!〞驗(yàn)算函數(shù)判斷計(jì)算結(jié)果是否為24?超時(shí),輸入空白顯示:“錯(cuò)誤!〞輸入字符錯(cuò)誤:顯示:“錯(cuò)誤!〞運(yùn)算結(jié)果正確:“正確!〞運(yùn)算結(jié)果錯(cuò)誤:顯示:“錯(cuò)誤!〞繼續(xù)否?結(jié)束開(kāi)始圖3-1系統(tǒng)流程圖說(shuō)明:按下“發(fā)牌〞按鈕游戲開(kāi)始,通過(guò)調(diào)用函數(shù),桌面上隨機(jī)顯示4張紙牌。這4張紙牌從1-K中隨機(jī)調(diào)出。與此同時(shí),標(biāo)識(shí)耗時(shí)時(shí)標(biāo)的進(jìn)度條開(kāi)始前進(jìn)。計(jì)時(shí)同步開(kāi)始。設(shè)置了時(shí)間限制,如果玩家沒(méi)有在規(guī)定時(shí)間內(nèi)輸入表達(dá)式,本輪游戲結(jié)束,在函數(shù)OnTimer()的作用下,會(huì)彈出對(duì)話“內(nèi)部錯(cuò)誤〞。假設(shè)用戶在規(guī)定時(shí)間內(nèi)點(diǎn)擊了“驗(yàn)算〞按鈕,系統(tǒng)進(jìn)行相應(yīng)運(yùn)算,緊接著系統(tǒng)調(diào)用驗(yàn)算函數(shù)對(duì)編輯框中運(yùn)算出的結(jié)果進(jìn)行驗(yàn)算,根據(jù)驗(yàn)算情況給出相應(yīng)的結(jié)果。出現(xiàn)的結(jié)果有以下四中情況:〔1〕如果用戶沒(méi)在輸入算式中輸入算式,直接按“驗(yàn)算〞按鈕,會(huì)彈出“錯(cuò)誤!〞的提示?!?〕如果輸入的數(shù)字與給出的不符或者符號(hào)不合法,會(huì)彈出“錯(cuò)誤!〞的提示?!?〕如果輸入的數(shù)字與四張牌相符、字符亦合法但是答案不正確,會(huì)彈出“錯(cuò)誤!〞?!?〕如果輸入算式經(jīng)運(yùn)算后所得答案正確,那么會(huì)彈出“正確!〞,點(diǎn)擊彈出框中的“發(fā)牌〞按鈕,系統(tǒng)會(huì)自動(dòng)給出本局的得分和耗時(shí)。本輪游戲結(jié)束后,用戶可以選擇重新開(kāi)始,否那么,可以點(diǎn)擊“結(jié)束游戲〞按鈕退出游戲。4系統(tǒng)詳細(xì)設(shè)計(jì)4.1設(shè)計(jì)步驟〔a〕在VC++6.0中,建立一個(gè)MFCAppWizard(exe)工程,在應(yīng)用程序類(lèi)型中選擇“根本對(duì)話框〞,其余的都采用默認(rèn)選項(xiàng),即可完成對(duì)話框的創(chuàng)立?!瞓〕在對(duì)話框中添加4個(gè)圖像(分別用于四張撲克牌),4個(gè)按鈕〔分別是發(fā)牌、輸入算式、驗(yàn)算、結(jié)束游戲〕,1個(gè)編輯框〔輸入算式〕,一個(gè)進(jìn)度條和一個(gè)下拉式按鈕〔用于選擇難度級(jí)別〕,接著根據(jù)屬性對(duì)以上所添加的控件進(jìn)行屬性修改,主要進(jìn)行重命名,以便編輯源代碼的時(shí)候區(qū)分,另外對(duì)圖像的處理除了對(duì)其進(jìn)行重命名外還要對(duì)其添加位圖。通過(guò)插入-資源-Bitmap加載圖片,圖片通過(guò)拷貝和復(fù)制等操作加載完成。加載完成的圖片在對(duì)應(yīng)的工作區(qū)可以找到,選中對(duì)其名字進(jìn)行修改?!瞔〕接著對(duì)以上添加的控件建立類(lèi)向?qū)?。主要有AddFunction、AddVariable和EditCode這三項(xiàng)的添加?!瞕〕根據(jù)流程圖在類(lèi)的原文件中逐一添加實(shí)現(xiàn)各個(gè)模塊其功能所需要的各種函數(shù),并添加相應(yīng)的源代碼,同時(shí)在頭文件中添加對(duì)各種函數(shù)及變量的聲明。〔e〕對(duì)編譯好的程序進(jìn)行保存,開(kāi)始進(jìn)行調(diào)試,邊調(diào)試邊根據(jù)報(bào)錯(cuò)對(duì)原程序進(jìn)行修改,直至程序不再報(bào)錯(cuò),并且可以實(shí)現(xiàn)預(yù)計(jì)的各種功能。4.2界面設(shè)計(jì)界面設(shè)計(jì)主要是創(chuàng)立控件,在ResoureView選項(xiàng)卡中翻開(kāi)Dialog資源組,雙擊IDD_ZHOUTONG_DIALOG,在右邊的窗口中顯示出待編輯的對(duì)話框。開(kāi)始擺放控件,包括編輯框和按鈕的創(chuàng)立。按鈕的創(chuàng)立以“1〞為例進(jìn)行介紹,其他按鈕的創(chuàng)立可參照此進(jìn)行操作?!瞐〕在Controls的“編輯框〞按鈕上單擊鼠標(biāo)左鍵,在對(duì)話框編輯窗口上適宜的位置按下鼠標(biāo)左鍵并拖動(dòng)鼠標(biāo)畫(huà)出一個(gè)大小適宜的編輯框。在編輯框上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇屬性選項(xiàng),此時(shí)彈出Edit屬性對(duì)話框,在該對(duì)話框中輸入ID屬性。按照上面的操作過(guò)程編輯其他按鈕和編輯框等對(duì)象的屬性。表4-1各按鈕和編輯框等對(duì)象的屬性控件對(duì)象IDCaption顯示紙牌的靜態(tài)控件1IDC_STATIC1/顯示紙牌的靜態(tài)控件2IDC_STATIC2/顯示紙牌的靜態(tài)控件3IDC_STATIC3/顯示紙牌的靜態(tài)控件4IDC_STATIC4/耗時(shí)標(biāo)識(shí)提示靜態(tài)控件IDC_STATIC耗時(shí)標(biāo)識(shí):難度級(jí)別提示靜態(tài)控件IDC_STATIC5難度級(jí)別:當(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/難度級(jí)別選擇組合框IDC_LIST1/4.3關(guān)鍵功能的實(shí)現(xiàn)a.發(fā)牌功能的實(shí)現(xiàn),首先,通過(guò)BOOLCDingluDlg::OnInitDialog()中,根據(jù)紙牌對(duì)應(yīng)的ID號(hào)加載紙牌,。利用函數(shù)加載了標(biāo)號(hào)1~10的十張紙牌和兩張背景紙牌。然后運(yùn)行代碼,即可在圖像框中得到四張鋪開(kāi)的紙牌。b.計(jì)時(shí)功能的實(shí)現(xiàn),在CPoint24Dlg::OnTimer中通過(guò)m_progress.StepIt()設(shè)置是否超時(shí)。如果(m_progress.GetPos()>=100)代表游戲結(jié)束,用戶沒(méi)有時(shí)間進(jìn)行思考了,本輪游戲結(jié)束,在函數(shù)OnTimer〔〕的作用下,會(huì)彈出對(duì)話“超時(shí)!〞c.計(jì)算功能的實(shí)現(xiàn),對(duì)于輸入結(jié)果的驗(yàn)算,主要是通過(guò)函數(shù)來(lái)確定運(yùn)算式各符號(hào)優(yōu)先級(jí)和最終計(jì)算出輸入算式的結(jié)果。對(duì)于編輯框中輸入的表達(dá)式進(jìn)行計(jì)算,借助于Str=Left+Middle+Right;將有優(yōu)先級(jí)差異同時(shí)表達(dá)式傳送到SubCompute〔〕函數(shù)中,最終計(jì)算出輸入到編輯框中的表達(dá)式結(jié)果Result,并將其返回。d.驗(yàn)算功能的實(shí)現(xiàn),在規(guī)定的時(shí)間內(nèi)輸入算式進(jìn)行驗(yàn)算,根據(jù)不同的情況會(huì)出現(xiàn)不同的對(duì)話框。有以下四種情況:如果用戶沒(méi)在輸入算式中輸入算式,直接按“驗(yàn)算〞按鈕,如果輸入的數(shù)字與給出的不符或者符號(hào)不合法,會(huì)彈出“內(nèi)部錯(cuò)誤!〞的提示對(duì)話框;如果輸入的數(shù)字與四張牌相符、字符亦合法但是答案不正確,會(huì)彈出“錯(cuò)誤!〞;如果輸入算式經(jīng)運(yùn)算后所得答案正確,那么會(huì)彈出“正確!〞。e.計(jì)分功能的實(shí)現(xiàn),當(dāng)用戶在每局游戲結(jié)束后,如果沒(méi)有計(jì)算出正確結(jié)果,那么會(huì)在歷史記錄中顯示1題錯(cuò)誤;如果計(jì)算出了正確結(jié)果,那么會(huì)在記錄中顯示1題正確并顯示一個(gè)0~100之間的整數(shù)值。用戶最終得分確實(shí)定是由其選擇的游戲級(jí)別和游戲所花費(fèi)時(shí)間長(zhǎng)短來(lái)確定的。5測(cè)試5.1測(cè)試方案測(cè)試過(guò)程中,由于既涉及到紙牌點(diǎn)數(shù)和運(yùn)算符,又會(huì)涉及到運(yùn)算式結(jié)果,于是相應(yīng)地會(huì)顯示出四種結(jié)果,〔a〕如果玩家在編輯框中沒(méi)有輸入任何數(shù)字和算符而直接按下了“驗(yàn)算〞按鈕,那么會(huì)彈出“內(nèi)部錯(cuò)誤!〞的提示對(duì)話框。〔b〕如果玩家輸入的數(shù)字與撲克牌給出的數(shù)字不符合,那么會(huì)彈出“內(nèi)部錯(cuò)誤!〞的提示對(duì)話框?!瞔〕如果玩家輸入的數(shù)字與四張牌相符、字符亦合法但是計(jì)算結(jié)果不為24,會(huì)彈出“內(nèi)部錯(cuò)誤!〞的提示對(duì)話框并在表達(dá)式編輯框中顯示“錯(cuò)誤!〞〔d〕如果玩家輸入算式經(jīng)運(yùn)算后所得答案正確,那么會(huì)在編輯表達(dá)式框中顯示“正確!〞5.2測(cè)試結(jié)果〔a〕進(jìn)入游戲界面圖5-1游戲界面說(shuō)明:本界面為游戲初始界面,默認(rèn)難度級(jí)別為中級(jí)?!瞓〕發(fā)牌圖5-2發(fā)牌界面說(shuō)明:點(diǎn)擊“發(fā)牌〞按鈕,自動(dòng)發(fā)牌,計(jì)時(shí)進(jìn)度條開(kāi)始滾動(dòng)?!瞔〕不輸入驗(yàn)算公式界面圖5-3錯(cuò)誤界面說(shuō)明:當(dāng)不輸入驗(yàn)算公式時(shí),游戲界面會(huì)顯示錯(cuò)誤的提示。〔d〕輸入驗(yàn)算公式圖5-4輸入算式界面圖5-5正確輸出界面圖5-6錯(cuò)誤輸出界面說(shuō)明:點(diǎn)擊輸入算式后耗時(shí)標(biāo)識(shí)停止,在旁邊的輸入框中輸入算式后點(diǎn)擊驗(yàn)算,正確或錯(cuò)誤的界面會(huì)顯示(e)沒(méi)有來(lái)的及輸入表達(dá)式,超過(guò)限制時(shí)間,頁(yè)面顯示為圖5-7超時(shí)輸出界面說(shuō)明:.如果在規(guī)定的時(shí)間內(nèi),玩家沒(méi)有點(diǎn)擊驗(yàn)算按鈕,那么會(huì)彈出“內(nèi)部錯(cuò)誤〞的窗口。這次課程設(shè)計(jì),還是像往常一樣,先由班長(zhǎng)進(jìn)行分組,每個(gè)小組完成一個(gè)任務(wù)。這次我分到的學(xué)習(xí)任務(wù)是完成二十四點(diǎn)游戲軟件開(kāi)發(fā)的編程。由于沒(méi)有接觸過(guò)游戲編程,一看到這個(gè)題目我就懵了。但是課程設(shè)計(jì)還要繼續(xù),我先試著從網(wǎng)上搜尋我所需要的資料,可網(wǎng)上資料比擬零散,在老師的提醒下,我去圖書(shū)館找到了我所需要的。書(shū)中一些案例和我所要做的課程設(shè)計(jì)類(lèi)似,經(jīng)過(guò)自己知識(shí)上的補(bǔ)充和同組成員的協(xié)助,我順利的完成了這次課程設(shè)計(jì)。課程設(shè)計(jì)是本科學(xué)習(xí)階段一次非常難得的理論與實(shí)際相結(jié)合的時(shí)機(jī),通過(guò)這次比擬完整的一個(gè)程序的設(shè)計(jì),我擺脫了單純的理論知識(shí)學(xué)習(xí)狀態(tài),和實(shí)際設(shè)計(jì)的結(jié)合鍛煉了我的綜合運(yùn)用所學(xué)的基礎(chǔ)知識(shí),解決實(shí)際問(wèn)題的能力,同時(shí)也提高我查閱文獻(xiàn)資料、對(duì)程序整體的把握等其他能力水平,而且通過(guò)對(duì)整體的掌控,對(duì)局部的取舍,以及對(duì)細(xì)節(jié)的斟酌處理,都使我的能力得到了鍛煉,經(jīng)驗(yàn)得到了豐富。這是我們都希望看到的也正是我們進(jìn)行課程設(shè)計(jì)的目的所在。雖然設(shè)計(jì)內(nèi)容繁多,過(guò)程繁瑣但我的收獲卻更加豐富。各種組件的運(yùn)用,各種算法的應(yīng)用,各種控件的利用我都是隨著設(shè)計(jì)的不斷深入而不斷熟悉并逐步掌握的。和老師以及同學(xué)的溝通交流更使我對(duì)程序整體的規(guī)劃與設(shè)計(jì)有了新的認(rèn)識(shí)也對(duì)自己提出了新的要求。根據(jù)我在實(shí)習(xí)中遇到得問(wèn)題,我將在以后的學(xué)習(xí)過(guò)程中注意以下幾點(diǎn):1、認(rèn)真上好專(zhuān)業(yè)實(shí)驗(yàn)課,多在實(shí)踐中鍛煉自己。2、寫(xiě)程序的過(guò)程中要考慮周到,嚴(yán)密。3、在做設(shè)計(jì)的時(shí)候要有信心,有耐心,切勿急躁。4、認(rèn)真的學(xué)習(xí)課本知識(shí),掌握課本中的知識(shí)點(diǎn),并在此基礎(chǔ)上學(xué)會(huì)靈活運(yùn)用。5、在課余時(shí)間里多寫(xiě)程序,熟練掌握在調(diào)試程序的過(guò)程中所遇到的常見(jiàn)錯(cuò)誤,以便能節(jié)省調(diào)試程序的時(shí)間。課程設(shè)計(jì)不僅能提高我們對(duì)所學(xué)知識(shí)的綜合運(yùn)用能力,全面檢查并掌握所學(xué)的內(nèi)容,還讓我懂得怎樣把理論運(yùn)用到實(shí)際,在實(shí)踐中遇到問(wèn)題怎樣用理論解決。在上機(jī)調(diào)試的過(guò)程中,我對(duì)數(shù)據(jù)結(jié)構(gòu)這一門(mén)課所學(xué)的知識(shí)有了更深入的掌握和理解,穩(wěn)固了理論教學(xué)所學(xué)到的知識(shí),擴(kuò)展了我的編程思想。順利如期的完本錢(qián)次課程設(shè)計(jì)給了我很大的信心,但是也讓多缺乏的地方,學(xué)習(xí)其實(shí)就是一個(gè)不斷完善的過(guò)程,正視自己的缺乏之處,在以后的工作和學(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,"高級(jí)"); m_combo.InsertString(1,"中級(jí)"); m_combo.InsertString(2,"低級(jí)"); 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="對(duì)錯(cuò)"; 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; //畫(huà)圖標(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)部錯(cuò)誤!")); } 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="錯(cuò)誤!"; 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í)器處理函數(shù)voidCPoint24Dlg::OnTimer(UINTnIDEvent){ //TODO:Addyourmessagehandlercodehereand/orcalldefault m_progress.StepIt(); if(m_progress.GetPos()>=100) { KillTimer(1); m_inputs=_T("超時(shí)!"); OnCalc(); } else CDialog::OnTimer(nIDEvent);}voidCPoint24Dlg::OnAbout(){ //TODO:Addyourcommandhandlercodehere CAboutDlgdlg; dlg.DoModal();}voidCPoint24Dlg::OnCancel(){}

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

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論