基于windows平臺c語言實現(xiàn)迷宮游戲的設(shè)計大學(xué)論文_第1頁
基于windows平臺c語言實現(xiàn)迷宮游戲的設(shè)計大學(xué)論文_第2頁
基于windows平臺c語言實現(xiàn)迷宮游戲的設(shè)計大學(xué)論文_第3頁
基于windows平臺c語言實現(xiàn)迷宮游戲的設(shè)計大學(xué)論文_第4頁
基于windows平臺c語言實現(xiàn)迷宮游戲的設(shè)計大學(xué)論文_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE26摘要隨著科技的日益發(fā)展,計算機信息知識越來越被人們所認知和使用,在當今知識爆炸的時代計算機毫無疑問成為人們常用的日常工具,而Windows和C語言都憑借其獨特的優(yōu)勢越來越贏得人們的青睞。IT業(yè)的壯大,信息化的不斷更新加快了我們進入智能時代的腳步,同時使得我們的生活更加的豐富多彩,物質(zhì)文明富足下精神文明的建設(shè)也成為時代進步的標志,因而各種豐富生活的輕松娛樂軟件應(yīng)運而生,對它們的研究也成為各界關(guān)注的重點。Windows平臺下用C語言實現(xiàn)的迷宮游戲設(shè)計,由圖形驅(qū)動,歡迎畫面,初始化迷宮數(shù)組,尋找路徑,輸出迷宮圖形,結(jié)束畫面,圖形結(jié)束七個模塊構(gòu)造。七個函數(shù)模塊各成體系,互不干擾。因此,簡易迷宮程序的實現(xiàn)在迎合大環(huán)境的同時更有利于在以后的開發(fā)項目中提供良好的思維方式,來進行更深入的研究了解。關(guān)鍵字Windows;TurboC2.0;C語言;迷宮RealizeanddesignthegameofmazeinCprogramlanguagebasedonWindowsAbstractWiththedevelopmentofscientifictechnology,computerinformationtechnologyhasbecomemoreandmorepopular.It’snodoubtthatcomputerhasbecomethepopulartoolsinourlivestoday.WindowsandClanguagewithit’suniqueadvantagehavewonpeople’sfavormoreandmore.Growthofinformationindustryandthecontinuousupdatingofinformationspeedupourpaceintotheintelligencetimesandmakeourlifemorecolorfulatthesametime.Spiritualcivilizationconstructionhasbecomeasignoftheprogressoftimesunderplentyofmaterial,soallkindsofentertainmentsoftwareenrichinglifecameintobeing,researchonthemhasbecomeafocusofpublicattention.DesignofmazegameisrealizedbytheClanguagebasedonwindowsplatform.Thegameincludessevenmodules,i.e.graphicsdriver,thewelcomescreen,initializingthearrayofmaze,findingthepath,theoutputofmazegraphics,theendofthescreen,graphicsend.Thesevenfunctionmodulesisindependent.Sotherealizationofsimplemazeprocedurewhichadapttoenvironmentatthesametimewillbenefittoprovideagoodwayofthinkinginthefutureprojectinordertostudyindepth.Keywords:windows;Turboc2.0;Clanguage;maze緒論 信息化時代,生活中各色產(chǎn)品都已經(jīng)離不開計算機的開發(fā)實現(xiàn),并且我們現(xiàn)在的生活已經(jīng)跟信息化元素真正密切聯(lián)系著了,而影響我們生活的信息化產(chǎn)品都是從一個小型產(chǎn)品的研究中演變而來。豐富我們精神生活的產(chǎn)品也不例外,現(xiàn)下一些小型游戲也廣受人們的熱愛,而最為智力游戲中的迷宮游戲也層出不窮,且各色各樣,并且這些小型游戲的開發(fā)也備受國內(nèi)外個大信息產(chǎn)品開發(fā)商的歡迎,不斷推出自己的產(chǎn)品,且很好的進入了人們的生活。 各大公司,各種產(chǎn)品,都有它自己的設(shè)計平臺及項目安排,并且都很好的達到了社會的需求,豐富了人們的生活,但產(chǎn)品平臺的差異并不一影響產(chǎn)品投入市場的價值,同時產(chǎn)品的大小也不意味著在市場上未來價值的利益懸殊,產(chǎn)品研發(fā)的核心技術(shù)才是最大的基礎(chǔ)跟價值,此論文中的迷宮游戲設(shè)計正是基于游戲設(shè)計的理念,只為達到培養(yǎng)鍛煉個人開發(fā)設(shè)計的能力及培養(yǎng)綜合運用軟硬件環(huán)境來投入到更大項目開發(fā)中的實戰(zhàn)技能的目的,真正表現(xiàn)出小產(chǎn)品的大效益。 本論文嘗試了不同的方法達到實現(xiàn)簡單迷宮游戲的設(shè)計實現(xiàn),在不斷的總結(jié)實踐過程中,最終運用基本的設(shè)計開發(fā)理念,從一個產(chǎn)品的需求功能上初步分析,再從技術(shù)經(jīng)驗的可行性判斷,最終確定項目的流程,投入開發(fā)實施。 論文在達到實現(xiàn)效果的同時更深入介紹了操作平臺及其開發(fā)語言的基本知識,不僅達到了實現(xiàn)的最終目的,同時更好地豐富了對于開發(fā)過程中使用工具的知識了解。在注重設(shè)計能力的同時也貫徹了對創(chuàng)新能力的培養(yǎng),還兼顧了對C語言底層庫函數(shù)的介紹,真正全面的認識到了用語言開發(fā)的整個過程。 本論文使用3個章節(jié)的篇幅,從不同的方面去介紹了對于整個開發(fā)過程中一些工具及其開發(fā)理念的的不同層次的介紹。 第一章又通過3個小節(jié)的層次結(jié)構(gòu)分別敘述了開發(fā)平臺及開發(fā)語言的基本知識,在達到實現(xiàn)迷宮游戲設(shè)計的同時去見要的為大家介紹各方面的知識,真正掃除對一些基本概念的懵懂認識,全面豐富知識的深度。 第二章簡單的針對迷宮游戲的實現(xiàn),進行了概要的需求分析,使設(shè)計過程的目的更加明確,有利于直接的對產(chǎn)品的實現(xiàn)帶來清晰的思路。同時,它的需求分析也是一種廣度的對一個產(chǎn)品設(shè)計的基本要求,可以達到由此及彼的效果,有一定的指導(dǎo)價值。 第三章便真正投入到本課題的設(shè)計研究中,通過對設(shè)計迷宮游戲的兩大方面去細述,首先,對C語言實現(xiàn)的迷宮游戲功能模塊上進行劃分,具體到圖形驅(qū)動、歡迎畫面、初始化迷宮數(shù)組、尋找路徑、輸出迷宮圖形、結(jié)束畫面、圖形結(jié)束這七大模塊,同時概述各自的功能,進行了一個完整迷宮游戲的概述;其次,再深入到具體語言的實施上,也該論文最核心的部分,對各功能函數(shù)的算法實現(xiàn)上具體概述。真正完整的介紹了整個游戲的全部實現(xiàn)過程。 本論文只是在信息化時代這個大背景下一個小小的折射點,通過對一個簡單產(chǎn)品的開發(fā)流程及技術(shù)方面的簡要介紹,重點在于注入一個在IT產(chǎn)業(yè)對于一個功能項目開發(fā)的思想,在這個基本思想的基礎(chǔ)上再各展才華,真正在一個團隊的基礎(chǔ)上來最終開發(fā)出一個具有生活實際價值的產(chǎn)品,服務(wù)社會,推動社會的進步。1開發(fā)平臺與開發(fā)語言介紹1.1開發(fā)平臺簡介1.1.1什么是Windows windows中文是窗戶的意思。另外還有微軟公司推出的視窗電腦操作系統(tǒng)名windows。Windows是由Microsoft開發(fā)的,是目前世界上用戶最多、并且兼容性最強的操作系統(tǒng)。隨著電腦硬件和軟件系統(tǒng)的不斷升級,微軟的windows操作系統(tǒng)也在不斷升級,從16位、32位到64位操作系統(tǒng)。從最初的windows1.0到大家熟知的windows95、NT、97、98、2000、Me、XP、Server、Vista,Windows7各種版本的持續(xù)更新,微軟一直在盡力于Windows操作的開發(fā)和完善。1.1.2Windows的出現(xiàn)Windows起源可以追溯到Xerox公司所進行的研發(fā)工作。1970年,美國Xerox公司成立了著名的研究機構(gòu)PaloAltoResearchCenter(PARC),從事局域網(wǎng)絡(luò)、激光打印機、圖形使用者接口(GraphicUserInterface,縮寫:GUI)和面向?qū)ο?Object-Oriented)技術(shù)的研究,并于1981年宣布推出世界上第一個商用的GUI系統(tǒng):Star8010工作站。但由于種種原因,此技術(shù)上的領(lǐng)先并未得到充份的重視,也沒有進一步做商業(yè)化的應(yīng)用。

