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

正文內(nèi)容

基于java的五子棋游戲系統(tǒng)設(shè)計與實現(xiàn)(編輯修改稿)

2025-01-09 01:02 本頁面
 

【文章內(nèi)容簡介】 聯(lián)機(jī)對完設(shè)計 選擇難度 云南民族大學(xué)學(xué)士學(xué)位論文 10 選取距離鼠標(biāo)所取點的最近的左上交點為繪制棋子的中心點,那么就可以實現(xiàn)棋子落在交點上了。 3. 黑白雙方輪流落子:黑方落子以后就要輪到白方,交替進(jìn)行,這是下棋的基本要求,因此我們就要弄一個互斥事件進(jìn)去,讓他們交替的落子。不能落在相同位置:當(dāng)我們落子時,會不小心落到相同位置上 去,那么就要出現(xiàn)提示,不能落在相同位置上,需要重新落子,實現(xiàn)的設(shè)想是當(dāng)這個點已經(jīng)繪制過棋子以后,我們就要給一個布爾變量,讓它為假,那么只能在它為真時才能繪制棋子,否則就要重新落子到別的地方去。 4. 判斷輸贏:當(dāng)五個相同顏色子都連在了一起的時候,我們就要判其為贏,這五個子可以在橫豎方向上連起,也可以在斜方向上連起。 5. 游戲信息:我們應(yīng)該在棋盤的上面設(shè)置一個游戲信息的,用來提示當(dāng)前輪到哪一方下棋了,以便于玩家知道誰在下,這個功能只要在黑白雙方輪流下棋功能的過程中添加一個提示信息用于顯示到界面上的就可以了。 6. 重新開始游 戲就是把棋盤上的子全部清空,回復(fù)到一開始的時候的狀態(tài),重置之前所有的數(shù)據(jù)。認(rèn)輸?shù)墓δ芫褪窃谂袛噍斱A功能的基礎(chǔ)上添加的,讓玩家對自己沒信心的時候使用。退出游戲的功能就是直接把窗口關(guān)閉就可以了。 7. 游戲難度選擇:游戲難度選擇是由玩家自主選擇的與電腦下五子棋的一個重要方法??梢愿鶕?jù)自身的下棋水平來選擇和那種電腦來下。難度分為三種,分別是:簡單、中等與困難。而且電腦的思維是根據(jù)難度提升而提升。 8. 聯(lián)機(jī)對戰(zhàn):聯(lián)機(jī)對戰(zhàn)是為了方便玩家與玩家相互之間切磋棋藝而設(shè)定的一大功能模塊,可以在一個局域網(wǎng)里面,然后聯(lián)機(jī)對戰(zhàn)。當(dāng)雙方建立聯(lián) 系以后,點擊開始就可以進(jìn)行聯(lián)網(wǎng)對戰(zhàn)了。這極大的提高了五子棋的娛樂程度。 第三章 五子棋程序分析與設(shè)計 11 軟件設(shè)計中使用到的 JAVA 軟件包以及類和方法 在用 JAVA 設(shè)計軟件的時候,使用到 SUM 公司提供的一些軟件包,這樣使得我們編寫程序更加簡便,以下是使用到的軟件包: // 軟件包提供一組“輕量級”(全部是 Java 語言)組件,盡量讓這些組件在所有平臺上的工作方式都相同。 JFrame 類是 的擴(kuò)展版本,該版本添加了對 JFC/Swing 組件架構(gòu) 的支持。 JFrame 是用來創(chuàng)建窗體的 swing 類,用來創(chuàng)建一個圖形界面的原始窗口,并且可以設(shè)置其大小,位置等屬性,是 swing 編程的基礎(chǔ)類之一。 // 軟件包包含用于創(chuàng)建用戶界面和繪制圖形圖像的所有類。 //Toolkit 此類是所有 Abstract Window Toolkit 實際實現(xiàn)的抽象超類。 Toolkit 的子類被用于將各種組件綁定到特定本機(jī)工具包實現(xiàn)。 ().getScreenSize().width。 ().getScreenSize().height。 //以上這兩個方法的作用是取得我們電腦顯示屏幕的寬度以及高度。 geiDefaultToolkit()為獲取默認(rèn)工具包,如果名為 的系統(tǒng)屬性被設(shè)置為 true,則使用 Toolkit 的 headless 實現(xiàn)。 如果不存在 或 被設(shè) 置 false,且存在名為 的系統(tǒng)屬性,則該屬性將被視為 Toolkit 子類的名稱;否則將使用特定于平臺的默認(rèn) Toolkit 實現(xiàn)。 getScreenSize()這個方法是獲取屏幕的大小。在具有多個顯示屏的系統(tǒng)上,使用主顯示屏。從 GraphicsConfiguration 和 GraphicsDevice 可以獲得多屏幕感知顯示尺寸。 // JOptionPane 有助于方便地彈出要求用戶提供值或向其發(fā)出通知的標(biāo)準(zhǔn)對話框 //MouseLinstener 是鼠標(biāo)監(jiān)聽,功能是接收用戶通過鼠標(biāo)所做的操作,可以取得用戶點擊鼠標(biāo)的坐標(biāo),從而進(jìn)行其他的操作。 云南民族大學(xué)學(xué)士學(xué)位論文 12 Graphics 類, 它的功能是類似于畫筆的功能,用來在窗口中繪制文字以及圖形等。他的調(diào)用是通過覆寫 JFrame 的 paint() 方法來使用的,通過 repaint() 方法來調(diào)用。 //這個是產(chǎn)生中斷并且調(diào)用文件用到的類。 通過數(shù)據(jù)流、序列化和文件系統(tǒng)提供系統(tǒng)輸入和 輸出。 File 類文件和目錄路徑名的抽象表示形式。 // BufferedImage 子類描述具有可訪問圖像數(shù)據(jù)緩沖區(qū)的 Image。 BufferedImage 由圖像數(shù)據(jù)的 ColorModel 和 Raster 組成。 Raster 的 SampleModel 中 band 的數(shù)量和類型必須與 ColorModel 所要求的數(shù)量和類型相匹配,以表示其顏色和 alpha 分量。所有 BufferedImage 對象的左上角坐標(biāo)都為 (0, 0)。因此,用來構(gòu)造 BufferedImage 的任何 Raster 都必須滿足: minX=0 且 minY=0。 可以用來調(diào)用一個圖片作為我們下棋的背景圖片使用。 五子棋界面設(shè)計 開始 開發(fā)游戲的第一步就是先制作出游戲的窗口界面,一個漂亮美麗大方的游戲界面,往往先能吸引玩家去嘗試,所以這個地方不能夠馬虎。首先我們得按照大家的習(xí)慣,也就是游戲風(fēng)格。 按照國人的五子棋游戲風(fēng)格。一般是在木質(zhì)的棋盤上下,這樣能夠顯示出棋類游戲的沉穩(wěn)、大氣而又不失典雅的氣質(zhì)。所以我們設(shè)計界面的時候需要按照木質(zhì)棋盤的顏色來設(shè)計底色。 在一般的五子棋游戲比賽中,需要有比賽的信息顯示,方便下棋者與觀看者根據(jù)信息思考。所以在我們設(shè)計的界面上,必要的信息是不可缺少的。國人多喜歡把棋盤放在左邊,然后右邊顯示下棋的信息,所以設(shè)計 棋盤的時候應(yīng)該按照國人的喜好擺放位置。基本流程如圖 32 所示: 第三章 五子棋程序分析與設(shè)計 13 棋 盤 的 設(shè) 計棋 盤 的 底 色下 棋 信 息 顯 示 設(shè) 計棋 盤 位 置 的 擺 放設(shè) 計 完 畢 圖 32 五子棋界面設(shè)計流程圖 綜上所述,棋盤的設(shè)計是以木質(zhì)顏色為棋盤底色,畫上棋盤線條,把棋盤擺設(shè)在左邊,然后再右邊添加下棋的信息,如:狀態(tài),時間顯示,開始游戲等一些按鈕。 五子棋算法設(shè)計 五子棋算法設(shè)計可以包括如圖 33 所示設(shè)計: 五 子 棋 算 法 設(shè) 計棋盤設(shè)計棋子設(shè)計落子設(shè)計輸贏判斷 圖 33 五子棋算法設(shè)計圖 云南民族大學(xué)學(xué)士學(xué)位論文 14 五子棋的算法設(shè)計包括棋盤設(shè)計,棋子設(shè)計,落子設(shè)計以及 輸贏判斷。能設(shè)計出這四個算法,一個基本的五子棋算法就算完成了。 五子棋棋盤設(shè)計 五子棋棋盤設(shè)計可以使用 JAVA 自帶的畫圖算法。設(shè)計成十五行十五列的小型棋盤即可,然后按照圍棋棋盤的設(shè)定,畫上天元以及天星等標(biāo)記,那么此棋盤就已經(jīng)設(shè)計完成了。 設(shè)計圖如下: 設(shè) 置 棋 盤 邊 界設(shè) 子 棋 盤 底 色 , 并且 設(shè) 置 線 條 顏 色行 設(shè) 置 一 個 整 值 ,初 始 值 為 0 , 且 每次 運 行 自 動 加 1是 否 大 于 1 4否列 設(shè) 置 一 個 整 值 ,初 始 值 為 0 , 且 每次 運 行 自 動 加 1是是 否 大 于 1 4否找 準(zhǔn) 棋 盤 線 條 交 叉點 畫 上 天 元 、 天 星是棋 盤 完 成 圖 34 棋盤設(shè)計流程圖 棋盤設(shè)計如上圖所示,首先是設(shè)計棋盤大小,然后設(shè)計棋盤底色(這里設(shè)計底色第三章 五子棋程序分析與設(shè)計 15 一般為木質(zhì)顏色,如:蠟黃色)和線條顏色,接下來就可以畫棋盤線條了,執(zhí)行一個循環(huán),循環(huán)次數(shù) 為 15 次,畫出行線,然后再執(zhí)行一個 15 次循環(huán),畫列線。最后找到相對應(yīng)的點,畫上天元和天星。如此下來,一個優(yōu)質(zhì)的棋盤就已經(jīng)完成了。顏色、線條等個方面符合國人的審美觀。讓玩家下起來有一種和現(xiàn)實下五子棋一樣的感覺。 棋子設(shè)計 棋子設(shè)計也可以使用 JAVA 自帶的畫圖算法,分為黑白兩種顏色的棋子,畫一個實心圓即可表示棋子。具體的實現(xiàn)設(shè)計如圖 35 所示: 獲 取 點 擊 坐 標(biāo)尋 找 橫 豎 交 叉 點畫 半 徑 為 1 3 的 圓填 充 剛 才 畫 的 這 個圓是 否 屬 于 當(dāng) 前已 畫 圓在 填 充 圓 畫 一 個 小的 紅 心 圓 , 表 示 這手 是 我 剛 下畫 棋 結(jié) 束 是否 圖 35 棋子設(shè)計流程圖 棋子設(shè)計就需要使用 java 自帶的畫圖方法,獲取橫豎交叉點,然后以該點為 圓心,畫一個半徑為 13 的圓,然后填充兩種顏色:黑色和白色。完成后判定該圓是否屬于剛剛落下的棋子,如果是,則在填充一個半徑為 6 的紅色圓,表示云南民族大學(xué)學(xué)士學(xué)位論文 16 該棋子剛剛走完。 落子算法設(shè)計 由于需要設(shè)計單機(jī)游戲和聯(lián)機(jī)對戰(zhàn)。但是該算法不涉及到聯(lián)機(jī)對戰(zhàn),所以該算法只針對單機(jī)游戲。 初步設(shè)定單機(jī)游戲分為三種難度等級。分別為容易、中等和困難。我們可以通過一個算法來體現(xiàn)不同難度,電腦只能從玩家手中獲取玩家下棋的情況,包括以下幾種情況: 1. 當(dāng)計算出的自己已經(jīng)有四個連珠并且沒有被堵住的情況下當(dāng)然也就是說下一顆子就必贏的情況 2. 當(dāng) 計算出的對方已經(jīng)有四個連珠并且沒有被堵住的情況下當(dāng)然也就是說必須堵住 3. 當(dāng)計算出的自己已經(jīng)有三個連珠并且沒有被堵住的情況下當(dāng)然也就是說下一顆子就必贏的情況 4. 當(dāng)計算出的對方已經(jīng)有三個連珠并且沒有被堵住的情況下當(dāng)然也就是說必須堵住 5. 四三連的情況 6. 三三連的情況 其算法流程圖如圖 36所示: 第三章 五子棋程序分析與設(shè)計 17 開 始 游 戲黑 方 先 下 ( 自 己 )判 定 是 否 結(jié) 束分 析 是 否 結(jié) 束( 得 到 每 個 點 重 要性 )判 斷 重 要 性 是否 最 高將 白 子 下 算 法設(shè) 計 的 地 方結(jié) 束提 起 下 一 個 點否是否是判 斷 是 否 結(jié) 束是否 圖 36 五子棋算法流程圖 開始下子,系統(tǒng)賦予該棋子( Value)初始值,然后系統(tǒng)自動分“ \” “ /” “ – ” “ |”這四個方向進(jìn)行判斷是否結(jié)束。 當(dāng)系統(tǒng)定義為簡單的時候只能滿足以下情況: 1. 當(dāng)計算出的自己已經(jīng)有四個連珠并且至少有一個沒有被其他顏色棋子攔截的情況下,就會自動去補齊。 2. 當(dāng)計算出的對方已經(jīng)有四個連珠并且沒有被攔截住的情況就會去攔截。 其他情況則不攔截。所以簡單的電腦較為容易。 云南民族大學(xué)學(xué)士學(xué)位論文 18 中等難度算法 1. 當(dāng)自己已經(jīng)有四個連珠并且至少有一個沒有被其他顏色棋子攔截的情況下,就會自動去補齊。 2. 當(dāng)計算出的對方已經(jīng)有四個連珠并且沒有被攔截住的情況就會去攔截。 3. 當(dāng)計算出的自己已經(jīng)有三個連珠并且沒有被攔截的情況下就會繼續(xù)補齊到第四顆棋子,然后繼續(xù) 1 號操作。 4. 當(dāng)計算出的對方已經(jīng)有三個連珠并且沒有被攔截的情況就會主動去攔截。 當(dāng)為棋盤出現(xiàn)四三連(三三連)連子的情況時候它不攔截 當(dāng)系統(tǒng)設(shè)定為困難的時候 1. 當(dāng)計算出的自己已經(jīng)有四個連珠并且至少有一個沒有被其他顏色棋子攔截的情況下,就會自動去補齊。 2. 當(dāng)計算出的對方已經(jīng)有四個連珠并且沒有被攔截住的情況就會去攔截。 3. 當(dāng)計算出的自己已經(jīng)有三個連珠并且沒有被攔截的情況下就會繼續(xù)補齊到第四顆棋子,然后繼續(xù) 1 號操作。 4. 當(dāng)計算出的對方已經(jīng)有三個連珠并且沒有被攔截的情況就會主動去攔截。 5. 當(dāng)計算機(jī)即將出現(xiàn)四三連的情況時候,計算 機(jī)就會自動去補齊。 6. 當(dāng)計算機(jī)即將出現(xiàn)三三連的情況時候,計算機(jī)就會自動去補齊。 7. 當(dāng)對方快或者已經(jīng)出現(xiàn)四三連子的時候,電腦就會視優(yōu)先級去攔截一個方向。 8. 當(dāng)對方快或者已經(jīng)出現(xiàn)三三連子的時候,電腦就會視優(yōu)先級去攔截一個方向。 判斷輸贏設(shè)計 五子棋判斷輸贏的規(guī)則就是連續(xù)五個顏色相同的子,代表該顏色所代表的一方獲勝。其具體設(shè)計流程圖如圖 37所示: 第三章 五子棋程序分析與設(shè)計 19 判 斷 五 子 棋 輸 贏先 進(jìn) 行 橫 向 查 找 ,且 設(shè) 置 個 初 始 值0 , 每 次 運 行 加 1顏 色 是 否 相 同否是 否 小 于 4是先 進(jìn) 行 橫 向 查 找 ,且 設(shè) 置 個 初 始 值0 , 每 次 運 行 加 1顏 色 是 否 相 同是是 否 小 于 4是先 進(jìn) 行 橫 向 查 找 ,且 設(shè) 置 個 初 始 值0 , 每 次 運 行 加 1顏 色 是 否 相 同是是 否 小 于 4是否最 后 進(jìn) 行 反 對 角 查找 , 且 設(shè) 置 個 初 始值 0 , 每 次 運 行 加 1否否是顏 色 是 否 相 同是是 否 小 于 4否判 斷 失 敗判 斷 勝 利否是否是圖 37 五子棋輸贏判斷流程圖 五子棋游戲勝負(fù)的判斷是五子棋游戲的最基本的算法設(shè)計。根據(jù)五子棋游戲的規(guī)則,當(dāng)任一行、列、斜行連續(xù)相同的棋子數(shù)達(dá)到 5 以后,則判定改色棋子的
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1