




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
貪吃蛇項目五高等院校公共課系列精品教材C#程序設(shè)計了解集合和泛型學(xué)會動態(tài)數(shù)組ArrayList的使用熟練掌握使用屬性的get、set方法實現(xiàn)類之間的傳值掌握Point類的使用掌握控件MenuStrip、ColorDialog的使用學(xué)會使用鍵盤事件KeyDown和KeyPress技能目標(biāo)跑馬燈看上去就像一條貪吃蛇,給跑馬燈加上鍵盤控制事件,他就變成了貪吃蛇,再加上顏色的設(shè)置、食物的生成、貪吃蛇的生長和死亡等操作進一步完成貪吃蛇游戲的設(shè)計。項目導(dǎo)讀任務(wù)1知識點任務(wù)2貪吃蛇項目案例知識梳理知識點任務(wù)1一、集合二、泛型集合知識梳理任務(wù)引入:用數(shù)組來存儲和操作一組數(shù)據(jù)的確很方便,但是,使用數(shù)組也是有約束條件的,比如:數(shù)組內(nèi)數(shù)據(jù)類型必須是同一類型,而且數(shù)組的大小必須提前指定足夠大的大小。那么有沒有比數(shù)組更靈活的解決方案呢?——當(dāng)然有,那就是集合。任務(wù)分析:集合中存放的數(shù)據(jù)類型可以是不同的,而且集合的大小也會隨著數(shù)據(jù)的插入而自動增長。當(dāng)然如果集合中元素的數(shù)據(jù)類型不同的話,有時也會帶了不少麻煩,比如:從集合中拿出元素時還要判斷它的類型才能使用。而泛型集合就解決了以上問題,因為泛型集合要求放入其中的數(shù)據(jù)必須是同一類型的,這點和數(shù)組類似,但是泛型集合的大小也是可以自動增長的。任務(wù)1知識點一、集合集合(Collection)類是專門用于數(shù)據(jù)存儲和檢索的類。這些類提供了對棧(stack)、隊列(queue)、動態(tài)數(shù)組(arrayList)和哈希表(hashtable)的支持。集合(Collection)類服務(wù)于不同的目的,如為元素動態(tài)分配內(nèi)存,基于索引訪問列表項等等。這些類創(chuàng)建Object類的對象的集合,在C#中,Object類是所有數(shù)據(jù)類型的基類。System.Collection命名空間主要包含如下幾種集合:動態(tài)數(shù)組ArrayList哈希表Hashtable堆棧Stack隊列Queue任務(wù)1知識點(一)動態(tài)數(shù)組動態(tài)數(shù)組(ArrayList)代表了可被單獨索引的對象的有序集合。它基本上可以替代一個數(shù)組。但是,與數(shù)組不同的是,可以使用索引在指定的位置添加和移除項目,動態(tài)數(shù)組會自動重新調(diào)整它的大小。它也允許在列表中進行動態(tài)內(nèi)存分配、增加、搜索、排序各項。ArrayList類的常用屬性如下表所示。任務(wù)1知識點ArrayList類的常用方法如下:1.publicvirtualintAdd(objectvalue);2.publicvirtualvoidAddRange(ICollectionc);3.publicvirtualvoidClear();4.publicvirtualboolContains(objectitem);5.publicvirtualArrayListGetRange(intindex,intcount);6. publicvirtualintIndexOf(object);7. publicvirtualvoidInsert(intindex,objectvalue);8. publicvirtualvoidInsertRange(intindex,ICollectionc);9. publicvirtualvoidRemove(objectobj);10. publicvirtualvoidRemoveAt(intindex);任務(wù)1知識點11. publicvirtualvoidRemoveRange(intindex,intcount);12. publicvirtualvoidReverse();13. publicvirtualvoidSetRange(intindex,ICollectionc);14. publicvirtualvoidSort();15. publicvirtualvoidTrimToSize();任務(wù)1知識點(二)哈希表堆棧(Stack)代表了一個后進先出的對象集合。當(dāng)需要對各項進行后進先出的訪問時,則使用堆棧。在列表中添加一項,稱為推入元素,從列表中移除一項時,稱為彈出元素。Stack類常用的屬性是Count,用戶獲取Stack中包含的元素個數(shù)。Stack類常用的方法如下:1. publicvirtualvoidClear();2. publicvirtualboolContains(objectobj);3. publicvirtualobjectPeek();4. publicvirtualobjectPop();5. publicvirtualvoidPush(objectobj);6. publicvirtualobject[]ToArray();任務(wù)1知識點(三)堆棧堆棧(Stack)代表了一個后進先出的對象集合。需要對各項進行后進先出的訪問時,則使用堆棧。在列表中添加一項,稱為推入元素,從列表中移除一項時,稱為彈出元素。Stack類常用屬性是Count,用戶獲取Stack中包含的元素個數(shù)。Stack類常用方法如下:1. publicvirtualvoidClear();2. publicvirtualboolContains(objectobj);3. publicvirtualobjectPeek();4. publicvirtualobjectPop();5. publicvirtualvoidPush(objectobj);6. publicvirtualobject[]ToArray();任務(wù)1知識點(四)隊列Queue類常用方法如下:1. publicvirtualvoidClear();2. publicvirtualboolContains(objectobj);3. publicvirtualobjectDequeue();4. publicvirtualvoidEnqueue(objectobj);5. publicvirtualobject[]ToArray();6. publicvirtualvoidTrimToSize();任務(wù)1知識點二、泛型集合泛型集合是OOP(ObjectOrientedProgramming,面向?qū)ο蟪绦蛟O(shè)計)中的一個重要概念,主要目的是提高c#程序的性能。創(chuàng)建泛型集合,主要利用System.Collections.Generic命名空間下面的List泛型類創(chuàng)建集合,語法如下:List<T>myList=newList<T>();其中的“T”就是所要使用的類型,既可以是簡單類型,如string、int,也可以是用戶自定義類型。System.Collections.Generic命名空間常見的泛型集合有:列表List<T>、字典Dirctionary<TKey,TValue>、泛型堆棧Stack<T>和泛型隊列Queue<T>。任務(wù)1知識點(一)列表列表List<T>與數(shù)組特別接近,也是用的最多的泛型集合。常用的List<T>成員如表所示。任務(wù)1知識點(二)字典創(chuàng)建通用集合時,List<T>很有用,但有時需要一種集合:即將一組鍵映射到一組值(存儲若干項鍵值對),且不能有重復(fù)的鍵。常用的Dictionary<TKey,TValue>成員如表所示。任務(wù)1知識點(三)泛型堆棧泛型堆棧表示后進先出LIFO集合,泛型堆棧和普通堆棧的區(qū)別是泛型堆棧要求入棧的元素必須是同一類型。泛型堆棧類Stack<T>以數(shù)組的方式實現(xiàn)了堆棧,其操作總是發(fā)生在集合末尾,且可包含重復(fù)的元素和null元素。常用的Stack<T>成員如表所示。任務(wù)1知識點(四)泛型隊列泛型隊列表示先進先出FIFO集合,泛型隊列和普通隊列的區(qū)別是泛型隊列要求入隊的元素必須是同一類型。Queue<T>也可以包含重復(fù)的元素和null元素。常用的Queue<T>成員如表所示。任務(wù)1知識點貪吃蛇項目案例任務(wù)2一、創(chuàng)建項目二、界面布局三、編寫代碼知識梳理任務(wù)引入:如果對跑馬燈項目加上鍵盤控制移動方向功能的化,就有了貪吃蛇的雛形,同學(xué)們是不是都迫不及待了?在本任務(wù)中,我們一起來完成貪吃蛇游戲的開發(fā)。任務(wù)分析:要想開發(fā)一個完整的貪吃蛇游戲,需要考慮的問題還有很多,比如說:貪吃蛇用什么數(shù)據(jù)結(jié)構(gòu)存儲?最好用集合來存放,方便控制,大小也可以動態(tài)增長。還有,食物怎樣生成?貪吃蛇怎樣吃食物?怎樣增長?有幾種死法?……這些問題需要我們逐一解決。任務(wù)2貪吃蛇項目案例一、創(chuàng)建項目啟動VS2013以后,選擇“文件”菜單——“新建”——“項目”打開“新建項目”對話框,確認(rèn)左側(cè)目錄樹選中的是“VisualC#”選項,然后選擇“Windows窗體應(yīng)用程序”,瀏覽到項目的存放目錄“D:\CSharp”,名稱設(shè)置為“WGreedySnake”,進入項目后,把自動生成的Form1窗體重命名為FrmMain,改名后按回車鍵確認(rèn),會彈出如圖所示的對話框另外,還需要添加Windows窗體類文件FrmDirSe.cst和兩個普通類文件Food.cs和Snake.cs,這幾個類都是通過右擊項目名稱“WGreedySnake”添加,添加完畢后項目結(jié)構(gòu)圖如圖所示。任務(wù)2貪吃蛇項目案例任務(wù)2貪吃蛇項目案例“MicrosoftVisualStudio”對話框
添加完畢后項目結(jié)構(gòu)圖二、界面布局本項目共包含兩個Windows窗體:主窗體FrmMain和鍵盤方向設(shè)置FrmDirSet,其中FrmMain界面布局如圖所示,依次從工具箱中將每個控件添加到FrmMain窗體中。任務(wù)2貪吃蛇項目案例FrmMain窗體中主要控件的屬性和事件設(shè)置如表5-6所示,其中ColorDialog控件是顏色選擇對話框,可以用來選擇蛇體和食物的顏色。任務(wù)2貪吃蛇項目案例任務(wù)2貪吃蛇項目案例
添加多個子菜單界面布局三、編寫代碼本項目的后臺代碼主要分布在Food.cs、Snake.cs、FrmDirSet.cs和FrmMain.cs四個類文件中。(一)Food.cs類使用#region進行代碼折疊以后的效果如圖所示,需要手動引入兩個命名空間System.Windows.Forms和System.Drawing。任務(wù)2貪吃蛇項目案例1.定義三個字段2.定義兩個屬性,分別對應(yīng)兩個字段location和foodColor,用于類間傳值。3.編寫PutFood()方法,該方法包含一個Control類型的參數(shù),表示存放食物的容器控件,實際對應(yīng)主窗體中的Panel控件。4.編寫ChangePostion()方法,其功能是:當(dāng)前食物被貪吃蛇吃掉以后,用更新位置來模擬重新生成新的食物。任務(wù)2貪吃蛇項目案例(二)Snake.cs類使用#region進行代碼折疊以后的效果如圖所示,需要手動引入三個命名空間System.Windows.Forms、System.Drawing和System.Collections。任務(wù)2貪吃蛇項目案例1.定義枚舉類型Direction(在類Snake的上面,命名空間里面,和類Snake是平行的)2.定義三個字段3.定義兩個屬性,分別對應(yīng)兩個字段snakeColor和mySnake,用于類間傳值。4.編寫CreateSnake()方法,該方法包含一個Control類型的參數(shù),表示存放貪吃蛇的容器控件,實際對應(yīng)主窗體中的Panel控件。5.編寫SnakeMove()方法,其功能是讓貪吃蛇動起來,并根據(jù)字段dir的變化而改變移動方向,算法思路和跑馬燈項目的timer2_Click()類似。6.編寫IsDead()方法,該方法返回類型是布爾型,用于判斷貪吃蛇是否死亡,撞到容器的邊沿或者撞到貪吃蛇自身都會導(dǎo)致死亡。7.編寫EatFood()方法,該方法返回類型是布爾型,有兩個參數(shù),分別是食物和貪吃蛇所在的容器。任務(wù)2貪吃蛇項目案例(三)FrmDirSet.cs類使用#region進行代碼折疊以后的效果如圖所示,由于該類在創(chuàng)建時選擇的是Windows窗體,所以無需手動導(dǎo)入命名空間System.Windows.Forms。任務(wù)2貪吃蛇項目案例1.定義一個字段,用于存放鍵盤信息2.定義一個屬性,把對應(yīng)字段myKeys的讀寫操作都公有化。3.編寫窗體FrmDirSet的Load事件綁定的方法FrmDirSet_Load()。4.分別編寫五個文本框的鍵盤按下事件綁定的方法txtUp_KeyDown()、txtDown_KeyDown()、txtLeft_KeyDown()、txtRight_KeyDown()、txtStop_KeyDown()。任務(wù)2貪吃蛇項目案例(四)FrmMain.cs類使用#region進行代碼折疊以后的效果如圖所示,由于該類在創(chuàng)建時選擇的是Windows窗體,所以無需手動導(dǎo)入命名空間System.Windows.Forms。任務(wù)2貪吃蛇項目案例1.定義五個字段。2.編寫“開始游戲”按鈕的單擊事件綁定的方法btnStart_Click(),啟動貪吃蛇游戲,該方法是在設(shè)計界面雙擊控件btnStart自動生成的。3.編寫timer1_Tick()方法,該方法是在設(shè)計界面雙擊控件timer1自動生成的4.編寫窗體FrmMain的鍵盤按下事件綁定
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)防兒童近視教學(xué)課件
- 相關(guān)方安全教育培訓(xùn)
- 順利消防案例分析課件
- 項目管理中的溝通管理
- 音樂課件兒童
- 汽車配套產(chǎn)業(yè)基地項目運營管理方案(范文)
- 城市污水管網(wǎng)建設(shè)工程可行性研究報告(范文參考)
- 鄉(xiāng)鎮(zhèn)各項管理制度
- 西醫(yī)綜合試題六(含答案)
- 2025年抗阿米巴病藥項目合作計劃書
- 2024年鐵嶺市三支一扶考試真題
- 2024版機電工程施工質(zhì)量標(biāo)準(zhǔn)化數(shù)字模型圖集
- 電力行業(yè)安全隱患案例警示教育心得體會
- 廣東省2025年中考英語模擬試卷試題及答案詳解
- 2023年3月26日安徽省中小學(xué)新任教師公開招聘《小學(xué)語文》試題及答案
- 小學(xué)一年級下冊數(shù)學(xué)口算題卡及口算天天練
- 2025新高考數(shù)學(xué)核心母題400道(教師版)
- 特種設(shè)備事故應(yīng)急處置
- 高端SPA會所的內(nèi)外環(huán)境設(shè)計藝術(shù)與實踐
- 廣告牌的施工方案
- 《湍流中大尺度結(jié)構(gòu)對小尺度結(jié)構(gòu)的影響》
評論
0/150
提交評論