1. 程式人生 > >Qt實現的區域網對戰五子棋

Qt實現的區域網對戰五子棋

GoBang

使用Qt5.7.0完成的五子棋小軟體,支援人人對戰,人機對戰,區域網聯機對戰

學習Qt後的一個練手專案,完成自己曾經在命令列下的五子棋的昇華^_^

人機對戰使用基於評分表的策略來完成電腦下子,算不上AI吧。。但是電腦的棋力還是很高的(至少我敗多勝少)。這個評分表的來自onezeros的部落格

評估當前棋局中,哪個位置的得分最高。五子棋要贏,必然要有五個棋子在一起成線,那麼我們就可以計算棋盤中每一個五格相連的線,一下稱之為五元組。一般情況(包括專業五子棋)下棋盤是15*15的。那麼應該是572個五元組。同時,針對五元組中黑子和白子的數量(可以不考慮相對位置)的不同,給該五元組評不同的分。然後每一個位置的得分就是包含這個位置的所有五元組的得分之和。

評分表如下,是基於電腦黑棋,電腦白棋將評分表反過來即可

// tuple is empty  
Blank,  
// tuple contains a black chess  
B,  
// tuple contains two black chesses  
BB,  
// tuple contains three black chesses  
BBB,  
// tuple contains four black chesses  
BBBB,  
// tuple contains a white chess  
W,  
// tuple contains two white chesses  
WW, // tuple contains three white chesses WWW, // tuple contains four white chesses WWWW, // tuple does not exist Virtual, // tuple contains at least one black and at least one white Polluted tupleScoreTable[0] = 7; tupleScoreTable[1] = 35; tupleScoreTable[2] = 800; tupleScoreTable[3
] = 15000; tupleScoreTable[4] = 800000; tupleScoreTable[5] = 15; tupleScoreTable[6] = 400; tupleScoreTable[7] = 1800; tupleScoreTable[8] = 100000; tupleScoreTable[9] = 0; tupleScoreTable[10] = 0;

這種人機AI實現還是很簡單的,但是這個電腦的棋力還是很強的。當然效果同極大極小值搜尋中應用alpha-beta剪枝這種方法去實現五子棋AI還是稍差的。

同時在無禁手黑棋先行的情況下,這個評測表對於電腦白棋的棋力會稍弱一些

區域網聯機對戰使用的QUdp實現,當時的想法是允許觀戰,同時右下角形成一個聊天室,所以採用QUdp來實現,每當區域網中一個客戶端進入對戰頁面就會發出廣播,相當於加入聊天室

人人對戰就沒什麼好說的了,每個人每侷限定為5分鐘時間

總的功能已經完成,但還有些小細節和流程沒處理就給爛尾了。。。




相關推薦

Qt實現區域網五子棋

