• 
    

    
    

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

      基于C語言的坦克大戰(zhàn)

      2017-05-08 00:21:22趙博呂倩倩
      山東工業(yè)技術 2017年8期
      關鍵詞:游戲

      趙博+呂倩倩

      摘 要:游戲是人類日常生活不可或缺的元素,游戲的方式隨著時代的變遷也在改變。在信息時代,以計算機為載體的游戲成為主流,特別是當今生活節(jié)奏加快的今天,生活和工作壓力常常使人焦慮不安,而游戲能使人精神放松,舒緩壓力。

      關鍵詞:C語言;游戲;坦克大戰(zhàn)

      DOI:10.16640/j.cnki.37-1222/t.2017.08.114

      1 技術簡介

      目前主流的語言是Java、C++等等,這兩門語言都是高級語言的一種。是可以撰寫跨平臺應用程序的面向對象的程序設計語言。Java語言具有很長豐富的語法特征,如模塊和類模塊,是一種解釋型語言,他不會生成機器碼,所以移植性特別好。但高級語言存在體積龐大的特點,不適合對空間嚴格要求的場合。

      C語言是一種歷史悠久的計算機語言,同時使用范圍廣,它的出現(xiàn)就是解決了匯編語言晦澀難記的弊端,它既具有高級語言的特征又具有基層語言的功能,同時跨平臺性也絲毫不比大型語言差。C語言的指針更可以靈活操作內(nèi)存空間,而高級語言則將其封裝起來,使用起來限制太多,同時這也是C語言的缺點所在

      2 需求分析

      需求分析即是根據(jù)用戶的要求來確定軟件的。分配軟件元素,是軟件定義時期的最后一個階段,它的基本任務是確定系統(tǒng)必須做什么,是對要做的系統(tǒng)確定一個完整的、具體的、清晰的、準確的要求。可以分為需求的提出,需求的描述,需求的評審等階段。需求分析也是設計數(shù)據(jù)結構的起點,需求分析的結果將直接影響到程序功能的設計。

      需求分析的任務是通過詳細調查現(xiàn)實世界要處理的對象(坦克、子彈、墻等),充分了解游戲的運行情況,開發(fā)游戲的各種需求,然后在此基礎上確定游戲的功能。調查的重點是“數(shù)據(jù)”和“處理”,通過調查、收集與分析,獲得開發(fā)游戲的如下要求:信息要求、處理要求、安全性與健壯性要求。

      (1)游戲整體分析.本游戲主要包括己方坦克和敵方坦克,還有我方基地,磚墻,鐵墻,綠草,開始畫面,游戲勝利畫面,游戲結束畫面。我方坦克和對方坦克可以向上、向下、向左、向右移動,游戲的玩家通過鍵盤來控制坦克的移動和發(fā)射子彈,對方坦克通過A*算法移動和發(fā)射子彈。我放坦克子彈能消滅敵方坦克。敵方坦克子彈擊中我方坦克時生命值會減少。當己方坦克血量為0或者基地被摧毀時游戲結束,出現(xiàn)游戲結束畫面。

      (2)游戲建模。游戲中敵我雙方坦克均可完成射擊、移動的功能,但己方坦克的運行是通過鍵盤響應事件控制,而敵方坦克是根據(jù)A*算法來移動的。同時,出現(xiàn)在屏幕上的敵方可能會有較多的數(shù)量,這需要為每個敵方開辟一個線程以便能讓其獨立運行。為了避免使用多線程技術,在這里引入虛擬線程,不使用多線程是為了兼容一些較落后的計算機CPU處理能力不足的問題。

      (3)游戲整體建模。游戲首先出現(xiàn)開始的界面,通過WS切換選項,Y鍵確定選擇坦克數(shù)量也在不斷增加,我方坦克在生命值用為0時游戲結束,但只有游戲進行到最后一關并將最后一關的坦克全數(shù)殲滅我方才算取得勝利。

      3 概要設計

      本游戲中設計的主要研究的內(nèi)容:敵我雙方的坦克、子彈以及地圖元素均以字符方式通過WINDOWS API函數(shù)打印在控制臺上,并且添加游戲包含河、墻等地圖元素。使用模擬多線程來控制坦克的移動。敵人中包含特殊坦克有不同的移動速度、攻擊力、生命值,我方坦克是有生命值限制的。

      (1)游戲框架設計。本游戲主要有三個模塊構成,分別是數(shù)據(jù)摸塊(Data),視圖控制模塊(Draw)以及邏輯控制模塊(Engine)。數(shù)據(jù)模塊主要用于保存坦克信息的結構體,子彈信息的結構體以及一些地圖信息以及一些常用的宏。DRAW模塊是將本游戲一切所有的元素顯示出來,因為本游戲主要是控制臺開發(fā)的,所以DRAW模塊主要用于將邏輯模塊所處理后的信息打印出來。各個模塊分工合作互不影響,通過模塊分布可以快速定位BUG的根源,十分利于調試。

      (2)數(shù)據(jù)結構設計。游戲中各個元素定義成結構體,并且在一定的條件下某些元素消失或者出現(xiàn),因此為了操作的方便,將這些元素均存放在向量中,采用向量而不采用鏈表是因為向量操作容易,且其占用內(nèi)存的空間是可變的,且事先需要為其分配一定的存儲空間,因此向量還節(jié)省了空間。

      (3)算法設計。本游戲中我方坦克、我方子彈、敵方坦克、敵方子彈都將其模擬成不同線程,即敵我雙方坦克,子彈均是以線程的形式出現(xiàn)在游戲中的,此外游戲中還設置了磚墻,草皮,鋼鐵等元素,這些物體都是以字符形式顯示,并且存放在在一個二維數(shù)組中。游戲過程中,坦克和子彈有時會碰撞到這些元素,當坦克不能通過磚墻和鐵墻,而子彈可以擊碎磚墻無法擊碎鋼鐵墻,關于碰撞都是通過坐標是否重合實現(xiàn)的。

      4 詳細設計

      (1)玩家坦克的功能屬性.首先己方坦克在進入游戲后的方向也就是炮頭是向上的,位于地圖的最下方,根據(jù)玩家鍵盤輸入移動,此時只能方向向下,不能向下移動但可以向其他三個方向移動。

      (2)敵人坦克的功能屬性。敵方坦克移動時是根據(jù)算法獲得的,每次將該敵方坦克的坐標放入算法結構,會得到一個新的坐標,通過坐標與原坐標的比較,判斷原坐標的方向,得到的坐標此時坦克就是向下,然后調用自身移動函數(shù)傳入向下的參數(shù)進行移動。

      (3)敵方的坦克控制及智能移動。敵方坦克的移動將采用A*算法獲得敵軍到己軍的最短路徑,然后把路徑通過計算轉換為0、1、2、3方向鍵保存到數(shù)組里,然后敵軍通過讀取數(shù)組中的命令來實現(xiàn)智能移動。敵軍坦克的子彈發(fā)射是通過主程序循環(huán)100次發(fā)射一次。這樣就可以實現(xiàn)敵軍坦克的智能移動和發(fā)射了。

      5 結語

      本程序的開發(fā)環(huán)境是以VS2013為平臺開發(fā),采用尋路算法控制敵方坦克移動,使其可玩性和復雜性有了極大提高。當然BUG是程序開發(fā)的必需品,在不斷的調試過程中,更加認識到了C語言的特性。

      參考文獻:

      [1]陳朔鷹,陳英.C語言程序設計習題集(第二版)[J].人民郵電出版社,2003(02).

      [2]張芳妮,呂波譯,[美]Paul S. R. Chishohm等著.C語言編程常見問題解答[J].清華大學出版社,1996(12).

      [3]陳朔鷹,陳英.C語言趣味程序百例精解[J].北京理工大學出版社,1996.

      猜你喜歡
      游戲
      做游戲
      夜間游戲
      游戲
      送信游戲
      數(shù)獨游戲
      瘋狂的游戲
      飛碟探索(2016年11期)2016-11-14 19:34:47
      爆笑游戲
      第八章直接逃出游戲
      小學科學(2015年7期)2015-07-29 22:29:00
      第八章 直接逃出游戲
      小學科學(2015年6期)2015-07-01 14:30:14
      游戲五計算
      双峰县| 唐山市| 台东市| 西和县| 大石桥市| 罗山县| 石棉县| 上犹县| 巴林右旗| 南陵县| 安丘市| 长沙市| 安龙县| 陆丰市| 金川县| 龙门县| 柞水县| 浦县| 繁昌县| 吉隆县| 中山市| 临朐县| 平安县| 孟津县| 厦门市| 滦南县| 易门县| 绍兴县| 莎车县| 电白县| 昌图县| 任丘市| 凤凰县| 兴安盟| 花垣县| 镇巴县| 德州市| 酒泉市| 南陵县| 金湖县| 邵阳市|