版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
掃雷游戲的設計第1章緒論1.1課題背景及意義當前隨著計算機的深入普及,越來越多的人有了個人電腦,人們運用計算機完成許多重要的工作,計算機在人們的生活中變的越來越來重要。隨著計算機的應用和發(fā)展計算機已經不單純是一個工作工具,人們越來越重視計算機的娛樂性了,近年來游戲產業(yè)規(guī)模持續(xù)成長,全球每年游戲業(yè)總產值已經突破200億美金,遠遠超越好萊塢電影產業(yè)以及音樂娛樂事業(yè),而成為目前娛樂事業(yè)的最大主流。不過游戲產業(yè)光鮮亮麗的背后,卻也隱含著高風險、高成本的危機,顯示游戲產業(yè)慢慢步入“微利時代”。
目前整個游戲產業(yè)的運作模式已經跟好萊塢電影產業(yè)的運作模式相同,電影產業(yè)有制片、發(fā)行、宣傳等分工,游戲產業(yè)亦同,由專業(yè)的游戲研發(fā)小組負責研發(fā)游戲,也有如微軟、美商藝電這類國際級大廠負責游戲發(fā)行,甚至連“游戲制作人”也被培養(yǎng)成明星一樣成為一種招牌,如任天堂有王牌制作人宮本茂、SEGA有鈴木裕、KONAMI有小島秀夫、CAPCOM有三上真司、TECMO有板垣伴信...等,明確的游戲產業(yè)分工的確有助于游戲產業(yè)的規(guī)模發(fā)展與進化,但也無形中讓游戲開發(fā)成本大增。為了降低游戲開發(fā)成本,開發(fā)娛樂性強成本低的游戲就成為當前的主要課題,在這種趨勢下各種小型的低成本的游戲軟件應運而生。在這其中,系統(tǒng)自帶的小游戲也占據了相當重要的地位,與那些網絡游戲和3D游戲相比,它有編寫簡單容易上手等特點,非常適合人們在完成工作的時候適當的娛樂要求。這些小游戲大都是以益智和娛樂為目的,不僅給緊張工作的人們以放松,還可以讓人們的大腦得到開發(fā)。這些小游戲包括掃雷,彈球,紙牌等等。而本課題就是掃雷游戲的設計。1.2VisualBasic發(fā)展概況在VisualBasic語言問世以前,設計Windows應用程序是一件令人痛苦的事情。程序員必須充分了解Windows系統(tǒng)的各種知識,記住數以百計的各種Windows消息。而在VisualBasic出現以后一切似乎變得簡單多了。VisualBasic把Windows的各種細節(jié)隱藏起來,程序員需要做的是在表單中“畫”出需要的控件,然后為這些控件的事件編寫代碼。與此同時,VisualBasic提供了強大的功能,使得它足以應付用戶的絕大部分要求。VisualBasic由于功能強大,簡單易用而有著廣泛的用戶,現在全世界有500萬用戶在使用微軟公司的VisualBasic產品。微軟公司以其強大的實力,將VisualBasic發(fā)展成當前基于Windows平臺上最方便、最快捷的軟件開發(fā)工具。無論是網絡應用或多媒體技術,還是MIS系統(tǒng)的開發(fā),VisualBasic都運用得游刃有余。尤其在數據庫、多媒體、商用系統(tǒng)的用戶界面以及一般應用程序的設計等方面,VisualBasic更具有其他開發(fā)環(huán)境所不能取代的優(yōu)越之處。正是由于VisualBasic功能強大、使用簡單,使得它在短短的數年間從16位發(fā)展到32位,從VisualBasic1.0發(fā)展到VisualBasic6.0,直到現在的VisualB。何謂VisualBasic?從字面上看,“Visual”指的是開發(fā)圖形用戶界面的方法,它不需編寫大量的代碼來描述界面元素的外觀和位置,而只要把預先建立的對象拖放到屏幕上的某一點即可。這就是VisualBasic的最顯著的特點,即可視化的編程方法。在VisualBasic的發(fā)展歷程中,微軟公司一直都在加強這一功能。“Basic”指的是Beginner’sAll-purposeSymbolicInstructionCode(初學者通用符號指令代碼)的簡稱,這是一種在計算機技術發(fā)展歷史上應用最為廣泛的語言。VisualBasic繼承了Basic語言易學易用的特點,特別適合于初學者學習Windows系統(tǒng)編程。初學者希望在Windows環(huán)境中開發(fā)一般的應用程序,VB無疑是最理想的。使用VB不僅可以感受到Windows帶來的最新技術,新概念和新的開發(fā)方法,而且VB是目前眾多Windows軟件開發(fā)工具中效率最高的一個。另外VB系列產品得到了計算機工業(yè)界的承認,得到了許多軟件開發(fā)商的大力支持。VB作為一個成功的軟件產品不僅表現在其本身,它對其他軟件也產生了一定的影響。如VisualC++,BorlandC++等均提供了對VB的支持,甚至在ORACLE的最新產品中也提供對VB支持,從而使其成為一種事實上的標準。VisualBasic不僅是VisualBasic編程語言和VisualBasic編程系統(tǒng),而且MicrosoftExcel的ApplicationsEdition,MicrosoftAccess和Windows的許多其他應用程序都使用這一語言。VisualBasicScriptingEdition(VBScript)是廣泛使用的腳本語言,它是VisualBasic語言的子集。這樣,在學習VisualBasic中得到的經驗可應用到所有的這些領域中。VisualBasic是一個功能強大的Windows平臺上的開發(fā)工具,初學者只要掌握幾個關鍵詞就可以建立實用的應用程序,專業(yè)人員可以用VisualBasic實現其他任何Windows編程語言的功能,從開發(fā)個人使用的小工具,到大型企業(yè)的應用系統(tǒng),甚至通過Internet網遍及全球的分布式應用程序,都可以在VisualBasic提供的工具中各取所需。所以,VisualBasic也成為許多程序員首選的編程工具。VisualBasic之所以具有如此廣泛的用途是因為它具有以下的特點:(1)真正的面向對象編程,使開發(fā)人員不用加入太多的代碼,加快了系統(tǒng)開發(fā)的速度。(2)可視化的編程方法以及向導的功能,使開發(fā)人員不用加入太多的代碼就可以開發(fā)出標準的Windows程序。(3)數據訪問的特性,允許對包括MicrosoftSQLServer和其他企業(yè)數據庫在內的大部分數據庫格式建立數據庫和前端應用程序,以及可調整的服務器端部件等。(4)通過ActiveX技術可使用其他應用程序提供的功能,例如MicrosoftWord字處理器、MicrosoftExcel電子數據表及其他Windows應用程序,甚至可直接使用VisualBasic創(chuàng)建的應用程序和對象。(5)Internet功能強大,使用戶很容易在應用程序內通過Internet或企業(yè)內部網(Intranet)訪問文檔和應用程序,或者創(chuàng)建Internet服務器應用程序。(6)已完成的應用程序是真正的.exe文件,您可以自由發(fā)布。1.3關于本課題隨著世界經濟的長足發(fā)展和計算機技術的日益成熟,計算機被應用到人類活動的各個領域,各種應用軟件也相繼問世,這其中有相當一部分是游戲軟件。使用游戲軟件自然是為了滿足人們對娛樂性的要求,而有些軟件大都采用3D設計對系統(tǒng)配置的要求較高。在眾多游戲軟件中,也不乏一些小游戲的身影,它們對系統(tǒng)的配置要求較低。能夠滿足人們對娛樂性的需求,是人們在完成工作娛樂時候的最好選擇?,F在越來越多的人投入到這種小游戲的開發(fā)當中,它已經成為一類必不可少的游戲軟件。在各種操作系統(tǒng)中都附帶了一些小的游戲,而這些游戲也成為電腦用戶軟件中不可或缺的一部分。作為本系統(tǒng)的開發(fā)工具,MicrosoftVisualBasic6.0成為首選。它具有可視化的編程界面、詳細的提示、以及完善的幫助文檔,使得軟件開發(fā)人員感到無比的親切感。1.4本章小結本章中介紹了掃雷游戲開發(fā)的社會背景和學術背景,闡明了開發(fā)掃雷游戲的理論與實際意義,并深入研究了本系統(tǒng)的開發(fā)工具MicrosoftVisualBasic6.0。第二章掃雷游戲的總體設計2.1游戲功能簡介當前各種游戲軟件層出不窮。因為游戲的開發(fā)成本非常大,所以游戲的開發(fā)具有一定的風險性,但是一些小游戲的開發(fā)具有成本小,編寫簡單的優(yōu)勢,所以這些小游戲在游戲開發(fā)中也占有一席之地。在這類小游戲中包括益智類游戲,它以畫面精美游戲方法簡單等特點得到大家的認可。成為人們在工作之余不可或缺的好伙伴。針對真種情況我用VB編寫了掃雷這款小游戲。下面對該游戲的功能做個簡單的介紹。掃雷游戲的基本功能:點擊鼠標左鍵于未知區(qū)域,如果未知區(qū)域有雷,游戲停止,顯示所有的地雷。如果沒雷,則顯示周圍雷數,如果周圍沒雷,則再查看周圍八個區(qū)域是否有雷直到有雷為止并顯示,這其實是一個遞歸過程。點擊鼠標右鍵于未知區(qū)域,則將其置為有雷而不管是否真的有雷??蛇x擇初、中、高三級并可自定義雷數和區(qū)域大小。雷區(qū)上部左側顯示總雷數減被標明有雷區(qū)域的數目。雷區(qū)上部中間位置顯示一按鈕用于開局和顯示鼠標動作的結果。雷區(qū)上部右側顯示掃雷的時間。將雷全部掃清后,則顯示一對話框將你的姓名記入排行榜。以時間排序。2.2游戲功能模塊設計下面首先介紹一下VB編碼規(guī)范:變量變量命名不推薦采用匈牙利命名法,除非命名會和關鍵字產生沖突的時候,才用類型縮寫+變量實名的匈牙利命名法。一般情況下,變量命名應該簡單,盡量使用縮寫。如果是一般的值類型,如integerstring,則直接使用變量用途命名,盡量使用全名: Dimname AsString Dimcount AsInterger 對于一般的臨時性變量定義,應該盡可能地簡單,如: Dimi AsInteger Fori=0to100 NextI 如果是類對象或自定義類型對象,則在單一使用情況下使用類名稱或自定義類型名稱的簡寫來命名:Dimem AsEnityManager如果非單一使用,則使用類型名稱縮寫為前綴,即使用匈牙利命名法:DimemRead AsEntityManagerDimemSave AsEntityManager(注意:所有前綴都全部小寫,后面的單詞首字母大寫) 縮寫規(guī)則如下: 如果名稱由多個單詞組成,則取每個單詞的首字母,如EntityManager縮寫為em,ProcedureManager縮寫為pm。 如果名稱由一個單詞組成,則對單詞進行分段取首字母,如Entity縮寫為et。 縮寫應該控制在3個字母以內,盡量清晰,對于接口名稱,I……中的I前綴不對縮寫產生任何影響,如Ientity的名稱應視作Entity。 除非首字母為元音,否則應該截取輔音做為縮寫,如TextBox控件的縮寫前綴為txt。 范圍標識: 全局變量加前綴:’g_’ 模塊級變量加前綴:’m_’ 過程級變量不加前綴 全局變量和模塊級變量應該盡量使用全名稱,不推薦使用縮寫,如:g_EntityManager 控件 控件命名一律使用控件類型縮寫+控件用途的命名方式,類型縮寫應控制在3個字母以內,縮寫規(guī)則同變量命名,以下是常用控件的類型縮寫,應該嚴格遵守,如果使用了新的控件,則首先應該在小組內協(xié)同一致其類型名稱縮寫后再進行使用。cmb Comboboxchk Checkboxcmd Commandbuttondlg Commondialogcontroldt DTPicker DropDateControlenm EnumEditBoxfra Framefrm Formgra Graphgrd EditGridMSHFlexGridFlexGridDataGridimg ImageImageListlab Labelln Linelst Listboxlv ListViewmnu Menucontrolnm NumEditBoxopt Optionbuttonpic Picturerpt Reportsbr Scrollbarshp Shapespn Spinst StatusBartb ToolBartmr Timertxt Textboxtv TreeView 函數 此處函數包括sub和function,以下這兩種過程統(tǒng)稱為函數。 函數表示的是一個動作,所以它的結構應該是動詞+名詞,動詞必須小寫,后面的名稱首字母大寫,如:getMaterialCodeupdateGridreadOrder 函數命名盡量不要使用縮寫,而且它的名稱應該使人一目了然,能夠從名稱就知道這個函數的功能,不要使用無意義的函數名稱,如:getCode(當這個函數屬于Materail類的時候,它還是有意義的),update,readData。 當函數名稱不足以表達其功能時,使用在函數頭部加上讓調用者足夠明白的注釋。 參數的命名:參數命名的原則是全部小寫,如果參數包括兩個或以上的單詞時,首單詞字母小寫,其它單詞首字母大定,如showCol、isUpdate。 常量 常量的命名應該全部大寫,使用’_’作為單詞間的分隔符,單詞盡量使用全名稱,如: PublicConstMSG_EMPTY_ROW AsString=“有空行存在!” 解釋:(1)對一些常用詞應該使用簡寫,如msg(2)使用Public而不是早期版本的global來聲明變量(3)對常量的聲明必須帶上類型,如上面的AsString 屬性 屬性的命名采用首字母大寫的原則,如ItemCountItem 類、窗體和模塊 類的命名使用功能名詞,不必加任何前綴和后綴,并且單詞首字母大寫,如:SystemConfig 窗體命名使用功能名詞+Form后綴,如:ListForm。但對于單據的明細窗體則統(tǒng)一使用Detail后綴替換Form 模塊命名:不必加任何前綴和后綴,直接命名 自定義控件 自定義控件的命名:名詞+Ctrl格式 定義 定義的代碼塊應該放在一起,盡量不要在中間定義變量,變量的定義應該頂行進齊,不能縮進,同時要保證”As”關鍵字的對齊,如下:Dimi AsIntegerDimj AsIntegerDimem AsEntityManager 對象的定義應該盡可能地帶上所屬的庫名稱,防止以后引起名稱沖突,如引用了兩個Lib,每個中都包含一個stock類,如果不使用As….Lib.Stock的定義方式,則無法編譯通過,為了防止以后程序擴充和修改時引入新的庫帶來命名沖突,推薦在定義類對象時全部加上庫標識,對于本工程的類對象定義也要加上,如: Dimem AsObjectPersistenceLib.EntityManager 空行 空行是區(qū)分代碼塊與塊的間隔,在函數之間必須加上空行(兩行左右),而函數內部,變量聲明塊和實現塊(實現塊指除變量聲明外的其它代碼)要使用空行來間隔(一行),實現塊的內部,通過空行來標識一個功能段,(注意:不要使用過多的空行,空行太多影響代碼閱讀!) 縮進 縮進必須嚴格執(zhí)行,變量聲明塊不縮進,實現塊必須保證全部縮進(即不可能有實現塊是行首對齊的)。 對于基本的控制結構,必須要有縮進,如:IF、DO、WITH、FOR、OPEN、SELECT塊。 (注意:在任何地方,不要寫ElseIf語句,轉換成IF..ELSE..ENDIF結構) 對于過長的語句,必須使用續(xù)行,續(xù)行位置要有明顯意義。 函數的參數如果過長,也應該續(xù)行。注釋 量 注釋以盡可能少為宜,但必須要做到別人能夠通過閱讀你的代碼明白你的意思,讓調用者明白函數功能的表達優(yōu)先級原則如下:(1)通過函數名稱表達(2)通過代碼來表達(3)通過注釋來表達由上可知,注釋是在代碼無法充分表達函數功能時才提供,注釋同樣應該做到準確簡潔。 格式 注釋的格式遵循vbDocMan的寫法,一般情況下使用vbDocMan的注釋編輯器進行注釋編寫,對于顯而易見的參數或函數功能可以不加注釋。參數注釋中參數類型可以不要。在每個代碼模塊(窗體、類、模塊、控件)的最上面,必須寫上代碼編寫人(使用英文名或中文拼音縮寫)、代碼創(chuàng)建時間、代碼修改時間和修改說明。按照上面介紹的編碼規(guī)范編寫掃雷游戲的程序代碼,首先將游戲劃分成若干個功能模塊。根據以上對掃雷游戲的功能分析,得到如圖2-1所示的游戲功能模塊圖。掃雷游戲窗體類模塊時間控件點擊笑臉鼠標抬起掃雷游戲窗體類模塊時間控件點擊笑臉鼠標抬起鼠標點擊窗體加載鼠標雙擊函數遞歸函數重新開始函數畫圖函數計時函數圖2-12.3本章小結本章介紹了掃雷游戲系統(tǒng)的總體設計方案,簡要的說明了掃雷游戲系統(tǒng)實現的功能,并以功能模塊圖的形式體現出來。第三章掃雷游戲的具體實現3.1掃雷游戲模塊的實現掃雷游戲的開發(fā)主要包括兩大部分:一部分是掃雷,該部分包括判斷鼠標左鍵點擊某區(qū)域該區(qū)域是否是雷,如果是雷該如何操作,如果不是雷該如何操作,鼠標右鍵點擊某區(qū)域時如果判斷該區(qū)域是雷則加以標記,如果不是雷也加以標記,以及當鼠標雙擊某區(qū)域時,判斷與該區(qū)域相鄰的其它8個區(qū)域是否是雷并做一個標記。另一個部分是計時,該部分完成記錄當玩家開始一局游戲時到一局游戲結束時所用的時間。下面首先介紹第一部分——掃雷。3.1.1掃雷游戲主窗體的創(chuàng)建啟動VisualBasic6.0后,有兩種情況可能出現:其中一種情況是出現提示創(chuàng)建工程對話框,在這個對話框內,VisualBasic6.0提供了用戶可能需要的各種類型的應用程序模板。如果是這種情況,選擇“標準EXE”將創(chuàng)建一個新的工程,并且在這個工程中默認創(chuàng)建了一個標準窗體;另一種情況是不出現對話框,直接新建了一個默認的工程,這個工程中也帶有一個標準窗體。在應用VisualBasic創(chuàng)建應用程序時,將會用到工程來管理構成應用程序的所有不同文件。它包括跟蹤所有部件的工程文件、每個窗體的文件、每個標準模塊的文件、每個類模塊的文件等多種文件。工程文件就是與該工程有關的全部文件和對象的清單,也是所設置的環(huán)境選項方面的信息。每次保存工程時,這些信息都要被更新。當完成工程的全部文件后,即可將此工程轉換成可執(zhí)行文件(.exe):從“文件”菜單中選取“生成project.exe”命令。下面介紹一下如何創(chuàng)建窗體界面:在菜單欄或工具欄上按下鼠標右鍵,會彈出一個快捷菜單(也可使用“視圖”菜單中的“工具欄”菜單項),菜單上有四個菜單項分別對應VisualBasic的四個工具欄,它們是“編輯”、“標準”、“窗體編輯器”和“調試”工具欄。選擇一個菜單項即可打開或關閉相應的工具欄。前面有復選標記表示相應的工具欄已打開。選中窗體編輯器,編輯掃雷游戲的主窗體。主窗體如圖3-1所示:圖3-1(一)在窗體上創(chuàng)建新控件的方法1.(1)鼠標單擊“工具箱”中的控件類型圖標,鼠標指針變?yōu)槭纸徊婢€形;(2)在窗體上按下鼠標左鍵不放并拖動一段距離,然后釋放鼠標左鍵,鼠標指針變?yōu)榧^形,新控件即創(chuàng)建完畢。2.(1)按住鍵盤上的Ctrl鍵不放;(2)鼠標單擊“工具箱”中想要的控件類型圖標,鼠標指針變?yōu)槭纸徊婢€形;(3)在窗體上按下鼠標左鍵不放并拖動一段距離,然后釋放鼠標左鍵,新控件即放置完畢,鼠標指針仍為十字交叉線形,可以重復第(3)步驟放置多個同一類型的新控件;(4)單擊“工具箱”左上角的箭頭形圖標,鼠標指針還原為箭頭形。3.雙擊“工具箱”中控件類型圖標,即在窗體中央位置新建一個該類型的控件。4.(1)在一已有控件上單擊鼠標左鍵,選定該控件;(2)使用“編輯”菜單中的“復制”命令、“標準”工具欄上的“復制”按鈕或Ctrl+C組合鍵將選定的控件放入系統(tǒng)剪貼板;(3)使用“編輯”菜單中的“粘貼”命令、“標準”工具欄上的“粘貼”按鈕或Ctrl+V組合鍵從剪貼板上粘貼;(4)顯示一個提問“是否創(chuàng)建控件數組”的消息框,選擇“否”即可。多次粘貼可以生成多個控件,并且不再顯示對話框提問。(二)調整窗體和控件的位置和大小1.在設計狀態(tài)下選擇對象的方法(1)鼠標左鍵單擊選定單個控件。(2)按下Shift鍵或Ctrl鍵單擊鼠標左鍵,可選擇多個控件。(3)在窗體無控件處按下鼠標左鍵并拖動,形成一個虛線框,釋放鼠標左鍵,可以選擇虛線框圍起的多個控件。(4)單擊窗體上無控件處,可以選擇窗體對象。2.調整窗體與控件大小和位置的方法(1)選定的窗體與控件周圍有八個選定句柄(控點),拖動控件的任一句柄都可以調整其大小;拖動窗體對象右下方三個句柄可以調整窗體的大小。(2)單擊并拖動控件的內部區(qū)域可以在窗體上移動控件。(3)要調整窗體在運行時顯示在屏幕上的位置,可以使用屬性窗口來設置其Top和Left屬性的值,也可以使用窗體布局窗口。(4)使用屬性窗口設置窗體和控件Width、Height屬性的值也可以調整其大小。(三)窗體,命令按鈕,文本框和標簽控件的常用屬性時間和方法1.窗體(Form)屬性:Name、Caption、Left、Top、Width、Height、Moveable、Enabled、Visible、BorderStyle、Icon、ControlBox、MaxButton、MinButton、WindowState。方法:Move、Show、Hide、Print。事件:Click、DblClick、Resize、Load。2.命令按鈕(CommandButton)屬性:Name、Caption、Left、Top、Width、Height、Visible、Enabled、Default、Cancel、Value。方法:Move。事件:Click。3.文本框(TextBox)屬性:Name、Text、Left、Top、Width、Height、Visible、Enabled、MaxLength、MultiLine、ScrollBars、SelLength、SelStart、SelText、Alignment、PasswordChar、Locked、Apearance。方法:Move。事件:Click、DblClick、Change。4.標簽(Label)屬性:Name、Caption、Left、Top、Width、Height、Visible、Enabled、BorderStyle、AutoSize、WordWrap。方法:Move。事件:Click、DblClick、Change。(四)使用屬性窗口設置對象的屬性1.首先選擇要設置屬性的對象,或者從屬性窗口頂部的組合框①中選擇對象。2.屬性窗口中列出選定對象的大部分屬性,屬性名稱在左③,屬性的值在右④。默認情況下,屬性是以字母順序列出的,可以使用選項卡②來選擇按分類排序。使用鼠標單擊屬性窗口中的一個屬性,屬性窗口底部⑤會顯示出關于此屬性的簡要描述。使用快捷菜單中的“描述”項可以打開或關閉此描述。3.設置屬性值的方法會因屬性的不同而不同。(1)直接在屬性值的位置上④輸入文字,如Caption、Name屬性等;(2)直接在屬性值位置上輸入數字,如Left、Top、Left、Height等;(3)從屬性值中進行選擇,如BorderStyle、Visible、Enabled等;(4)鼠標左鍵雙擊屬性名,屬性值會在幾個允許的值之間切換,如BorderStyle、Visible、Enabled等。(五)使用代碼窗口編寫簡單的事件過程1.由對象窗口轉到代碼窗口的方法有:(1)使用“工程”窗口上的“查看代碼”按鈕;(2)使用“視圖”菜單中的“代碼窗口”命令;(2)在對象窗口內單擊鼠標右鍵,從快捷菜單中選擇“查看代碼”命令。2.從代碼窗口頂部的“對象”組合框中選擇要編寫事件過程的對象名,再從“過程”組合框中選擇事件名,VisualBasic自動創(chuàng)建事件過程的首尾兩條語句,如“PrivateSubForm_Click”和“EndSub”。3.在事件過程中添加語句,實現具體功能。如:PrivateSubForm_Click() Form1.Left=0 Form1.Top=0 Form1.Caption="你好,VisualBasic!"EndSub下面介紹一下內部控件的常用屬性,方法和事件1.直線(Line)控件屬性:Name、X1、Y1、X2、Y2、Visible、BorderStyle、BorderWidth。2.形狀(Shape)控件屬性:Name、Left、Top、Width、Height、Visible、Shape、BorderStyle、BorderWidth、FillStyle。方法:Move。3.圖像(Image)控件屬性:Name、Left、Top、Width、Height、Visible、Enabled、BorderStyle、Picture、Stretch。方法:Move。事件:Click、DblClick。4.圖片框(PictureBox)控件屬性:Name、Left、Top、Width、Height、Visible、Enabled、BorderStyle、Picture、AutoSize、Align。方法:Move。事件:Click、DblClick、Change。5.滾動條(HScrollBar、VScrollBar)控件屬性:Name、Left、Top、Width、Height、Visible、Enabled、Value、Min、Max、SmallChange、LargeChange。方法:Move。事件:Change、Scroll。6.框架(Frame)控件屬性:Name、Left、Top、Width、Height、Visible、Enabled、Caption、BorderStyle。方法:Move。事件:Click、DblClick。7.復選框(CheckBox)控件屬性:Name、Left、Top、Width、Height、Visible、Enabled、Caption、Style、Alignment、Value。方法:Move。事件:Click。8.單選框(OptionButton)控件屬性:Name、Left、Top、Width、Height、Visible、Enabled、Caption、Style、Alignment、Value。方法:Move。事件:Click、DblClick。9.列表框(ListBox)控件屬性:Name、Left、Top、Width、Height、Visible、Enabled、Column、ListCount、List、ListIndex、ItemData、MultiSelect、Style、SelCount、Selected、Text、Sorted、NewIndex。方法:AddItem、RemoveItem、Clear、Move。事件:Click、DblClick、Scroll。10.組合框(ComboBox)控件屬性:Name、Left、Top、Width、Height、Visible、Enabled、ListCount、List、ListIndex、ItemData、Style、Text、Sorted、SelStart、SelText、SelLength。方法:AddItem、RemoveItem、Clear、Move。事件:Change、Click、DblClick、Scroll。11.定時器(Timer)控件屬性:Name、Left、Top、Interval、Enabled。事件:Timer。3.1.2掃雷游戲窗體程序的編寫該部分包括如下幾個函數:Form_Load,Form_MouseDown,Form_MouseUp,Imahappy_Click,Timer1_Timer。下面我簡單的介紹一下這幾個函數完成的功能Form_Load:該函數完成窗體的加載工作。Form_MouseDown:該函數判斷鼠標左鍵點擊某未知區(qū)域時,該未知區(qū)域是否是雷,如果是雷則游戲停止,顯示所有雷,如果沒雷,則顯示周圍雷數,如果周圍沒雷,則再查看周圍八個區(qū)域是否有雷直到有雷為止并顯示,這其實是一個遞歸過程。Form_MouseUp:該函數完成當鼠標左鍵抬起時,Imahappy_Click:該函數完成當鼠標點擊窗體上方的笑臉時從新開始游戲Timer1_Timer:該函數完成從玩家開始游戲時到游戲停止時玩家所用的時間。窗體文件程序的原代碼如下:PrivateSubForm_Load()SetobjMine.mfrmdisplay=MeobjMine.iniEndSubPrivateSubForm_MouseDown(buttonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Ifgameover=0ThenIfX>180AndX<7380AndY>855AndY<4695Thenstart=1objMine.BeginHitTestbutton,X,YIfbutton=1Thendouble_click=double_click+1EndIfIfbutton=2Thendouble_click=double_click+1EndIfEndIfEndIfEndSubPrivateSubForm_MouseUp(buttonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)CallobjMine.Button_upIfdouble_click=2ThenobjMine.dou_cliX,Ydouble_click=0Elsedouble_click=0EndIfEndSubPrivateSubImahappy_Click()objMine.restartEndSubPrivateSubTimer1_Timer()Ifstart=1ThenobjMine.time1,7060,270EndIfEndSub3.2掃雷游戲類模塊部分程序的編寫在這部分一共定義了12個函數,這些函數用于窗體程序的調用,完成程序功能的具體實現工作。由于篇幅有限在這里不能將所有函數一一詳細介紹,下面我將列出所有的函數和每個函數所完成的具體的功能,并對其中幾個重要的函數加以詳盡的介紹。(1)PublicSubdou_cli(XAsSingle,YAsSingle)Ifarry(X,Y,4)=1ThenIf0<arry(X,Y,0)<10Thennum=arry(X,Y,0)IfY-1>=0ThenIfarry(X,Y-1,2)=1Thentemp=temp+1EndIfEndIfIfY-1>=0AndX+1<=15ThenIfarry(X+1,Y-1,2)=1Thentemp=temp+1EndIfEndIfIfX+1<=15ThenIfarry(X+1,Y,2)=1Thentemp=temp+1EndIfEndIfIfY+1<=29AndX+1<=15ThenIfarry(X+1,Y+1,2)=1Thentemp=temp+1EndIfEndIfIfY+1<=29ThenIfarry(X,Y+1,2)=1Thentemp=temp+1EndIfEndIfIfY+1<=29AndX-1>=0ThenIfarry(X-1,Y+1,2)=1Thentemp=temp+1EndIfEndIfIfX-1>=0ThenIfarry(X-1,Y,2)=1Thentemp=temp+1EndIfEndIfIfX-1>=0AndY-1>=0ThenIfarry(X-1,Y-1,2)=1Thentemp=temp+1EndIfEndIf該段程序代碼完成的具體功能如下:首先判斷某點是否是雷,如果是雷則將該點相鄰8個點的雷數值付給num。然后判斷該點左側相鄰的點是否超出窗體點擊范圍,如果沒有則判斷左側相鄰的點是否是旗(注:旗標明該點為雷)如果是旗則將temp+1付值給temp,temp的初值為0。按照該方法依次對該點相鄰的8個點進行判斷,最后判斷temp=num是否成立,如果成立則可以完成鼠標左右鍵同時點擊的功能將周圍8個點都打開。(2)PublicSubini()該函數完成游戲的部雷工作,并計算每一個點相鄰區(qū)域的雷的個數,將這個數記錄并存儲于三維數組arry(i,j,0)中。(3)PublicSubrestart()mfrmdisplay.PaintPicturemfrmdisplay.Picture,0,0s=0n=0m=0l=0f_minenum=99mine.gameover=0mine.start=0Fori=0To15Forj=0To29Fork=0To4arry(i,j,k)=0NextkNextjNextiCalliniEndSub該函數的功能如下:當鼠標點擊窗體上方的笑臉時重新開始游戲。(4)PublicSubButton_up()mine.Imahappy.Visible=TrueEndSub該函數的功能如下:(5)PublicSubBeginHitTest該函數的功能如下:(6)PrivateFunctiondigui(XAsInteger,YAsInteger)arry(X,Y,1)=1IfY-1>=0ThenIfarry(X,Y-1,0)=0Andarry(X,Y-1,1)=0Thenmfrmdisplay.PaintPicturemfrmdisplay.Picture0,(Y-1)*240+180,X*240+855Calldigui(X,Y-1)EndIfCallpaint(1,X,Y-1)EndIf該函數功能如下:判斷某個點的相鄰8個點是否是雷,如果是雷則調用一個函數用一個圖片覆蓋這個區(qū)域,如果不是雷也調用一個函數用另一個圖片覆蓋這個區(qū)域。由于代碼比較長下面只列出一部分。其余的7個點也是按照這個方法依次進行判斷,再此不在贅述。(7)PrivateSubpaint(sAsInteger,XAsInteger,YAsInteger)Ifs=1Thenarry(X,Y,4)=1EndIfIfarry(X,Y,0)=1Thenmfrmdisplay.PaintPicturemfrmdisplay.Picture1,Y*240+180,X*240+855EndIfIfarry(X,Y,0)=2Thenmfrmdisplay.PaintPicturemfrmdisplay.Picture2,Y*240+180,X*240+855EndIfIfarry(X,Y,0)=3Thenmfrmdisplay.PaintPicturemfrmdisplay.Picture3,Y*240+180,X*240+855EndIfIfarry(X,Y,0)=4Thenmfrmdisplay.PaintPicturemfrmdisplay.Picture4,Y*240+180,X*240+855EndIfIfarry(X,Y,0)=5Thenmfrmdisplay.PaintPicturemfrmdisplay.Picture5,Y*240+180,X*240+855EndIfIfarry(X,Y,0)=6Thenmfrmdisplay.PaintPicturemfrmdisplay.Picture6,Y*240+180,X*240+855EndIfIfarry(X,Y,0)=7Thenmfrmdisplay.PaintPicturemfrmdisplay.Picture7,Y*240+180,X*240+855EndIfIfarry(X,Y,0)=8Thenmfrmdisplay.PaintPicturemfrmdisplay.Picture8,Y*240+180,X*240+855EndIfIfarry(X,Y,0)=100Thenmfrmdisplay.PaintPicturemfrmdisplay.mine,Y*240+180,X*240+855EndIfEndSub該函數判斷如果點擊的某區(qū)域如果不是雷,它的相鄰區(qū)域的8個點有1個雷則覆蓋一個相應的圖片,如果有兩個雷則覆蓋一個相應的圖片,依次類推一共是8種情況,如果是雷則覆蓋一個與之對應的圖片。(8)PublicSubfall()DimiAsIntegerDimjAsIntegermine.start=0mine.gameover=1Fori=0To15Forj=0To29Ifarry(i,j,0)=100Thenmfrmdisplay.PaintPicturemfrmdisplay.mine,j*240+180,i*240+855
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度洗浴中心設施設備租賃承包合同3篇
- 2025年土地整治與生態(tài)保護補償基金管理合同范例3篇
- 2025年度影視拍攝專用相機租賃合同范本3篇
- 互聯網+在線藝術教育:藝術學習平臺
- 初創(chuàng)企業(yè)如何利用線下活動進行市場拓展
- 2024年系統(tǒng)集成項目合作契約
- 2025年度旅游大巴車租賃與景區(qū)內旅游紀念品銷售服務合同3篇
- 2024年甲乙雙方關于學校區(qū)域垃圾清運承包合同
- 我國職業(yè)教育混合所有制辦學改革的機制研究
- 養(yǎng)殖場安全及動物防疫畜牧站發(fā)言稿
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應用實踐指導材料之4:4組織環(huán)境-4.2理解相關方的需求和期望(雷澤佳編制-2025B0)
- 2024年一級支行行長競聘演講稿例文(4篇)
- 健身房銷售人員培訓
- 2024-2025學年 數學二年級上冊冀教版期末測試卷(含答案)
- 2024年1月遼寧省普通高中學業(yè)水平合格性考試物理試題(含答案解析)
- 期末測試卷(試題)-2024-2025學年四年級上冊數學滬教版
- 宮頸癌篩查健康宣講PPT優(yōu)秀課件
- 輔警年度考核登記表
- 小沈陽《新上海灘》經典臺詞
- 建工會職工之家的申請.doc
- CSFB信令流程(常用)
評論
0/150
提交評論