GoBang 使用Qt5.7.0完成的五子棋小軟體,支援人人對戰,人機對戰,區域網聯機對戰 學習Qt後的一個練手專案,完成自己曾經在命令列下的五子棋的昇華^_^ 人機對戰使用基於評分表的策略來完成電腦下子,算不上AI吧。。但是電腦的棋力還是很高的(至少我敗

H5+C3+JS實現雙人五子棋遊戲(UI篇)

本篇文章實現的是雙人對戰模式,主要是實現除人機AI演算法和判斷輸贏之外的其他功能,下一篇將會發布AI 框架搭建 前端精品教程:百度網盤下載 ? 1

前端仔教你一步步實現人人五子棋小遊戲【canvas詳細版】

線上地址--gobang online pc上使用谷歌瀏覽器比較友好@~@ 程式碼倉庫--gobang tutorial 歡迎對此倉庫進行擴充套件或star啦 @~@ 前置知識點: 阮生的es6教程和MDN的canvas教程 以上,兵馬未動,糧草先行。看官可以先體驗下小遊戲並且粗略瞭解

一步步實現人人五子棋遊戲【canvas版】

線上地址–gobang online pc上使用谷歌瀏覽器比較友好@~@ 程式碼倉庫–gobang tutorial 歡迎對此倉庫進行擴充套件或star啦 @~@ 前置知識點: 阮生的es6教程和MDN的canvas教程 以上,兵馬未動,糧草先行。看官可以先體驗下小遊戲

AI智慧人機五子棋(Java實現圖形介面)

簡述 這是本學期上完Java課後老師給出的課程設計題目,目的是:熟悉與掌握GUI程式設計;實現五子棋棋盤和棋子的繪製;實現遊戲AI以及對二維陣列的使用。 介面效果圖 電腦先行,玩家輸贏圖: 玩家先行,玩家輸贏圖: 整體設計 介面設

C# winform 簡單五子棋 200行程式碼實現人機

1、功能需求接上篇博文,本文描述簡單人機對戰實現過程,只是簡單實現考慮走一步策略,如果要想實現走多步策略,可以在本文估值演算法的基礎上用極大極小值配合剪枝演算法,實現考慮多步策略,這樣ai會顯得更加聰明,後期如果有時間完善,會更新程式碼。2、介面設計參考上一篇博文的介面。3、

websocket入門(2)——使用socket.io實現網路五子棋

五子棋網路對戰版說明 1、安裝與執行 請完整的down下除了node_modules資料夾以外的所有檔案,然後在控制檯執行 npm install來進行安裝。 安裝完畢後,通過 npm start 命令來執行伺服器,然後通過 127.0.0.1

[遊戲資訊][轉]《反恐精英:全球攻勢》要實現跨平臺

不久前,《反恐精英》的最新續作《反恐精英:全球攻勢》的訊息浮出水面。Valve老大Gabe Newell放話說,本作的其中一個目標是跨平臺對戰。在最近舉辦的Gamescon展會的一次訪談中,Newell說Valve認為不管玩家們使用的是什麼樣的平臺,他們都應該可以一起遊戲。他說:“我們一向不主張建立‘玩家的平

藉助實時資料推送快速製作線上五子棋小遊戲丨實戰

1 專案概述 遊戲開發,尤其是微信小遊戲開發,是最近幾年比較熱門的話題。 本次「雲開發」公開課,將通過實戰「線上對戰五子棋」,一步步帶領大家,在不借助後端的情況下,利用「小程式 ✖ 雲開發」,獨立完成一款微信小遊戲的開發與上線。 2 任務目標 根據專案初始框架,閱讀教程的同時,逐步完成棋盤繪製、音樂播放、玩家

c語言實現五子棋人人

利用簡單的c語言基礎 實現最簡單的功能 介面比較醜陋主要是剛學完c的一個小實踐 未使用MFC所以介面沒有很好看 主要目的加強對c語言的理解與運用 同時增加自己的程式碼量   首先要學一些標頭檔案可以看我的部落格前面的文章 要用到到的標頭檔案stdio.h stdlib

五子棋專案的實現(三)人機類的具體設計

在之前描述了博弈樹演算法的思想,現在則是關鍵類的設計實現。在具體的過程中我們先要設計一個遍歷棋型演算法,來遍歷整個棋盤中的各種棋型   通過最後返回值的不同,來確定不同的棋型 當中有評估函式對當前的棋型進行打分。再選取區域性最優的幾個落子點作為下一步擴充套件的節點。 //bwf 棋色

websocket實現五子棋聯機

GoBang.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <st

【C#】手把手系列|實現五子棋(第一章)

本人(ID:蒸發傑作)旗下所有文章均放棄版權,請任意使用。只是如果您覺得,看了我的文章,有所收穫的話,不妨點個贊,寫個評論。這是對我最大的支援。 開部落格的時間也不短了。同樣的,學習程式設計的時間也不短了。但相比於程式編寫的進步,部落格撰寫的速度卻還有些落後。這裡開啟一個新的專題,

五子棋人人實現

在十字交差點畫棋子,有幾種方法,第一種:獲取當前滑鼠點選的x,y值, 遍歷整個棋盤所有的交叉點座標,與其在一定誤差範圍內的交叉點座標即 為落子的座標點。第二種:直接將獲取的x,y座標減去棋盤外圍寬度然後 再除以棋盤每格的寬度,即可得到此座標位於棋盤的那一行那一列,然後 即可

基於Qt Creator實現中國象棋人機, c++實現

這是自己大一學完c++後,在課程實踐中寫過的一個程式,實現象棋人機對戰的演算法還是有點難的, 自己當時差不多也是寫了兩個月左右吧!當時看書又有很多問題得不到解決,所以就在網上找了一個視訊跟著

QT五子棋專案詳解之四:AI人機max-min極大極小值博弈演算法

不考慮博弈的演算法怎麼能算是AI呢?max-min極大極小值演算法就是考慮了博弈的演算法。來看一個簡單的例子在這個棋局中,電腦為白旗,白旗走哪一步更好呢,也許使用策略表會告訴你,應該衝4,但是衝4後,玩家就會連成4。這就是考慮了博弈之後,這一步棋就是敗局。這就是為什麼有max

Android實現五子棋遊戲(二) 人機實現

下面簡單介紹一下實現人機對戰的思路以及程式碼實現: 思路 人機對戰的總體思路是通過遍歷所有的無棋子的位置,通過模擬在每個無棋子點落子,並根據其周圍的棋子來獲取該點的兩個優先順序評分: 模擬使用者棋子來獲取一個優先順序評分,用於防守(使用者

使用Java語言編寫一個五子棋UI介面並實現網路戰功能(非區域網

使用Java語言編寫一個五子棋UI介面並實現網路對戰功能(非區域網) 一,前期準備 1,Java IDE(Eclipse)與JDK的安裝與配置jdk-15.0.1-免配置路徑版提取碼:earu免安裝版Eclipse 解壓即可使用提取碼:5iyy 網路上很多配置jdk的方法,我不再重複 這裡提供一種便捷操作的方

遊戲開發經驗談(二):類全球服遊戲的設計與實現

bbr tro 機房 產品 sql 服務器 通過 簡單 自己實現 上篇文章《遊戲開發經驗談(一):遊戲架構裏隱藏的五個坑及其應對方案》,我們主要講解了遊戲架構設計當中隱藏的一些坑及其應對方案,錯過的小夥伴可以點擊鏈接回溯之前的內容。本期內容,將會重點介紹對戰類全球服遊戲的設

用C語言寫一個簡單的三子棋,實現玩家與電腦的

原始碼: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <windows.h> #include <time.h> /* 用 C 寫一個三子棋 */ //邏輯: //1. 畫