




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目 錄目 錄I一、課程設(shè)計(jì)的目的與要求211目的:21.2要求:2二、題目說(shuō)明32.1程序開(kāi)發(fā)背景32.2開(kāi)發(fā)工具介紹3三、總體設(shè)計(jì)4四、詳細(xì)說(shuō)明54.1、窗體設(shè)計(jì)。54.2、用timer控件控制小球移動(dòng)方向。64.3、使用鍵盤(pán)控制擋板左右移動(dòng)。84.3、判斷游戲難易程度。8五、遇到的問(wèn)題和解決方法10六、課程設(shè)計(jì)總結(jié)10七、參考文獻(xiàn)11附錄(源程序代碼)11一、 課程設(shè)計(jì)的目的與要求11目的:1、熟悉.NET開(kāi)發(fā)環(huán)境,能夠使用C#語(yǔ)言在.NET平臺(tái)上獨(dú)立設(shè)計(jì)、開(kāi)發(fā)WINDOWS應(yīng)用程序。2、掌握C#語(yǔ)言的異常處理技術(shù),能夠使用.NET各種調(diào)試方法調(diào)試代碼,掌握幫助的使用方法。3、掌握常用控件
2、以及控件的常用屬性的使用方法。1.2要求:1、設(shè)計(jì)選題:學(xué)生可以在“Windows應(yīng)用程序設(shè)計(jì)課程設(shè)計(jì)選題”指定的題目中選取課程設(shè)計(jì)題目,具體題目以此文件為準(zhǔn)。也可以自選,但自選的題目必須在課程設(shè)計(jì)開(kāi)始前得到指導(dǎo)教師的認(rèn)可。2、軟件界面美觀大方,操作簡(jiǎn)潔易用,功能完備可靠。二、題目說(shuō)明設(shè)計(jì)一個(gè)簡(jiǎn)單的彈珠游戲程序,游戲者可以用左右鍵移動(dòng)游戲界面底部的擋板來(lái)?yè)趸叵侣涞男∏颉?.1程序開(kāi)發(fā)背景 彈球游戲是基于一些人長(zhǎng)時(shí)間在電腦前工作感到疲勞而開(kāi)發(fā)。彈球游戲是一個(gè)簡(jiǎn)單的娛樂(lè)小游戲,電腦使用者在疲勞時(shí)可以通過(guò)玩彈球游戲來(lái)放松心情、解除身體疲勞從而提高工作效率。同時(shí)彈球游戲也適于兒童,兒童可以通過(guò)該游戲開(kāi)
3、發(fā)智力、增強(qiáng)兒童的動(dòng)手能力。2.2開(kāi)發(fā)工具介紹該程序是通過(guò)C#開(kāi)發(fā)的,C#是一種安全的、穩(wěn)定的、簡(jiǎn)單的、優(yōu)雅的,由C和C+衍生出來(lái)的面向?qū)ο蟮木幊陶Z(yǔ)言。它在繼承C和C+強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性(例如沒(méi)有宏和模版,不允許多重繼承)。C#綜合了VB簡(jiǎn)單的可視化操作和C+的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語(yǔ)法風(fēng)格、創(chuàng)新的語(yǔ)言特性和便捷的面向組件編程的支持成為.NET開(kāi)發(fā)的首選語(yǔ)言。微軟C#語(yǔ)言定義主要是從C和C+繼承而來(lái)的,而且語(yǔ)言中的許多元素也反映了這一點(diǎn).C#在設(shè)計(jì)者從C+繼承的可選選項(xiàng)方面比Java要廣泛一些(比如說(shuō)struts),它還增加了自己新的特點(diǎn)(比方說(shuō)源代碼版本定
4、義),但它還不太成熟,不可能擠垮Java。 C#還需要進(jìn)化成一種開(kāi)發(fā)者能夠接受和采用的語(yǔ)言.而微軟當(dāng)前為它的這種新語(yǔ)言大造聲勢(shì)也是值得注意的.目前大家的反應(yīng)是:“這是對(duì)Java的反擊?!?2005年4月,微軟發(fā)布了Visual Studio 2005 Beta2,這已經(jīng)是具備了幾乎全部功能的Visual Studio,包括的產(chǎn)品有SQL Server2005、Team Foundation Server和Team Suite。這時(shí)的C#編譯器已經(jīng)能夠處理C# 2.0中所有的新特性。該程序就是通過(guò) Visual Studio 2005進(jìn)行開(kāi)發(fā)制作的。三、總體設(shè)計(jì)1、彈球游戲的功能就是游戲者可以用
5、左右鍵移動(dòng)游戲界面底部的擋板來(lái)?yè)趸叵侣涞男∏?。小球要按一定的方向移?dòng),按游戲難易程度來(lái)控制小球的移動(dòng)速度。小球有四個(gè)移動(dòng)方向:左下、右下、右上和左上,每個(gè)移動(dòng)的方向分別用一個(gè)timer控件來(lái)控制。小球向左下方向移動(dòng)時(shí)timer1打開(kāi),如果小球碰到左邊界時(shí),小球反彈向右下方向移動(dòng)。此時(shí)timer1關(guān)閉而控制小球向右下方向移動(dòng)的timer2控件打開(kāi)。而如果小球碰到擋板時(shí)小球反彈向左上方向移動(dòng),此時(shí)timer1關(guān)閉而控制小球向左上方向移動(dòng)的timer4控件打開(kāi)。但是如果擋板沒(méi)有擋到小球而到達(dá)下邊界則游戲結(jié)束,同時(shí)四個(gè)timer控件全部關(guān)閉、窗體上顯示“Game Over”字樣。同理其他情況也一樣。2
6、、在窗體設(shè)計(jì)方面,在窗體上方加一個(gè)menuStrip控件用于控制游戲的開(kāi)始與結(jié)束以及查詢(xún)游戲的相關(guān)信息如:開(kāi)發(fā)背景、功能等。同時(shí)窗體的背景可以添加一個(gè)背景圖片以美化窗體。3、可以使用方向鍵控制擋板左右的移動(dòng)的方向。由于KeyDown事件可以捕獲鍵盤(pán)上大部分的鍵(功能鍵等),但是不捕獲方向鍵 ,所以需要在窗體代碼中重寫(xiě)一個(gè)ProgressDialogKey的方法才能夠?qū)崿F(xiàn)。四、詳細(xì)說(shuō)明4.1、窗體設(shè)計(jì)。在窗體設(shè)計(jì)方面,在窗體上方加一個(gè)menuStrip控件用于控制游戲的開(kāi)始與結(jié)束以及查詢(xún)游戲的相關(guān)信息如:開(kāi)發(fā)背景、功能等。同時(shí)窗體的背景可以添加一個(gè)背景圖片以美化窗體。圖4-1整個(gè)窗體界面在點(diǎn)擊游
7、戲下的背景項(xiàng)時(shí)會(huì)出現(xiàn)此游戲開(kāi)發(fā)背景的信息說(shuō)明,如圖4-2所示.同時(shí)點(diǎn)擊幫助下的功能項(xiàng)時(shí)會(huì)出現(xiàn)此游戲功能信息說(shuō)明,如圖4-3所示。 圖4-2 開(kāi)發(fā)背景說(shuō)明圖4-3 游戲功能說(shuō)明4.2、用timer控件控制小球移動(dòng)方向。 由于小球移動(dòng)時(shí)碰到邊界和擋板時(shí)就會(huì)改變移動(dòng)方向,所以需要通過(guò)timer控件來(lái)控制。小球有四個(gè)移動(dòng)方向:左下、右下、右上和左上,每個(gè)移動(dòng)的方向分別用一個(gè)timer控件來(lái)控制。所以分四種情況。具體如下:(1)、用timer1控制小球向左下移動(dòng)。如果小球碰到左邊界時(shí),小球反彈向右下方向移動(dòng)。此時(shí)timer1關(guān)閉而控制小球向右下方向移動(dòng)的timer2控件打開(kāi)。而如果小球碰到擋板時(shí)小球反彈
8、向左上方向移動(dòng),此時(shí)timer1關(guān)閉而控制小球向左上方向移動(dòng)的timer4控件打開(kāi)。但是如果擋板沒(méi)有擋到小球而到達(dá)下邊界則游戲結(jié)束,同時(shí)四個(gè)timer控件全部關(guān)閉、窗體上顯示“Game Over”字樣。代碼如下: this.buttonBall.Top = this.buttonBall.Top + a;/* 通過(guò)改變小球距上邊界*/this.buttonBall.Left = this.buttonBall.Left - a;/*左邊界的距離使小球移動(dòng)*/ /*通過(guò)改變a的值來(lái)改變小球移動(dòng)速度*/ if (this.buttonBall.Left button1.Left & buttonB
9、all.Left panel2.Size.Height)/*擋板沒(méi)有擋到小球而到達(dá)下邊界則游戲結(jié)束,*/ /* 窗體上顯示“Game Over”字樣*/ label1.Text = Game over; timer1.Enabled = false; timer2.Enabled = false; (2)、用timer2控制小球向右下移動(dòng)。如果小球碰到右邊界時(shí),小球反彈向左下方向移動(dòng)。此時(shí)timer2關(guān)閉而控制小球向左下方向移動(dòng)的timer1控件打開(kāi)。而如果小球碰到擋板時(shí)小球反彈向右上方向移動(dòng),此時(shí)timer2關(guān)閉而控制小球向左上方向移動(dòng)的timer3控件打開(kāi)。但是如果擋板沒(méi)有擋到小球而到達(dá)下
10、邊界則游戲結(jié)束,同時(shí)四個(gè)timer控件全部關(guān)閉、窗體上顯示“Game Over”字樣。代碼如下: this.buttonBall.Top = this.buttonBall.Top + a; this.buttonBall.Left = this.buttonBall.Left + a; if (this.buttonBall.Left +buttonBall.Size.Width panel2.Size.Width) /*判斷小球是否到達(dá)右邊界而彈起*/ timer2.Enabled = false; timer1.Enabled = true; if (buttonBall.Top + b
11、uttonBall.Size.Height) = button1.Top & buttonBall.Left button1.Left & buttonBall.Left panel2.Size.Height) /*擋板沒(méi)有擋到小球而到達(dá)下邊界則游戲結(jié)束,*/ label1.Text = Game over; /* 窗體上顯示“Game Over”字樣*/ timer2.Enabled = false; timer3.Enabled = false; (3)、用timer3控制小球向右上移動(dòng)。如果小球碰到右邊界時(shí),小球反彈向左上方向移動(dòng)。此時(shí)timer3關(guān)閉而控制小球向左上方移動(dòng)的timer4
12、控件打開(kāi)。而如果小球碰到上邊界時(shí)小球反彈向右下方向移動(dòng),此時(shí)timer2關(guān)閉而控制小球向右下方向移動(dòng)的timer2控件打開(kāi)。代碼如下: this.buttonBall.Top = this.buttonBall.Top - a; this.buttonBall.Left = this.buttonBall.Left + a; if (this.buttonBall.Left + buttonBall.Size.Width panel2.Size.Width) /*判斷小球是否到達(dá)右邊界而彈起*/ timer3.Enabled = false; timer4.Enabled = true; if
13、 (buttonBall.Top 0) /*判斷小球是否到達(dá)上邊界而彈起*/ timer3.Enabled = false; timer2.Enabled = true; (4)、用timer4控制小球向左上移動(dòng)。如果小球碰到左邊界時(shí),小球反彈向右上方向移動(dòng)。此時(shí)timer4關(guān)閉而控制小球向右上方向移動(dòng)的timer3控件打開(kāi)。而如果小球碰到上邊界時(shí)小球反彈向左下方移動(dòng),此時(shí)timer4關(guān)閉而控制小球向右下方向移動(dòng)的timer1控件打開(kāi)。代碼如下: this.buttonBall.Top = this.buttonBall.Top - a; this.buttonBall.Left = this
14、.buttonBall.Left - a; if (this.buttonBall.Left 0) /*判斷小球是否到達(dá)左邊界而彈起*/ timer4.Enabled = false; timer3.Enabled = true; else if (buttonBall.Top 0) this.button1.Left = this.button1.Left - 15; break; case Keys.Right: if(button1.Left+button1.Size.Widthpanel2.Size.Width) this.button1.Left = this.button1.Lef
15、t + 15; break; return true; 4.3、判斷游戲難易程度。 先聲名一個(gè)變量小球的移動(dòng)距離a,通過(guò)改變a的值來(lái)控制小球的移動(dòng)速度。代碼如下: private void 標(biāo)準(zhǔn)ToolStripMenuItem_Click(object sender, EventArgs e) a = 10; private void 困難ToolStripMenuItem_Click(object sender, EventArgs e) a = 15; private void 極難ToolStripMenuItem_Click(object sender, EventArgs e) a
16、 = 20; 五、遇到的問(wèn)題和解決方法1、在用鍵盤(pán)的方向鍵控制擋板左右移動(dòng)時(shí),使用以前的代碼時(shí)擋板不能移動(dòng)。多次修改后還是無(wú)法移動(dòng)。詢(xún)問(wèn)老師之后,代碼沒(méi)有錯(cuò)誤就是無(wú)法執(zhí)行。最后到網(wǎng)上查詢(xún)了相關(guān)信息,找到了另一個(gè)相關(guān)代碼protected override bool ProcessDialogKey(Keys keyData)并同過(guò)switch條件判斷。2運(yùn)行時(shí)當(dāng)小球碰到擋板時(shí)不能反彈,然后對(duì)代碼進(jìn)行分析,認(rèn)真計(jì)算小球與擋板的位置、發(fā)現(xiàn)代碼有一些混亂。最后對(duì)題目重新梳理一下、對(duì)代碼也重新整理最終解決了問(wèn)題。 六、課程設(shè)計(jì)總結(jié)在做課程設(shè)計(jì)過(guò)程中遇到了很多問(wèn)題,主要還是平時(shí)基礎(chǔ)知識(shí)沒(méi)學(xué)好,但在同學(xué)和
17、老師的幫助下,以及通過(guò)查閱相關(guān)資料,問(wèn)題才解決了,最終完成課程設(shè)計(jì)。此次課程設(shè)計(jì)為我們提供了一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐的機(jī)會(huì),將課本上的理論知識(shí)和實(shí)際有機(jī)的結(jié)合起來(lái),鍛煉我們的分析解決實(shí)際問(wèn)題的能力,提高了我們適應(yīng)實(shí)際,實(shí)踐編程的能力。經(jīng)過(guò)這次課程設(shè)計(jì)有挺多的收獲。雖然程序最后是完成了,但是實(shí)現(xiàn)的過(guò)程中卻遇到了很多問(wèn)題。平時(shí)感覺(jué)挺簡(jiǎn)單的那些枯燥單調(diào)的代碼,真正到了自己運(yùn)用的時(shí)候卻無(wú)從下手;好不容易寫(xiě)出來(lái)的一大段代碼,一經(jīng)調(diào)試卻跳出來(lái)一大堆的錯(cuò)誤;還有就是這最后的課程設(shè)計(jì)報(bào)告書(shū),平時(shí)都不怎么碰的word文檔,文檔處理、排版又成了令人頭疼的一大問(wèn)題。但是,解決問(wèn)題的過(guò)程恰是不斷學(xué)習(xí)的過(guò)程:平時(shí)所學(xué)
18、的一小段一小段的代碼到現(xiàn)在必須把它們聯(lián)系起來(lái)使用,把平時(shí)學(xué)的知識(shí)運(yùn)用到實(shí)際,增強(qiáng)了我的實(shí)踐動(dòng)手能力;面對(duì)一大堆的錯(cuò)誤,只得一個(gè)個(gè)找出來(lái),一個(gè)個(gè)改掉,一遍遍的調(diào)試,一行行代碼的運(yùn)行,不斷地重復(fù),最終將錯(cuò)誤改正,這番痛苦的過(guò)程讓我學(xué)會(huì)了如何調(diào)試運(yùn)行,如何逐行逐語(yǔ)句運(yùn)行,鍛煉了我調(diào)試、測(cè)試程序的能力;同時(shí),報(bào)告書(shū)的書(shū)寫(xiě),讓我學(xué)會(huì)了word文檔的排版以及文檔處理,學(xué)會(huì)如何做出美觀整齊的課程設(shè)計(jì)報(bào)告書(shū)。課程設(shè)計(jì)中遇到的問(wèn)題只憑自己苦思冥想是不能全部解決的,這是同學(xué)老師的建議和網(wǎng)絡(luò)給了我很大的幫助。遇到自己解決不了的問(wèn)題時(shí),多多向老師同學(xué)請(qǐng)教,或許問(wèn)題就能迎刃而解。另外,生在這個(gè)信息化社會(huì),互聯(lián)網(wǎng)的作用不
19、言而喻,許多問(wèn)題只要在網(wǎng)上搜索一下就能得到非常令人滿(mǎn)意的解答。此次課程設(shè)計(jì)鍛煉了我和老師同學(xué)交流的能力,以及網(wǎng)上搜索資源,篩選信息的能力。七、參考文獻(xiàn)1 C#范例完全自學(xué)手冊(cè) 王小科, 呂雙, 梁冰編著 人民郵電出版社20092 C#程序開(kāi)發(fā)范例寶典.第2版 梁冰, 呂雙, 王小科編著 人民郵電出版社2009附錄(源程序代碼) public partial class Form1 : Form public int a = 5; public Form1() InitializeComponent(); private void 新游戲ToolStripMenuItem_Click(objec
20、t sender, EventArgs e) timer2.Enabled = true; label1.Text = ; private void timer1_Tick(object sender, EventArgs e) timer2.Enabled = false; timer4.Enabled = false; this.buttonBall.Top = this.buttonBall.Top + a; this.buttonBall.Left = this.buttonBall.Left - a; if (this.buttonBall.Left button1.Left & b
21、uttonBall.Left panel2.Size.Height) label1.Text = Game over; buttonBall.Dispose(); timer1.Enabled = false; timer2.Enabled = false; private void timer2_Tick(object sender, EventArgs e) timer3.Enabled = false; this.buttonBall.Top = this.buttonBall.Top + a; this.buttonBall.Left = this.buttonBall.Left +
22、a; if (this.buttonBall.Left +buttonBall.Size.Width panel2.Size.Width) timer2.Enabled = false; timer1.Enabled = true; if (buttonBall.Top + buttonBall.Size.Height) = button1.Top & buttonBall.Left button1.Left & buttonBall.Left panel2.Size.Height) label1.Text = Game over; buttonBall.Dispose(); timer2.E
23、nabled = false; timer3.Enabled = false; private void timer3_Tick(object sender, EventArgs e) timer2.Enabled = false; this.buttonBall.Top = this.buttonBall.Top - a; this.buttonBall.Left = this.buttonBall.Left + a; if (this.buttonBall.Left + buttonBall.Size.Width panel2.Size.Width) timer3.Enabled = fa
24、lse; timer4.Enabled = true; if (buttonBall.Top 0) timer3.Enabled = false; timer2.Enabled = true; private void timer4_Tick(object sender, EventArgs e) timer1.Enabled = false; timer3.Enabled = false; this.buttonBall.Top = this.buttonBall.Top - a; this.buttonBall.Left = this.buttonBall.Left - a; if (th
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生國(guó)防教育合作協(xié)議
- XX廣告噴繪制作合同5篇
- 醫(yī)療居間服務(wù)合同范本
- 華為配件采購(gòu)合同范本
- 個(gè)人辭職申請(qǐng)報(bào)告
- 個(gè)人車(chē)位轉(zhuǎn)讓合同
- 護(hù)理學(xué)試題(含答案)
- 醫(yī)療房屋租賃合同范本
- 保健按摩師初級(jí)題庫(kù)+參考答案
- 公司美甲店入股合同范本
- 外研版小學(xué)英語(yǔ)五年級(jí)下冊(cè)課文翻譯
- 口語(yǔ)教程4整套課件完整版教學(xué)教程最全電子講義教案
- 高壓氧艙課件
- 加德納多元智能測(cè)評(píng)量表【復(fù)制】
- 譯林英語(yǔ)四年級(jí)下冊(cè)4B各單元教學(xué)反思
- QC成果提高大跨度多節(jié)點(diǎn)曲面鋼桁架一次安裝合格率
- 國(guó)家電網(wǎng)有限公司十八項(xiàng)電網(wǎng)重大反事故措施(修訂版)
- 環(huán)氧乙烷固定床反應(yīng)器課程設(shè)計(jì)
- 班、團(tuán)、隊(duì)一體化建設(shè)實(shí)施方案
- 如何建構(gòu)結(jié)構(gòu)性思維 課后測(cè)試
- 施工方案(行車(chē)拆除)
評(píng)論
0/150
提交評(píng)論