然而AppleComputer公司的創(chuàng)始人之一SteveJobs在參觀Xerox公司的PARC研究中心后,認識到了GUI的重要性以及廣闊的市場前景,于是開始著手進行自己的GUI系統(tǒng)研發(fā)工作,并于1983年研發(fā)成功第一個GUI系統(tǒng):Lisa。不久,Apple又推出第二個GUI系統(tǒng):Macintosh,這是世界上第一個成功的商用GUI系統(tǒng)。Apple公司在開發(fā)Macintosh時,出于市場戰(zhàn)略上的考量,只開發(fā)了能于Apple公司自己的計算機上作運作的GUI系統(tǒng),但當時,基于Intelx86微處理器芯片的IBM兼容計算機已漸露頭角,因此就給了Microsoft公司所開發(fā)的Windows生存空間和市場。

Microsoft公司早就意識到建立業(yè)界標準的重要性,在1983年春季就宣布開始研究開發(fā)Windows,希望它能夠成為基于Intelx86微處理芯片計算機上的標準GUI操作系統(tǒng)。它在1985年和1987年分別推出Windows1.03版和Windows2.0版。但是,由于當時硬件和DOS操作系統(tǒng)的限制,這兩個版本并沒有取得很大的成功。此后,Microsoft公司對Windows的RAM管理、GUI做了重大改進,使GUI更加美觀并支持虛擬內(nèi)存。Microsoft于1990年5月份推出Windows3.0并一炮而紅。這個「千呼萬喚始出來」的操作系統(tǒng)一面世便在商業(yè)上取得驚人的成功:不到6周,Microsoft公司銷出了50萬份Windows3.0,打破了任何軟件產(chǎn)品的6周銷售記錄,從而一舉奠定了Microsoft在操作系統(tǒng)上的壟斷地位。后來更因此在1994年時被Apple公司控告侵權(quán),展開了著名的“l(fā)ookandfeel”訴訟官司。1.1.3Windows的基本思想及其特點1、基于圖形的操作環(huán)境dos提供的是一個字符合作運行方式的操作環(huán)境,用戶通過發(fā)命令來操作計算機,完成一項任務(wù),必須記住一條相應(yīng)的命令和它的語法,這實際不利于初學(xué)者,想要記住上百條命令和眾多的參數(shù)就更困難了,相比之下,windows提供的是一個基于圖形的操作環(huán)境。對計算機的操作是通過對“窗口”、“圖標”、“菜單”等圖形畫面和符號的操作來實現(xiàn)。用戶操作的方式,不僅可以用鍵盤,而且更多的是用鼠標來完成。鼠標點擊之間,選擇、運行、調(diào)度等工作輕松自如。由此可見,windows作為人與計算機的接口,與dos相比更加友善。

