freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

五子棋游戲程序設計—免費(編輯修改稿)

2025-01-11 02:41 本頁面
 

【文章內(nèi)容簡介】 數(shù)才能夠?qū)ζ鋬?nèi)部數(shù)據(jù)進行必要的加工,從而保證了數(shù)據(jù)加工的合法性。從這一意義上講,把這種代碼和數(shù)據(jù)的聯(lián)系稱為“封裝”。換句話說,封裝是將對象封閉保護起來,是將內(nèi)部細節(jié)隱蔽起來的能力。 在強調(diào)軟件組件的重用方面,面向?qū)ο蟮募夹g與標準的工業(yè)設計規(guī)律有更多相似之處。在面向?qū)ο笳Z言中,類是創(chuàng)建對象的關鍵,事實上類描述了一族對象的公共特征和操作,而對象則是具體實現(xiàn)的類。例如小汽車是一個基本概念,它具有顏色、幾何尺寸、動力特性的特征。那我們可以定義一個稱為“ car”的類,具有顏色、幾何尺寸、動力特征等參數(shù),以及描述 汽車在外界條件下運動狀態(tài)的成員函數(shù)。一輛具體的小汽車則是一個對象,在這個對象中有關參數(shù)均有具體數(shù)值,并可以通過輸入說明變量(外界條件參數(shù))獲取該車具體運動狀態(tài)。 面向?qū)ο蠹夹g給軟件發(fā)展帶來如下益處: 可重用性。從一開始對象的產(chǎn)生就是為了重復利用,完成的對象將在今后的程序開發(fā)中被部分或全部地重復利用。 可靠性。由于面向?qū)ο蟮膽贸绦虬送ㄟ^測試的標準部分,因此更加可靠。由于大量代碼來源于成熟可靠的類庫,因而新開發(fā)程序的新增代碼明顯減少,這是程序可靠性提高的一個重要原因。 連續(xù)性。具有面向?qū)ο筇攸c的 C++與 C 語言有很大的兼容性, C 程序員可以比較容易地過渡到 C++語言開發(fā)工作。 面向?qū)ο笳Z言具有如下基本特征: 訪問控制。對象必須能夠?qū)ζ鋬?nèi)部的某些元素進行保護,是它們只能被內(nèi)部使用,而不受外部干擾。反過來,對象又必須同其它外部元素進行聯(lián)系,以便對對象進行操作。在 C++中,類有私有的( private)、保護的( protected)和公有的( public)三種訪問機制。 繼承性。通過對已有對象進行增加或部分修改的方法建立新的對象,對已有對象可以增加數(shù)據(jù)和過程,也可以對其中某些過程進行從新定義。最初的類被稱為基類,從基類擴展出來的類稱為派生類。從已有類派生出新類是為了獲得更強的針對性。 多態(tài)性。正象生態(tài)系統(tǒng)一樣,繼承構成了類族。通常這些類族中的類具有同名的成員函數(shù),例如 OD 分布類族,具有一個通用基類,兩個派生類:增長系數(shù)OD 分布類和重力模型 OD 分布類,這幾個類都有同名的 Exec 成員函數(shù)。多態(tài)性意味著存在多種形式,能使人們在程序中激活任何屬于 OD分布類族的類的 Exec成員函數(shù),甚至在編譯可以不必具體知道對象是屬于增長系數(shù) OD 類還是重力模型 OD 分布類。 面向?qū)ο篌w系結(jié)構技術有助于創(chuàng)建行業(yè)性軟件開發(fā)機構。例如交 通規(guī)劃盡管具有差別,但各城市所需要的軟件基本上是相同的,這就為軟件開發(fā)機構提供了一種制作面向交通規(guī)劃的軟件框架(注意這里講的是軟件框架而不是通用性軟件)的機會。這種框架一旦開發(fā)成功,就可以多次反復利用。 面向?qū)ο蠹夹g特別適合于將某一領域內(nèi)的軟件資源整理成體系化,因為它有很好的表現(xiàn)能力,能夠容易抓住特定功能領域的本質(zhì)。 面向?qū)ο蟮某绦蛟O計 為有效使用面向?qū)ο蟮某绦蚍椒ǎ紫刃枰鉀Q程序的結(jié)構設計問題。在程序設計過程中最重要的抽象,也就是說,從現(xiàn)實世界中抽象出合理的對象結(jié)構。在面向?qū)ο笏枷胫校?抽象決定了對象的對外形象、內(nèi)部結(jié)構以及處理對象的外部接口,其關鍵是處理對象的可見外部特征。封裝是與抽象緊密聯(lián)系的概念,它需要兩個基本前提:首先,對象必須能夠表現(xiàn)一個完備的概念,例如可以將一條道路的縱斷面設計作為一個對象,它與外部的聯(lián)系限于縱斷面地面線、縱斷面設計參數(shù)。當這些外部條件給定之后,對象可以獨立計算任意樁號的設計高程、地面高程、設計高差、填挖面積等,也可以根據(jù)給定的比例和初始坐標計算設計線和地面線的圖形坐標。第二,對象的私有性,例如上述示例中,對象的內(nèi)部數(shù)據(jù)結(jié)構在外部是不可見的,其他程序員并不需要了 解這種數(shù)據(jù)結(jié)構就可以使用對象的功能。對于對象的接口設計是十分重要的,它必須給出必要的訪問渠道,同時必須盡可能地將內(nèi)部細節(jié)隱藏起來。我們可以將接口看作是在屏蔽墻上打開的一些出入通道,通道過多了就失去了屏蔽墻存在的意義,通道過少又由于限制過強而行動不便。一般情況下,這種通道表現(xiàn)為一組接口函數(shù),事實上我們也可以將一些變量作為對外開放的,但這并不是一種很好的方法。 面向?qū)ο笤O計方法的另一個重要貢獻,是關于繼承與多態(tài)性的處理。所謂繼承是指從現(xiàn)存對象出發(fā)建立一個新的對象類型,使它具有原對象的特點和功能,這稱為“派生” 。同時,新的對象類型又具有某種新特點和新功能。這樣,我們可以采用對象派生的方法建立一個有層次的對外部世界的描述。例如,在第三章中我們可以看到一組有關三維曲面分塊的類族,從四條三維空間直線定義的簡單曲面,到四條復雜三維空間曲線定義的曲面,呈現(xiàn)復雜的分層次的多態(tài)性。但他們都有共同的接口函數(shù)形式:例如根據(jù)給定平面點計算高程等。 面向?qū)ο蟮姆椒▽W是要求按人們通常的思維方式建立問題領域的模型,設計出盡可能自然表現(xiàn)求解方法的軟件。所謂建立模型就是建立問題領域中事物間相互關系。而表現(xiàn)求解問題的方法就是人們思維方法的描述 。在面向?qū)ο蟮脑O計方法中對象 (object)和傳遞信息 (message passing)分別表現(xiàn)事物和事物間的關系。類 (class)和繼承性 (inheritamce)是描述人們思維方式的描述方法。方法(method)是在可進行的操作,這種對象、類、消息、方法的程序設計范式的關鍵在于對象的封裝和繼承性。通過封裝 (emcapsulation)能將對象的定義和實現(xiàn)分開。通過繼承性,體現(xiàn)了類與類之間的關系,以及由此帶來的基本特征。下面將從面向?qū)ο蟮姆椒▽W方面對有關概念作簡要介紹。 ( 1)對象 我們把面向現(xiàn)實世界中 的實體就稱為問題空間的對象從動態(tài)的觀點看,對象的操作就是對象的行為,從存儲的角度看,對象是計算機內(nèi)存中的一塊私有存儲區(qū),在這塊存儲區(qū)中有數(shù)據(jù)、有方法。在面向?qū)ο蟮某绦蛟O計中,對象是該系統(tǒng)的基本運行實體,對于每個對象而言,都有與該對象對應的方法,而與每個對象相關的方法,就是定義了該對象的操作。 ( 2)消息和方法 在對象之間,消息是他們之間的唯一聯(lián)系。在面向?qū)ο蟮某绦颦h(huán)境中設計的程序,它的執(zhí)行是依靠對象向消息傳遞來完成的。把所有的對象分為各種對象類,每個對象類都定義了一組方法 ,所謂方法就是允許在對象類上進行的 各種操作。 ( 3)類 在面向?qū)ο蟮某绦蛟O計中,對象是程序設計的最基本的單位,相似的對象可以并到一類中去,程序員只需定義一個類,就可根據(jù)這個類得到若干個實例,其中每個實例就是一個對象。 ( 4)繼承性 繼承性是自動地共享類、子類、對象中的方法和數(shù)據(jù)的一種機制,繼承性個減少程序設計中編寫代碼的工作量,它不僅支持系統(tǒng)的可重用性,而且還促進了系統(tǒng)的可擴充性。 ( 5)封裝性 所謂封裝是一種信息隱蔽技術,用戶只能看到對象封裝界面上的信息,而對象內(nèi)部對用戶透明,封裝的目的是把對象的使用者和對象的設計者分開,使用者只需 設計訪問對象的消息。 ( 6)多態(tài)性 當同樣的消息可發(fā)送到父類的對象和它的子類的對象時,這就被稱為多太性。由于多太性具有可表達對象的多個類的能力。因此,它既與動態(tài)類型有關,又與靜態(tài)類型有關。 ( 7)動態(tài)聚束 一個程序經(jīng)過編譯,連接生成的可執(zhí)行文件代碼,其過程就是將執(zhí)行代碼聚束在一起,若這一過程發(fā)生在程序設計時,就稱為動態(tài)聚束。面向?qū)ο笳Z言常使用這一類聚束方式,它具有程序簡單性和可擴充性等優(yōu)點。 類的 介紹 游戲的設計用到了 Viusal C++ 這個設計環(huán)境,在設計的過程中有很 多不同的類構成,在 C++中類的定義方式為: class 類名 { private: 私有數(shù)據(jù)及成員函數(shù); protected: 保護段數(shù)據(jù)及成員函數(shù); public: 公有數(shù)據(jù)及成員函數(shù); }; 其中, class 是類定義符,類名是一種標識符,類名稱的命名規(guī)則與變量名的命名規(guī)則相同。一隊花括號是類的說明部分,說明該類的成員。類的成員包括數(shù)據(jù)成員和成員函數(shù)兩部分。從訪問權限來分,類的成員又分為:公有的( public)、私有的( private)和保護的( protected)。 第三章 五子棋游戲設計 模塊分析 設計及編碼 五子棋游戲的總體流程圖( )如下 : 有 是 無 是 否 否 有 否 無 是 黑方下子 開始 找另一位置 白方下子 找另一位置 判斷該位置是否有棋 選擇是否重新開局 判斷該位置是否有棋 跳出白方獲勝框 白方下子 跳出黑方獲勝框 判斷黑方是否勝出 黑方下子 判斷白方是否勝出 游戲結(jié)束 圖 棋盤初始化模塊 開始游戲時游戲界面是沒有棋子的,也就是棋盤的初始化狀態(tài),如下圖( ) 圖 初始化界面 所以當游開始時必須要進行棋盤初始化,實現(xiàn)程序如下: IMPLEMENT_DYNCREATE(CTryDoc, CDocument) BEGIN_MESSAGE_MAP(CTryDoc, CDocument) //{{AFX_MSG_MAP(CTryDoc) // NOTE the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CTryDoc construction/destruction CTryDoc::CTryDoc() { // TODO: add onetime construction code here ResetData()。 } CTryDoc::~CTryDoc() { } BOOL CTryDoc::OnNewDocument() { if (!CDocument::OnNewDocument()) return FALSE。 // TODO: add reinitialization code here // (SDI documents will reuse this document) return TRUE。 } 結(jié)局判斷模塊 如何判斷輸贏:當某方下一子后,計算與當前棋子相鄰的四個方向( \ / | )的同色棋子個數(shù),大于四則分出勝負,否則繼續(xù),判斷是否在同一直線上的算法流程圖如下圖( ) 是 否 是 否 是 否 是 否 圖 實現(xiàn)程序如下: BOOL CTryDoc::IsGameOver() { int i,j,countw=0,countb=0,ccount,m,n。 for(i=0。i15。i++) for(j=0。j15。j++) 進入選擇是否重新開局框 白(黑)子在水平方向是否大于 4 白(黑)方獲勝 白(黑)方下子 白(黑)子在垂直方向是否大于 4 白(黑)子在正對角線方向是否大于 4 白(黑)方獲勝 白(黑)方獲勝 白(黑)方獲勝 黑(白)方下子 白(黑)子在反對角線方向是否大于 4 { if(condition[i][j]==1||condition[i][j]==2) {
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1