• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      WINDOWS 編程案例分析*

      2010-08-15 00:47:13沈?qū)m新
      關鍵詞:面向?qū)ο?/a>小游戲消息

      沈?qū)m新

      (南京化工職業(yè)技術學院,江蘇南京 210048)

      C 語言與C++語言是不少高校廣泛開設的課程,從C 語言到C++語言的學習轉(zhuǎn)化是一個艱難的過程,因為在這其中要實現(xiàn)結構化程序設計向面向?qū)ο蟪绦蛟O計的轉(zhuǎn)化,同時,操作系統(tǒng)的環(huán)境也有很大的不同,增大了教學的難度。為了說明結構化程序設計與面向?qū)ο蟪绦蛟O計的不同之處,同時簡單了解WINDOWS 的基于消息的編程思維,我們將DOS 下用C 語言編寫的貪吃蛇小游戲改編為C++編寫,用面向?qū)ο蟮乃枷雭斫M織,用類來封裝,在 WINDOWS 下以窗口形式運行WIN32 的應用程序。

      1 改編的前提條件

      1.1 通讀DOS 下的貪吃蛇源代碼

      貪吃蛇小游戲包括注釋不到200 行,是一個經(jīng)典的游戲案例,能夠較好說明結構化編程的思想。主函數(shù)包括四塊,第一塊是初始化圖形系統(tǒng),在TURBO C 中包括圖形庫的引用,對應顯卡驅(qū)動的適配,進入TURBO C 的圖形開發(fā)方式。第二塊是初始化游戲界面,設定游戲的范圍在圍墻中,并顯示圍墻。第四塊是退出圖形模式,響應用戶任意鍵退出游戲。游戲的主要部分在第三個模塊中實現(xiàn),包括隨即產(chǎn)生和顯示食物,蛇的產(chǎn)生、顯示和移動。蛇的三種情況的判斷,包括蛇吃食物,蛇會增長,蛇碰墻或蛇首尾相碰,蛇死退出游戲。整個小游戲的流程并不復雜,但對初學者還是有一定難度。

      1.2 熟悉WINDOWS 下的圖形工作方式

      由于前面的小游戲是在DOS 下通過調(diào)用TURBO C 的圖形庫(GRAPHICS.LIB)來實現(xiàn)圖形工作方式的,而我們學習C++一般采用的是VC++6.0 的開發(fā)環(huán)境,該環(huán)境不支持圖形庫(GRAPHICS.LIB)。這使得很多DOS 下的C 語言游戲代碼在VC++6.0 中不能通過編譯,我們只能使用WINDOWS API 函數(shù)來完成圖形的繪制,要求在預編譯時包含“WINDOWS.H”,這樣就可以調(diào)用大部分的API 函數(shù),同時要熟悉WINDOWS 圖形編程中用到的設備上下文DC(DEVICE CONTEXT),包括創(chuàng)建 DC,創(chuàng)建畫刷,創(chuàng)建畫筆。

      1.3 熟悉WINDOWS 消息驅(qū)動的編程方式

      在C 語言結構化編程中,代碼是順序執(zhí)行的,有固定的次序。在WINDOWS 消息驅(qū)動的工作方式下,我們?yōu)椴煌南蕚淞瞬煌奶幚砟K,在程序運行時,程序一旦初始化結束就進入等待消息狀態(tài),依照不同的消息來觸發(fā)不同處理順序,沒有固定的執(zhí)行次序。程序通過接受特定消息來結束程序的運行。

      2 改編要點

      (1)VC 工程的建立。在 VC++6.0 建立WIN32APPLICATION 工程,選擇建立典型的“HELLO WORLD”應用,可以讓VC 的開發(fā)環(huán)境為我們自動生成框架代碼。包括WINDOWS 系統(tǒng)下的主函數(shù)和回調(diào)函數(shù),要做的就是添加和改寫代碼,來實現(xiàn)自己的功能。進入主函數(shù)后,在創(chuàng)建窗口類時改寫窗口的外觀、背景和光標等樣式。然后,注冊剛剛創(chuàng)建的窗口類,顯示窗口,進入WINDOWS 消息循環(huán)。

      (2)對象化的改造。在DOS 下蛇和食物都是結構體,在 WINDOWS 下改造成類和對象來實現(xiàn)。食物的改造比較簡單,原來食物的結構體包括食物出現(xiàn)的橫、縱坐標和食物顯示、隱藏的一個BOOL 值,現(xiàn)在的食物類中不僅要包括上述變量,還要包括對食物的操作,主要有食物的顯示方法和隱藏方法,通過傳遞當前的DC 句柄結合食物的位置來顯示和隱藏。食物顯示位置通過隨機函數(shù)在圍墻內(nèi)生成,食物隱藏發(fā)生在蛇吃掉食物后,在蛇的運動過程中存在判斷是否吃到食物的情況和是否要重新生成食物,而類的封裝特性不允許直接訪問類的成員變量,即成員變量一般設置為私有屬性,因此在食物類中有對應的方法來訪問和設置到上述屬性。而蛇的改造要稍顯復雜,原來蛇的結構體包括兩個整形的數(shù)組,分別存儲蛇每節(jié)的橫、縱坐標。另外三個整型的變量分別存貯蛇的節(jié)數(shù),蛇的移動方向和蛇的生命狀態(tài)。在構造蛇類中可以把上述結構體內(nèi)的成員改寫成類中的私有成員變量。在類的構造函數(shù)中設定蛇的初始位置、節(jié)數(shù)、移動方向。蛇的運動中要判斷是否吃到食物,需要有方法得到蛇頭的坐標和改變蛇的節(jié)數(shù)的方法。蛇也要有顯示自身的方法和通過隱藏來顯示蛇運動效果的方法。蛇碰墻或蛇頭碰蛇尾蛇會死,蛇類中要有改變蛇生命狀態(tài)的方法。

      (3)定時器的使用。DOS 下的蛇的運動間隔通過調(diào)用“DELAY”函數(shù)來實現(xiàn),在 WIN32APPLICATION中通過設定定時器和響應定時事件來實現(xiàn)。首先在 WM_PAINT 消息來時實現(xiàn)游戲界面初始化,初始化結束設定定時器,在定時器事件觸發(fā)時,來實現(xiàn)蛇的移動的吃食等情況的判斷處理。

      (4)蛇的運動控制。蛇的運動分為自動和手動,DOS 下的蛇的自動根據(jù)實時的方向來移動,手動通過調(diào)用“BIOSKEY”函數(shù)接受鍵盤消息改變蛇頭移動方向。在WIN32APPLICATION定時事件響應中來實現(xiàn)自動,在鍵盤的按下或彈起事件中接受鍵盤消息改變蛇頭移動方向。

      上述要點還有待同學們在實際改造中認真領會,老師加以引導。在本案例的基礎上可以進一步擴充,讓同學們進一步認識到面向?qū)ο缶幊痰奶攸c和優(yōu)勢,比如食物可以設定不同顏色來設定蛇吃到食物加分分值。分別在DOS 下的結構化的C 代碼中改寫,和在 WINDOWS 下的面向?qū)ο蟮腃++中改寫,并加以比較。復雜一點的,可以對蛇的外觀和運動方式加以修改,再加以比較。

      3 結 語

      案例教學已經(jīng)是計算機教學的趨勢,在C++教學的結束之時,通過一個小游戲的改編,一方面可以提高同學們編程的興趣,另一方面可以進一步強化面向?qū)ο蟾拍詈退枷?。雖然本案例使用的是VC++的開發(fā)環(huán)境,但是在轉(zhuǎn)化過程中并不涉及MFC 框架的使用,可以作為面向?qū)ο蟮腤INDOWS 開發(fā)的入門案例。

      1 候俊杰.深入淺出 MFC [M].武漢:華中理工大學出版社2001 ,5

      2 楊正校.新概念車C 語言程序設計 [M].南京:河海大學出版社 2008 ,5

      3 熊歆斌.Visual C++程序設計培訓教程 [M].北京:清華大學出版社.2002 ,7

      猜你喜歡
      面向?qū)ο?/a>小游戲消息
      一張圖看5G消息
      專注力小游戲
      互動的小游戲
      大灰狼(2018年10期)2018-10-31 14:47:16
      互動小游戲
      大灰狼(2018年9期)2018-10-25 20:56:42
      面向?qū)ο蟮挠嬎銠C網(wǎng)絡設計軟件系統(tǒng)的開發(fā)
      電子測試(2018年15期)2018-09-26 06:01:34
      互動小游戲
      大灰狼(2018年2期)2018-06-05 16:53:50
      面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應用
      面向?qū)ο骔eb開發(fā)編程語言的的評估方法
      消息
      消息
      老河口市| 麻栗坡县| 武宁县| 宜君县| 米泉市| 涞源县| 会昌县| 玛曲县| 安国市| 琼结县| 寿宁县| 九江县| 昌宁县| 洞口县| 鹤山市| 和田县| 肥东县| 潼关县| 西城区| 尤溪县| 营山县| 堆龙德庆县| 丰原市| 玉环县| 罗定市| 南通市| 定西市| 读书| 城市| 古交市| 承德市| 太仆寺旗| 长春市| 镇赉县| 石楼县| 逊克县| 孝义市| 迁西县| 汉阴县| 红安县| 大洼县|