2、多任務(wù)運行,共享系統(tǒng)資源

dos在實際工作時,若要同時處理多個任務(wù),無論怎樣努力,都顯得“笨手笨腳”。相比之下,在windows下,可以同時運行多道程序,執(zhí)行多個任務(wù),各程序任務(wù)之間既能很容易地轉(zhuǎn)換,又可方便地交換信息、共享資源(如cpu、內(nèi)存、顯示屏、鍵盤,鼠標器、磁盤以及打印機等)。

例如,在windows環(huán)境下,所有應(yīng)用程序共享計算機的顯示屏,都能在顯示屏上分配一塊區(qū)域,從而確保用戶能同時與所有的應(yīng)用程序交互,方便地在各種程序之間切換。windows3.1為信息交換提供三種方式(機制):剪貼板(靜態(tài)數(shù)據(jù)傳輸)、dde(動態(tài)數(shù)據(jù)交換)和ole(對象鏈接和嵌入),利用剪貼板,各應(yīng)用程序的數(shù)據(jù)可以相互交換,使數(shù)據(jù)得到充分的再利用;利用dde和ole,使得信息交換自動完成;在一個程序中對數(shù)據(jù)的修改立即在另一個程序中反映出來,實現(xiàn)了操作環(huán)境的集成和自動化。在dos環(huán)境下,由于dos沒有為應(yīng)用程序的用戶界面提供標準的編程接口,不同的應(yīng)用程序具有不同的用戶操作方式,用戶每拿到一個新程序,都得從頭學(xué)起,慢慢才能熟悉它的“面孔”,對用戶很快掌握新程序非常不利。相比之下,在windows環(huán)境中的各種應(yīng)用程序均采用相同的操作方式。windows窗口包含的基本特性,如標題欄、菜單條、控制菜單等在應(yīng)用程序中都是一致的,使用戶比較容易適應(yīng)新的應(yīng)用程序。

3、體現(xiàn)了嶄新的程序設(shè)計概念和方法

在dos下編制應(yīng)用程序是面向過程的,大多數(shù)采用順序過程執(zhí)行方式,這樣的程序有一個明顯的開始,明顯的步驟及明顯的結(jié)束。因此程序能直接控制執(zhí)行過程的順序。在windows環(huán)境下的應(yīng)用程序是事件驅(qū)動的。事件驅(qū)動的程序不由事先編好的順序來控制,而是由事件的發(fā)生來控制的。例如,用戶按下一個按鍵或選擇一個按鈕,都可以作為一個事件引發(fā)特定的處理過程來響應(yīng)用戶要求。這種處理問題的方法與現(xiàn)實世界中的處理問題的方法更趨一致。

4、支持多媒體信息處理

多媒體應(yīng)用對計算機軟、硬件提出了更高的要求,為了使個人計算機(pc機)能夠進行多媒體信息處理,多媒體計算機軟件開發(fā)環(huán)境已成為計算機軟件公司熱衷的目標。從另一個方面說,要考慮pc機現(xiàn)有的操作系統(tǒng)能夠支持(或增加、修改、擴充之后便支持)多媒體信息處理。windows在這方面應(yīng)該說是捷足先登,它對多媒體提供了多方面的支持。可以說windows(3.1以上)是支持多媒體的操作系統(tǒng)。它不僅為開發(fā)多媒體應(yīng)用程序提供了高層和低層的函數(shù)支持,而且本身還配帶了多個多媒體實用程序,如soundrecorder(錄音機)、mediaplayer(媒體播放機)等等。

windows的accessories窗口中用戶就可以看到soundrecorder和mediaplayer圖標,當然,要想處理多媒體信息,要先為pc機配上相應(yīng)的硬件設(shè)備,如聲卡、視頻卡等等。

目前,windows主要有windows98和windows2000、windowsxp等。1.2TurboC2.0簡介1.2.1什么是TurboC2.0

