亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        WINDOWS 編程案例分析*

        2010-08-15 00:47:13沈宮新
        關鍵詞:案例游戲語言

        沈宮新

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

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

        1 改編的前提條件

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

        貪吃蛇小游戲包括注釋不到200 行,是一個經(jīng)典的游戲案例,能夠較好說明結構化編程的思想。主函數(shù)包括四塊,第一塊是初始化圖形系統(tǒng),在TURBO C 中包括圖形庫的引用,對應顯卡驅動的適配,進入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 消息驅動的編程方式

        在C 語言結構化編程中,代碼是順序執(zhí)行的,有固定的次序。在WINDOWS 消息驅動的工作方式下,我們?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)自動,在鍵盤的按下或彈起事件中接受鍵盤消息改變蛇頭移動方向。

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

        3 結 語

        案例教學已經(jīng)是計算機教學的趨勢,在C++教學的結束之時,通過一個小游戲的改編,一方面可以提高同學們編程的興趣,另一方面可以進一步強化面向對象概念和思想。雖然本案例使用的是VC++的開發(fā)環(huán)境,但是在轉化過程中并不涉及MFC 框架的使用,可以作為面向對象的WINDOWS 開發(fā)的入門案例。

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

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

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

        猜你喜歡
        案例游戲語言
        案例4 奔跑吧,少年!
        少先隊活動(2021年2期)2021-03-29 05:40:48
        語言是刀
        文苑(2020年4期)2020-05-30 12:35:30
        隨機變量分布及統(tǒng)計案例拔高卷
        讓語言描寫搖曳多姿
        發(fā)生在你我身邊的那些治超案例
        中國公路(2017年7期)2017-07-24 13:56:38
        累積動態(tài)分析下的同聲傳譯語言壓縮
        數(shù)獨游戲
        瘋狂的游戲
        飛碟探索(2016年11期)2016-11-14 19:34:47
        爆笑游戲
        一個模擬案例引發(fā)的多重思考
        加勒比精品久久一区二区三区| 人妻在卧室被老板疯狂进入| 亚洲成在人网站av天堂| y111111少妇影院无码| 日本韩国三级aⅴ在线观看 | 亚洲高清一区二区三区在线观看| 久久精品国产在热亚洲不卡| 亚洲午夜精品一区二区| 国产精成人品| 久久97久久97精品免视看| 成人精品综合免费视频| 久久久精品456亚洲影院| av高清视频在线麻豆免费观看| 亚洲第一女人av| 午夜成人无码福利免费视频| 国产高清精品自在线看| 中文字幕一区二区在线看| 国产香蕉视频在线播放| 国内精品久久久久影院一蜜桃 | 日本巨大的奶头在线观看 | 最近中文字幕在线mv视频在线| 国产精品亚洲国产| 青青草免费在线视频久草| 久久久久亚洲av成人网人人软件| 欧美日韩亚洲国内综合网 | 国产一区二区在线观看av| 欧美激情视频一区二区三区免费| 欧洲freexxxx性少妇播放| 麻豆变态另类视频在线观看| 日韩激情av不卡在线| 极品少妇xxxx精品少妇偷拍| 久久午夜伦鲁片免费无码| 久久久99精品视频| 亚洲乱码中文字幕一线区| 正在播放国产多p交换视频| 爽妇网国产精品| 手机在线观看亚洲av| 欧美又大粗又爽又黄大片视频| 特级婬片国产高清视频| 精品久久亚洲一级α| 69精品国产乱码久久久|