TurboC2.0是Borland公司在1988年推出得一個集程序編輯、編譯、連接和運行為一體的C語言程序開發(fā)環(huán)境,具有速度快、效率高、功能強、使用簡單方便等優(yōu)點。TurboC2.0不僅是DOS時代優(yōu)秀的免費C語言編程工具,而且還是廣大編程學(xué)習者的入門語言。TurboC2.0更徹底地進行了漢化,包括出錯信息,卻又不牽強翻譯,保留了最貼切的信息,并且為其完善了Windows以及中文DOS下的運行環(huán)境,使用者并不需要熟悉DOS知識,只需要在安裝時將TurboCv2.0指定安裝在任意文件夾,再不需要手動更改任何選項,就能夠正常編譯程序。

1.2.2TurboC2.0界面簡述1、啟動TurboC2.0

首先按裝好TurboC2.0系統(tǒng),然后在c:\tuboc(或其他按裝目錄)下找到tc.exe文件,雙擊即可。啟動TurboC后,出現(xiàn)TC主窗口。主菜單條橫向排列在屏幕頂端,并被激活,其中File主項成為當前項。主菜單的下面,是Edit(編輯)窗口和Message(消息)窗口。兩個窗口中,頂端橫線為雙線顯示的,表示該窗口是活動窗口。屏幕底端是7個功能鍵的說明,以及NumLock鍵的狀態(tài)(顯示“NUM”時,表示處于“數(shù)字鍵”狀態(tài);空白,表示“控制鍵”狀態(tài))。編輯窗口的頂端為狀態(tài)行,其中:

Line1Col1:顯示光標所在的行號和列號

Insert:表示編輯狀態(tài)處于“插入”。當處于“改寫”狀態(tài)時,此處為空白。

c:NONAME.C:顯示當前正在編輯的文件名。顯示為“NONAME.C”時,表示用戶尚未給文件命名。2、命令菜單的使用

按下功能鍵F10,激活主菜單。用左、右方向鍵移動光帶,定位于需要的主菜單上,然后再按回車鍵,打開其子菜單(縱向排列)。用上、下方向鍵移動光帶,定位于需要的子菜單上,回車即可。執(zhí)行完選定的菜單命令后,系統(tǒng)自動關(guān)閉菜單。

注意:菜單激活后,又不使用,可再按F10或Esc鍵關(guān)閉,返回原來狀態(tài)。

3、退出TurboC

菜單法:選擇File?選擇Quit

快捷鍵法:Alt+X1.2.3TurboC2.0編譯執(zhí)行過程1、編輯并保存C語言源程序

(1)激活主菜單,選擇并執(zhí)行File?Load項(或快捷鍵:F3)

(2)在“LoadFileName”窗口,輸入源程序文件名。

文件名的輸入有兩種方法:直接輸入和選擇輸入。

◆直接輸入文件名

◆選擇文件(僅適用于已經(jīng)存在的源程序文件)

如果是已經(jīng)存在的文件,系統(tǒng)就在編輯窗口顯示該文件的內(nèi)容,可供編輯、修改。如果是新文件,則給出一個空白編輯窗口,可供輸入新的源程序。2、編譯、連接──單個源程序文件

選擇并執(zhí)行Compile?MakeEXEFile項(快捷鍵:F9),則TC將自動完成對當前正在編輯的源程序文件的編譯、連接,并生成可執(zhí)行文件。

如果源程序有語法錯誤,系統(tǒng)將在屏幕中央的“Compiling”(編譯)窗口底端提示:

Error:Pressanykey”(錯誤:按任意鍵)。

此時,按空格鍵,屏幕下端的“Message”(消息)窗口被激活,顯示出錯(或警告)信息,光帶停在第一條消息上。這時“Edit”(編輯)窗口中也有一條光帶,它總是停在編譯錯誤在源代碼中的相應(yīng)位置。3、運行與查看結(jié)果

運行當前正在編輯的源程序文件:選擇并執(zhí)行Run?Run項(快捷鍵:^F9),程序運行結(jié)束后,仍返回到編輯窗口。

當你認為自己的源程序不會有編譯、連接錯誤時,也可直接運行(即跳過對源程序的編譯、連接步驟)。這時,TC將一次完成從編譯、連接到運行的全過程。

查看運行結(jié)果:選擇并執(zhí)行Run?UserScreen項(快捷鍵:Alt+F5)。查看完畢后,按任一鍵返回編輯窗口。

如果發(fā)現(xiàn)有邏輯錯誤,則返回編輯窗口后,進行修改;然后再重新編譯、連接、運行,直至正確為止。4、編輯下一個新的源程序

選擇并執(zhí)行File?New項即可。如果屏幕提示如下確認信息:

NONAME.Cnotsaved.Save?(Y/N)

如果需要保存當前正在編輯的源程序,則鍵入“Y”,這時系統(tǒng)提示換名:

<d:><path>\NONAME.C

直接輸入你給源程序文件起的名字即可。否則,鍵入“N”(不保存),系統(tǒng)給出一個空白的編輯窗口,可以開始編輯下一個新的源程序。1.3開發(fā)語言簡介1.3.1什么是C語言C語言是CombinedLanguage(組合語言)的中英混合簡稱。是一種計算機程序設(shè)計語言。它既具有高級語言的特點,又具有匯編語言的特點。它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,具體應(yīng)用比如單片機以及嵌入式系統(tǒng)開發(fā)。1.3.2C語言的特點1.C是中級語言。它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。C語言可以像匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元。

2.C是結(jié)構(gòu)式語言。結(jié)構(gòu)式語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。

3.C語言功能齊全。具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。另外C語言也具有強大的圖形功能,支持多種顯示器和驅(qū)動器。而且計算功能、邏輯判斷功能也比較強大,可以實現(xiàn)決策目的的游戲。

4.C語言適用范圍大。適合于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機型。

C語言對編寫需要硬件進行操作的場合,明顯優(yōu)于其它解釋型高級語言,有一些大型應(yīng)用軟件也是用C語言編寫的。

C語言具有繪圖能力強,可移植性,并具備很強的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動畫。它是數(shù)值計算的高級語言。1.3.3C語言的原型ALGOL60語言。(也稱為A語言)

1963年,劍橋大學(xué)將ALGOL60語言發(fā)展成為CPL(CombinedProgrammingLanguage)語言。

1967年,劍橋大學(xué)的MartinRichards對CPL語言進行了簡化,于是產(chǎn)生了BCPL語言。

1970年,美國貝爾實驗室的KenThompson將BCPL進行了修改,并為它起了一個有趣的名字“B語言”。意思是將CPL語言煮干,提煉出它的精華。并且他用B語言寫了第一個UNIX操作系統(tǒng)。

而在1972年,B語言也給人“煮”了一下,美國貝爾實驗室的D.M.Ritchie在B語言的基礎(chǔ)上最終設(shè)計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。

為了使UNIX操作系統(tǒng)推廣,1977年DennisM.Ritchie發(fā)表了不依賴于具體機器系統(tǒng)的C語言編譯文本《可移植的C語言編譯程序》。

1978年由美國電話電報公司(AT&T)貝爾實驗室正式發(fā)表了C語言。同時由B.W.Kernighan和D.M.Ritchie合著了著名的《TheCProgrammingLanguage》一書。通常簡稱為《K&R》,也有人稱之為《K&R》標準。但是,在《K&R》中并沒有定義一個完整的標準C語言,后來由美國國家標準化協(xié)會(AmericanNationalStandardsInstitute)在此基礎(chǔ)上制定了一個C語言標準,于一九八三年發(fā)表。通常稱之為ANSIC。

1987年,隨著微型計算機的日益普及,出現(xiàn)了許多C語言版本。由于沒有統(tǒng)一的標準,使得這些C語言之間出現(xiàn)了一些不一致的地方。為了改變這種情況,美國國家標準化協(xié)會(ANSI)為C語言制定了一套ANSI標準——87ANSIC,成為現(xiàn)行的C語言標準。

1990年,國際標準化組織ISO(InternationalStandardOrganization)接受了87ANSIC為ISOC的標準(ISO9899-1990)。1994年,ISO修訂了C語言的標準。

目前流行的C語言編譯系統(tǒng)大多是以ANSIC為基礎(chǔ)進行開發(fā)的,但不同版本的C編譯系統(tǒng)所實現(xiàn)的語言功能和語法規(guī)則有略有差別。1.3.4C語言的優(yōu)點是:1.簡潔緊湊、靈活方便

C語言一共只有32個關(guān)鍵字9種控制語句,程序書寫形式自由,主要用小寫字母表示。它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。C語言可以像匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元。

2.運算符豐富

C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括號、賦值、強制類型轉(zhuǎn)換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現(xiàn)在其它高級語言中難以實現(xiàn)的運算。

3.數(shù)據(jù)結(jié)構(gòu)豐富

C語言的數(shù)據(jù)類型有:整性、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運算。并引入了指針概念,使程序效率更高。另外C語言具有強大的圖形功能,支持多種顯示器和驅(qū)動器。且計算功能、邏輯判斷功能強大。

4.C是結(jié)構(gòu)式語言

結(jié)構(gòu)式語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。

5.C語法限制不太嚴格,程序設(shè)計自由度大

雖然C語言也是強類型語言,但它的語法比較靈活,允許程序編寫者有較大的自由度。

6.C語言允許直接訪問物理地址,可以直接對硬件進行操作

因此既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫系統(tǒng)軟件。

7.生成目標代碼質(zhì)量高,程序執(zhí)行效率高

一般只比匯編程序生成的目標代碼效率低10へ20%。

8.C語言適用范圍大,可移植性好

C語言有一個突出的優(yōu)點就是適合于多種操作系統(tǒng),如DOS、UNIX;也適用于多種機型。C語言具有強大的繪圖能力,可移植性好,并具備很強的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動畫,它也是數(shù)值計算的高級語言。C語言的缺點是:1.C語言的缺點主要表現(xiàn)在數(shù)據(jù)的封裝性上,這一點使得C在數(shù)據(jù)的安全性上有很大缺陷,這也是C和C++的一大區(qū)別。

2.C語言的語法限制不太嚴格,對變量的類型約束不嚴格,影響程序的安全性,對數(shù)組下標越界不作檢查等。從應(yīng)用的角度,C語言比其他高級語言較難掌握。2C語言迷宮系統(tǒng)要求和分析2.1系統(tǒng)要求1.隨機產(chǎn)生一個固定大小的迷宮圖(迷宮有唯一的一個入口,一個出口);2.用圖形的方式畫出迷宮圖;3.根據(jù)該迷宮圖作出判斷,迷宮又從入口到出口的路線;4.如果有路線的話,找到其中的一條路線,并畫出來;5.用窮舉的方法找出所有的路線,找到其中步數(shù)最少的路線。2.2系統(tǒng)要求分析1.迷宮要隨機生成,需要使用隨機函數(shù),不需要迷宮一定有解。2.要求3-5可以合并為一個要求,即:判斷迷宮是否有路線,如果有的話要找到步數(shù)最少的路線并畫出來。3.要求2主要體現(xiàn)在程序最后運行形式上,只要最后程序使用圖形輸出即可。4.綜上,程序要求隨機生成一個迷宮,判斷是否有最短路徑,最后將迷宮圖形化輸出。3C語言迷宮的功能模塊結(jié)構(gòu)與主要模塊算法說明3.1迷宮的功能模塊結(jié)構(gòu)3.1.1功能模塊劃分主要分為圖形驅(qū)動,歡迎畫面,初始化迷宮數(shù)組,尋找路徑,輸出迷宮圖形,結(jié)束畫面,圖形結(jié)束七個模塊。這些函數(shù)模塊各成體系,互不干擾,是系統(tǒng)的主要功能模塊。3.2.2各個模塊的功能1.圖形驅(qū)動函數(shù)Init:負責圖形界面驅(qū)動的初始化。2.開始畫面函數(shù)Welcome:負責生成開始畫面。3.初始化迷宮數(shù)組函數(shù)MazeCreat:負責隨機生成一個只有一個出口和一個入口的迷宮。4.路徑尋找函數(shù)Path:負責尋找已經(jīng)生成的迷宮的路徑,調(diào)用函數(shù)TreeCreat生成第一個節(jié)點,循環(huán)調(diào)用函數(shù)TreeGrow生成整個樹。其中需要調(diào)用:1)創(chuàng)建路徑搜索樹的根節(jié)點函數(shù)TreeCreat:負責生成搜索樹的第一個節(jié)點。2)路徑搜索樹的生長函數(shù)TreeGrow:負責判斷傳遞給這個函數(shù)的節(jié)點在四個方向是否可以生成節(jié)點,如果可以就調(diào)用函數(shù)TreeNewPoint生成新節(jié)點,并調(diào)用函數(shù)LeafGrow將新節(jié)點增加到待搜索節(jié)點中。3)在路徑搜索樹中生成新的節(jié)點函數(shù)TreeNewPoint:負責在函數(shù)TreeGrow所傳遞來的方向上生成新節(jié)點。4)搜索樹葉子鏈表的創(chuàng)建與增加函數(shù)LeafGrow:負責將新節(jié)點增加到待搜索節(jié)點鏈中。5.輸出迷宮圖形函數(shù)Draw:負責將迷宮用圖形化界面輸出。6.結(jié)束畫面函數(shù)GameOver:負責生成結(jié)束畫面。7.圖形結(jié)束函數(shù)Close:負責程序結(jié)束后關(guān)閉圖形界面驅(qū)動。3.2主要模塊的算法說明3.2.1程序總體思路1.用一個N×N二維數(shù)組代表迷宮,所有有關(guān)迷宮的操作都在這個二維數(shù)組上進行0。在這個數(shù)組中,1代表有墻,0代表可以走的路,9代表入口,2代表樹已經(jīng)延伸到的路,5代表最短路徑。2.首先調(diào)用迷宮生成函數(shù)MazeCreat,生成一個隨機的迷宮并記錄在二維數(shù)組上。3.然后調(diào)用Path函數(shù)查找迷宮路徑。4.最后將迷宮用圖形輸出。3.2.2初始化迷宮數(shù)組函數(shù)MazeCreat1.生成迷宮邊框,隨機選擇出入口是在迷宮的上下兩邊還是左右兩邊,選擇后隨即把出入口分到迷宮相對的兩條邊上,包括出入口位置都隨機生成,inRow,inLine,outRow,outLine這四個變量記錄出入口的坐標。2.隨機生成迷宮內(nèi)部,具體做法是對迷宮內(nèi)部每一個點進行隨機數(shù)判斷,當滿足條件時把這個點標志為圍墻,否則把這個點標記為通路。3.2.3尋找路徑函數(shù)Path1.使用兩個結(jié)構(gòu)體(tree和leaf)來保存這個算法所需要的參數(shù)。2.由于入口的特殊性,首先調(diào)用TreeCreat()函數(shù)生成路徑搜索樹的第一個節(jié)點,即把根,并把這個結(jié)構(gòu)體的指針返回。3.樹根作為第一個節(jié)點進入TreeGrow函數(shù),TreeGrow函數(shù)判斷出第一次生長的方向(有且只有一個方向)并調(diào)用函數(shù)TreeNewPoint在這個方向上生成新節(jié)點,并調(diào)用函數(shù)LeafGrow將這個新節(jié)點增加到待搜索節(jié)點鏈表中。4.用指針leafHeadOld指向當前需要判斷的節(jié)點鏈表,用指針以leafHeadNow指向下一輪判斷中需要判斷的節(jié)點鏈表。通過判斷待搜索節(jié)點鏈表是否為空來控制循環(huán),當鏈表為空時說明路徑搜索樹在上一輪生長過程中沒有生長,即已經(jīng)搜索完迷宮內(nèi)所有可以到達的節(jié)點。5.函數(shù)TreeNewPoint會在每一次調(diào)用時判斷新節(jié)點是否是出口,如果是將記錄出口的結(jié)構(gòu)體的指針賦值給outPoint。在整個路徑搜索樹生成后,如果outPoint不為初始值NULL說明有路,從出口倒推到入口并將經(jīng)過的每個迷宮點的值標記為5。6.因為路徑搜索樹每次增長都要在所有分支上增長一個節(jié)點,故從樹根到各個末端所走的路程是相同的,而且只有一個分支可以走到出口,而這條就是最短路徑。7.TreeCreat的功能是:開辟一個連續(xù)的內(nèi)存空間給結(jié)構(gòu)體tree,然后根據(jù)入口坐標判斷出唯一的前進方向并在結(jié)構(gòu)體中標志其方向信息為0,不能前進的方向標志為3,最后將這個內(nèi)存空間的指針返回。

TreeGrow的功能是:依次判斷傳遞給這個函數(shù)的節(jié)點的四個方向,如果這個方向可以通行就調(diào)用函數(shù)TreeNewPoint生成新節(jié)點,并把指向新節(jié)點的指針傳遞給函數(shù)LeafGrow。

TreeNewPoint的功能是:根據(jù)函數(shù)TreeGrow傳遞來的方向生成新節(jié)點,并TreeGrow傳遞來父節(jié)點指針賦值給新節(jié)點的father。

LeafGrow的功能是:將函數(shù)TreeNewPoint傳遞來的新節(jié)點的指針加入到鏈表中,如果鏈表為空則創(chuàng)建鏈表。3.2.4路徑樹的節(jié)點結(jié)構(gòu)體structtree

{introw;/*用于記錄該節(jié)點的行坐標*/

intline;/*用于記錄該節(jié)點的列坐標*/

intinfoUp;/*用于記錄各個方向的屬性*/

intinfoDown;/*初始值為0,父節(jié)點方向為1*/

intinfoLeft;/*有下一個節(jié)點為2*/

intinfoRight;/*沒有下一個節(jié)點為3*/

structtree*father;/*用于指向其父節(jié)點,初始值為NULL*/

};各個結(jié)構(gòu)體成員的用途:1)每個點的坐標(introw,intline;用來表示這個點的坐標);2)各個方向的屬性(intinfoUP,intinfoDown,intinfoLeft,intinfoRigh;用來記錄該節(jié)點在四個方向的情況,初始值為0,父節(jié)點方向為1,有下一個節(jié)點為2,沒有下一個節(jié)點為3);3)指向父節(jié)點的指針(structtree*father;用來指向父節(jié)點,以便在完成整個迷宮路徑搜索后倒推出最短路徑)。最后這個結(jié)構(gòu)體各節(jié)點構(gòu)成的是一個樹,這個樹除了根節(jié)點外每個節(jié)點都有一個指向其父節(jié)點的指針。而這棵樹的所有節(jié)點將遍布從出口開始迷宮內(nèi)可以到達每一個節(jié)點,最后通過出口處的節(jié)點向上遍歷到根節(jié)點完成最短路徑的標記。待搜索節(jié)點結(jié)構(gòu)體structleaf

{structtree*point;/*指向新的樹節(jié)點的指針*/

structleaf*next;/*指向鏈表下一個節(jié)點的指針*/

};/*待搜索節(jié)點的鏈表*/結(jié)構(gòu)體成員的用途:1)處于同一路徑長度的路徑樹一個節(jié)點的指針(structtree*point);2)鏈表下一個節(jié)點的指針(structleaf*next);最后這個結(jié)構(gòu)體的各個節(jié)點將構(gòu)成一個鏈表,路徑長度每增長一次將創(chuàng)建一個新的鏈表以存儲處于同一路徑長度的路徑樹的節(jié)點的指針。而路徑數(shù)的增長將挨個判斷(調(diào)用TreeGrow函數(shù))上一次存儲的處于同一路徑長度的路徑樹節(jié)點。總結(jié)根據(jù)以上論文的闡述,通過在Window應(yīng)用平臺上運用TurboC2.0工具編譯和調(diào)試,最終實現(xiàn)了迷宮游戲的簡單設(shè)計,基本完成了程序設(shè)計課題的要求,實現(xiàn)了嘗試設(shè)計的基本理念,真正開發(fā)了自己對問題的考慮研究方式,為以后的工作生活奠定了基礎(chǔ)。對于本論文,我領(lǐng)悟到,從事編程開發(fā)工作,這次設(shè)計大大提高了我們綜合運用所學(xué)理論知識解決實際問題和不斷創(chuàng)新的能力。我從事設(shè)計的點滴過程讓我深刻的領(lǐng)悟到在工作中的研究考慮問題的思想及弊端,為以后更好地工作奠定了扎實的基礎(chǔ)。在短暫的論文設(shè)計過程中也認識到了團隊協(xié)作的重要性,了解到了在完善的系統(tǒng)中各司其職的觀念的重要性。同時,由于這段時期的培訓(xùn)學(xué)習,增強了我對C語言的進一步的認識和了解,對于C語言實現(xiàn)的迷宮游戲也讓我認識到要想學(xué)好它更重在實踐,要通過不斷的上機操作才能更好地學(xué)習它,通過實踐,我也發(fā)現(xiàn)我的好多不足之處,通過學(xué)習也有所改進;再有使用C語言應(yīng)用于底層的開發(fā)中一些標準庫函數(shù)的了解是必不可少的,認識到了自己對函數(shù)調(diào)用的正確使用不夠熟練,在設(shè)計實現(xiàn)的過程中也出現(xiàn)了一系列的問題跟錯誤,此論文的完成對自我的開發(fā)設(shè)計各方面要求得到了很好的提高,使自己真正初步掌握了對一個小項目的開發(fā)實現(xiàn)技能。c

嘗試實現(xiàn)的過程,我了解到信息化時代真正開發(fā)中對編程語言的熟練運用是必不可少的,同時需要了解硬件設(shè)備跟軟件連接的兼容性,真正掌握軟硬兼?zhèn)鋪磉_到開發(fā)創(chuàng)新的最終目的。簡單迷宮游戲的設(shè)計只是一個小的折射,但其中的開發(fā)思想密切聯(lián)系著個大項目的開發(fā),只有具備真正的開發(fā)思想才能完成一個課題項目的實現(xiàn),最終推動信息化社會的前進。e參考文獻[1]王明福.C語言程序設(shè)計教程[M].北京:高等教育出版社,2004.[2]譚浩強.C語言設(shè)計[M].北京:清華大學(xué)出版社,1999.[3]徐建民等.C語言程序設(shè)計[M].北京:電子工業(yè)出版社,2002.[4]李大友.C語言程序設(shè)計[M].北京:清華大學(xué)出版社,1999.[5]王士元.C高級實用程序設(shè)計[M].北京:清華大學(xué)出版社,1996.[6]余蘇寧.C++程序設(shè)計[M].北京:清華大學(xué)出版社,2004.[7]KernighanB.W.,RitchieD.M.著.徐保文等譯.C程序設(shè)計語言[M].北京:機械工業(yè)出版社.附錄A:C語言迷宮的使用說明開始時,按數(shù)字1鍵進入人工控制模式;按w,s,graphicsnotinitialized(use'initgraph')a,d分別代表上,下,左,右方向。開始時,按除數(shù)字1以外的任意鍵進入自動模式;小人由電腦控制。按Q鍵結(jié)束程序。附錄B:主要代碼#include<stdlib.h>#include<time.h>#include<math.h>#include<stdio.h>#include<graphics.h>#defineN22#defineM22intbg[M][N];voidmakebg(int,int);voiddrawbg(int[][],int,int,int,int,int);voiddrawman(int,int,int);voidrect(int,int,int,int);voidmain(){/*main()開始*/intstep=20;intlen=10;intsize=20;intx=0,y=0;inti=0,j=0;intgdriver=DETECT,gmode;charch;intdirec;makebg(M,N);/*registerbgidriver(EGAVGA_driver);*//*initgraph(&gdriver,&gmode,"c:\\turboc2");*/initgraph(&gdriver,&gmode,"c:\\ TC20H\\bgi");cleardevice();setwritemode(XOR_PUT);settextstyle(1,0,3);setcolor(GREEN);outtextxy(100,180,"Press<Q>toquit");setcolor(BLUE);setfillstyle(LINE_FILL,BLUE);drawbg(bg,M,N,size,0,0);setcolor(WHITE);x+=len;y+=len;drawman(x,y,len);setcolor(GREEN);outtextxy(60,120,"PRESSKEY<1>:YOU,");outtextxy(70,150,"OTHERKEY:AUTOMATIC");setcolor(WHITE);if((ch=getch())=='1'){/*人工控制*/while((ch=getch())!='q'){drawman(x,y,len);switch(ch){case'a':if(j>0&&bg[i][j-1]==0){if(x>step){x-=step;j--;};}break;case's':if(i<M-1&&bg[i+1][j]==0){if(y<479-step){y+=step;i++;};}break;case'd':if(j<N-1&&bg[i][j+1]==0){if(x<639-step){x+=step;j++;}}break;case'w':if(i>0&&bg[i-1][j]==0){if(y>step){y-=step;i--;}}break;default:break;}drawman(x,y,len);delay(800);if(i>=M-1&&j>=N-1){settextstyle(4,0,3);setcolor(RED);outtextxy(150,260,"YOUWIN!");}setcolor(WHITE);}closegraph();}/*人工控制結(jié)束*/else{/*電腦控制*//*direc表示上一步運動方向*//*并表示下一步運動方向*//*0~3分別表示西、北、東、南*/direc=2;i=j=0;while(i<M-1||j<N-1){delay(80000);drawman(x,y,len);switch(direc){case0:/*以3,0,1的次序嘗試*/if(i<M-1&&bg[i+1][j]==0){y+=step;i++;direc=3;}elseif(j>0&&bg[i][j-1]==0){x-=step;j--;direc=0;}elseif(i>0&&bg[i-1][j]==0){y-=step;i--;direc=1;}else{x+=step;j++;direc=2;}break;case1:if(j>0&&bg[i][j-1]==0){x-=step;j--;direc=0;}elseif(i>0&&bg[i-1][j]==0){y-=step;i--;direc=1;}elseif(j<N-1&&bg[i][j+1]==0){x+=step;j++;direc=2;}else{y+=step;i++;direc=3;}break;case2:if(i>0&&bg[i-1][j]==0){y-=step;i--;direc=1;}elseif(j<N-1&&bg[i][j+1]==0){x+=step;j++;direc=2;}elseif(i<M-1&&bg[i+1][j]==0){y+=step;i++;direc=3;}else{x-=step;j--;direc=0;}break;case3:if(j<N-1&&bg[i][j+1]==0){x+=step;j++;direc=2;}elseif(i<M-1&&bg[i+1][j]==0){y+=step;i++;d

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論