圍棋源碼
① 棋牌源碼可以破解是真是假
假的。根據查詢相關公開信息顯示,網上還有許多騙子販賣棋牌源碼破解方法,下載後其實沒有任何功能,而且還有盜號、木馬的風險。棋牌是棋類和牌類娛樂項目讓凱慎的總稱,包括中國坦敬象棋、圍棋、國際象棋、蒙古象棋孫兆、五子棋、跳棋、國際跳棋(已列入首屆世界智力運動會項目)、軍棋、橋牌、撲克、麻將等等諸多傳統或新興娛樂項目,也是一種傳統文化。
② 逐鹿圍棋的逐鹿圍棋發展歷史
在2002年左右,由於興趣愛好,作者開發了逐鹿圍棋的原型,一個叫HappyGO的小程序。這個程序非常簡單,只對GNUGO圍棋引擎做了簡單封裝,提供一個圖型用戶界面供用戶使用。但是這個版本僅存在作者硬碟里,並未公開發布過。
後來通過修改HappyGO,完成了逐鹿1.0 Beta版,並發布到網上。不久即收到了不少用戶的反饋信息,同時也發現了許多圍棋軟體的一些問題。 但由於時間的原因, 當時並沒有立即解決這些問題。
為了滿足廣大棋友的要求, 作者大幅優化了系統,大部分模塊都進行了重新設計。在經過較長時間的測試和試用測試後,在2003年推出1.0正式版。1.0包括兩部分:圍棋伺服器和客戶端。圍棋伺服器負責管理對局,提供人工智慧,客戶端則提供界面。首先要安裝圍棋伺服器和客戶端,使用時客戶端通過網路連接到伺服器,就可以開始下棋了,這樣的設計很容易支持網路對局。但這樣的系統安裝和配置都比較麻煩,而且在網路條件不好的環境下很不穩定。
為了解決1.0版的問題,作者再次進行較大的修改,於2004年發布了逐鹿圍棋2.0,這個版本採用回歸到將圍棋引擎(伺服器)與客戶端集成在一起的辦法(兩者之間通過計算機的管道進行通信), 使用戶只要安裝一個系統就可以了, 系統採用自動配置引擎的方式, 提高系統易用性, 讓那些對計算機不太了解的用戶也能順利使用。這個版本非常穩定,而缺少了網路對局功能。
逐鹿圍棋3.0在原來的2.0的基礎上新增加了支持網路對局(區域網)的功能, 同時對系統原來不合理的地方進行了優化, 並且改正了原來的一些系統BUG。直到逐鹿圍棋3.0,才是一個比較好用的版本,因此嚴格地說這個才是1.0的正式版,但於版本編號的原因,不可能再回退了。
2005年7月16日、9月26日和11月19日分別發布了逐鹿圍棋3.0 Beta1、Beta2和Beta3三個測試版。
2006年1月20日發布3.0正式版 (3.0.2006.2)。
2006年6月27日發布3.1 (3.1.2006.7),作了局部優化改進.
2007年7月19日,發布逐鹿圍棋3.2 (3.2.2007.7),新增了鍵盤落子功能。
2008年3月26日,發布逐鹿圍棋3.3 (3.3.2008.4),新增了顯示落子順序的功能。
2008年5月18日,發布逐鹿圍棋3.4 (3.4.2008.6),增加了將對局棋盤導出到單張BMP圖片的功能。
2009年1月31日,發布逐鹿圍棋3.5 (3.5.2009.2),變化:(1)改正了一個在小內存環境下導致引擎停止工作的嚴重BUG; (2)因更改主頁而更新地址;(3)提供完整引擎源碼下載連接。
2009年3月17日,發布逐鹿圍棋4.0 Beta 1 (4.0.2009.4)。 變化:(1)增加了升級版的GNUGO圍棋引擎3.6(至此系統支持四個GNUGO圍棋引擎:3.0,3.2, 3.4,3.6),3.6的棋力較原有3個都強;(2)界面美化,支持主界面的棋盤背景、棋格線、游標、最後落子點的顏色或圖片自定義設置; (3)增加了強大的對局導出功能,可以導出成單張圖片或圖組,如果是圖組,可以採用HTML 格式支持瀏覽,圖片格式有所增強,支持BMP格式和JPEG格式;(4)增加了側邊欄,既充分利用界面的剩餘空間,又可以為棋友提供更多信息,同時也對免費逐鹿圍棋不斷發展提供了可能。
2009年12月29日,發布逐鹿圍棋4.0 Beta 2 (4.0.2009.12),增加了落子音效,對局歷史記錄快速瀏覽,並加入重大子系統「逐鹿圍棋共享工具」。
2010年7月5日, 發布逐鹿圍棋4.0 Beta 3 (4.0.2010.7), 新增了保存/打開對局的功能,可以復盤;界面進一步美化(採用圖型化棋子)。另外,由於存在較多問題,逐鹿圍棋共享工具暫去掉。
2010年12月5日,發布逐鹿圍棋4.0 RC1 (4.0.2011.2),開始支持遠程在線看棋功能。
2011年1月2日,發布逐鹿圍棋4.0 RC2 (4.0.2011.3),遠程在線看棋功能優化並正式公開使用。
2011年2月13日,發布逐鹿圍棋4.0 RC3 (4.0.2011.4),應一位盲人棋友的要求,簡單地增加了語音助手, 可以支持語音報坐標、對局狀態等信息。由於這個功能的加入,逐鹿圍棋自此不再支持Windows 2000。
2011年9月26日,發布逐鹿圍棋4.0最終正式版 (Final, 4.0.2011.9),僅在原有基礎上作調整,無重大更新,恢復了逐鹿圍棋共享工具(此時此工具仍有待完善)。至此,逐鹿圍棋4.0的開發工作全部完成。
2011年11月20日,發布逐鹿圍棋4.5 Beta (4.5.2012.0) ,變化包括:增加了兩個新的圍棋引擎Fuego, AmiGoGtp,去掉了較舊的GNU Go 3.0;界面變化;原來在新局界面中直接敲回車關閉對話框時直接在棋盤上落子的錯誤修正。
2012年2月14日,發布逐鹿圍棋4.5 Beta 2 (4.5.2012.2),變化包括:棋盤四側均顯示坐標, 以方便在截圖與他人溝通;增加了一個新的小工具 「逐鹿圍棋動畫製作工具」, 可以將導出的對局圖片製作成GIF動畫;去掉了一些不再需要的後台功能。
2012年6月26日,發布逐鹿圍棋4.5 RC (4.5.2012.6),變化為:正式將最新fuego 1.1.3引擎集成到系統安裝包中(這是在軟體發布時,fuego發布的最強的版本);逐步去掉了網路對戰功能(網路對戰功能計劃在5.0再全新支持),隱藏狀態欄上的一些信息;檢查XP系統的防火牆並將自己作為例外以方便其他用戶網路看棋。 2012年10月21日,發布逐鹿圍棋4.5 RC2 (4.5.2012.9),變化為:(a)增加了全新的程序初始化設置窗口, 在安裝後第一次啟動時要求用戶選擇使用的界面語言和防火牆設置;(b)比較全面的英文界面支持;(c)工具欄圖標支持tooltip提示;(d)解決了非GNUGO引擎使用讓子模式時出錯的問題;(e)修改安裝程序,以更好地支持英文和中文繁體安裝界面。
2012年12月16日,發布逐鹿圍棋4.5 RC3 (4.5.2013.0),變化為:(a)去掉右下角圖片廣告區;(b)英文版界面優化,去除少量沒有徹底改成英文的信息; (c)修正了對局比分帶負數的BUG;(d)安裝程序鏈接地址調整;(e)程序在其它方面進行了微小調整(如檢查.Net framewrok的策略變化)。
4.x系列仍然是採用3.0的框架和內核,只是一些功能增強和錯誤修正。4.5將是WIN32平台的最後版本,已經進入RC階段,將不會有功能變化和升級。
③ 用C語言編程 在屏幕上顯示圍棋棋盤
--
以怎麼不用 MS VC++6 ??
編C語言一般都用啊
還有\xCD是C語言
Ascii代碼 表示一個圖形
用循環語句啊!
等我一下 晚上寫出來 貼上哦
晚上10:00 上完課回來
呵呵 分給不給 隨便 你的問題讓我熟練了許多
分不重要了
我終於寫出來了
調試了30分鍾啊!
純粹的循環 + 判斷
-- 我就這點水平了 演算法可能不好
如果有更好的告訴我 上QQ 或發網路消息給我
網路的顯示有問題 最好
用源代碼格式化工具格式化一下 網路有搜
#include <stdio.h>
void main()
{
int n,m,x,y,temp,j=0,i=0 ;
printf("輸入棋盤的橫格數,豎格數:\n");
scanf("%d,%d",&x,&y);
printf("%d,%d\n",x,y);
n=2*x+1 ;
m=2*y+1 ;
printf("%d,%d\n",n,m);
while(j<m)
{
j++;
temp=j%2 ;
i=0 ;
if(j==1)
{
while(i<n)
{
i++;
if(i==1)
{
printf("\xC9");
continue ;
}
if(n==i)
{
printf("\xBB\n");
continue ;
}
if(i%2!=0)
{
printf("\xCB");
continue ;
}
if(i%2==0)
{
printf("\xCD\xCD\xCD");
continue ;
}
}
continue ;
}
if(m==j)
{
while(i<n)
{
i++;
if(i==1)
{
printf("\xC8");
continue ;
}
if(n==i)
{
printf("\xBC\n");
continue ;
}
if(i%2!=0)
{
printf("\xCA");
continue ;
}
if(i%2==0)
{
printf("\xCD\xCD\xCD");
continue ;
}
}
continue ;
}
if(temp==0)
{
while(i<n)
{
i++;
if(i%2!=0)
{
printf("\xBA");
if(n==i)printf("\n");
continue ;
}
if(i%2==0)
{
printf(" ");
continue ;
}
}
continue ;
}
if(temp!=0&&j!=1)
{
while(i<n)
{
i++;
if(i==1)
{
printf("\xCC");
continue ;
}
if(n==i)
{
printf("\xB9\n");
continue ;
}
if(i%2!=0)
{
printf("\xCE");
continue ;
}
if(i%2==0)
{
printf("\xCD\xCD\xCD");
continue ;
}
}
continue ;
}
}
}
100%編譯通過
可以畫出任意大小的棋盤
如 5*3 5*5
只要你的屏幕能夠顯示
以上是用圖像庫畫的棋盤
下面是用 __ 和 |
畫的棋盤 其實很簡單 替換一下就可以了
#include <stdio.h>
void main()
{
int n,m,x,y,temp,j=0,i=0 ;
printf("輸入棋盤的橫格數,豎格數:\n");
scanf("%d,%d",&x,&y);
printf("%d,%d\n",x,y);
n=2*x+1 ;
m=2*y+1 ;
printf("%d,%d\n",n,m);
while(j<m)
{
j++;
temp=j%2 ;
i=0 ;
if(j==1)
{
while(i<n)
{
i++;
if(i==1)
{
printf("__");
continue ;
}
if(n==i)
{
printf("__\n");
continue ;
}
if(i%2!=0)
{
printf("__");
continue ;
}
if(i%2==0)
{
printf("__");
continue ;
}
}
continue ;
}
if(m==j)
{
while(i<n)
{
i++;
if(i==1)
{
printf("__");
continue ;
}
if(n==i)
{
printf("__\n");
continue ;
}
if(i%2!=0)
{
printf("__");
continue ;
}
if(i%2==0)
{
printf("__");
continue ;
}
}
continue ;
}
if(temp==0)
{
while(i<n)
{
i++;
if(i%2!=0)
{
printf("|");
if(n==i)printf("\n");
continue ;
}
if(i%2==0)
{
printf(" ");
continue ;
}
}
continue ;
}
if(temp!=0&&j!=1)
{
while(i<n)
{
i++;
if(i==1)
{
printf("__");
continue ;
}
if(n==i)
{
printf("__\n");
continue ;
}
if(i%2!=0)
{
printf("__");
continue ;
}
if(i%2==0)
{
printf("__");
continue ;
}
}
continue ;
}
}
}
④ 求圍棋的VB源代碼~
來~加 我 的QQ405557154 我做了一個,還有一同學做的,還有一是網上的朋友做的呵呵
Private Sub Timer1_Timer()
Dim ms As Boolean
Dim Info, temp As String
Dim p, p1, p2, i As Integer
Dim Ch
' Begin of Time Show Process
If ModemState <> LOGIN And SocketState <> CONNECTED Then
'it is not a multiusers game
Exit Sub
Else
If (S_R = 1) And (TURN = BLACKP) Then
Black_Time = Black_Time + Time - Start_Time
TimeB.Caption = CDate(Black_Time / 200)
Else
If (S_R = 1) And (TURN = WHITEP) Then
White_Time = White_Time + Time - Start_Time
TimeW.Caption = CDate(White_Time / 200)
Else
If (S_R = 0) And (TURN = WHITEP) Then
Black_Time = Black_Time + Time - Start_Time
TimeB.Caption = CDate(Black_Time / 200)
Else
If (S_R = 0) And (TURN = BLACKP) Then
White_Time = White_Time + Time - Start_Time
TimeW.Caption = CDate(White_Time / 200)
End If
End If
End If
End If
End If
'End If
' End of Time Show Process
'Begin of winsockt process
If SocketState = CONNECTED And Begin_Flag = 1 Then
ms = Net.Message_Exist
If ms = False Then
Exit Sub
End If
Info = Net.WaitForValue(Chr$(26), 5)
If g_ErrorCode = 1 Then
'Some error such as Timeout occured
Exit Sub
End If
p1 = InStr(Info, "B")
p2 = InStr(Info, "E|;")
If p1 = 0 Or p2 = 0 Then
Exit Sub
End If
temp = Mid$(Info, p1 + 1, p2 - p1 - 1)
ParseLine (temp)
Msg(Msg_No).No = CInt(ParseArray(1))
Msg(Msg_No).Color = CInt(ParseArray(2))
If IsNumeric(ParseArray(3)) Then
Msg(Msg_No).X = CInt(ParseArray(3))
Msg(Msg_No).Y = CInt(ParseArray(4))
Else
Msg(Msg_No).X = ParseArray(3)
Msg(Msg_No).Y = ParseArray(4)
End If
If Msg(Msg_No).Color = GIVEUP Then
Beep
MsgBox ("對方已經認輸了")
Net.Winsock1.SendData ("R_O" + Chr$(26))
Pause 3
Call Begin_Click
Exit Sub
End If
If Side = BLACKP Then
p = Draw_Point(Msg(Msg_No).X, Msg(Msg_No).Y, WHITEP)
Record(Step).Color = WHITEP
step_show.Cls
step_show.Print Step
TURN = BLACKP
Else
p = Draw_Point(Msg(Msg_No).X, Msg(Msg_No).Y, BLACKP)
Record(Step).Color = BLACKP
step_show.Cls
step_show.Print Step
TURN = WHITEP
End If
Record(Step).X = Msg(Msg_No).X
Record(Step).Y = Msg(Msg_No).Y
Step = Step + 1
S_R = 1
R_R = 0
p = Count_All_Gas
If (Msg(Msg_No).X > 0 And Msg(Msg_No).Y > 0 _
And Msg(Msg_No).X < 20 And Msg(Msg_No).Y < 20) Then
Board(Msg(Msg_No).X, Msg(Msg_No).Y).Current = True
Refresh_Board
Board(Msg(Msg_No).X, Msg(Msg_No).Y).Current = False
End If
Msg_No = Msg_No + 1
Pause 1
Net.Winsock1.SendData ("R_O" + Chr$(26))
Exit Sub
End If
'End of process of winsocket
'Begin of modem process
If ModemState <> LOGIN Or R_R <> 1 Then
'It isn't a Inter_Modem Game
Exit Sub
End If
ms = Modem_F.Exist_Msg
If ms = False Then
'IO Port don't have any message
Exit Sub
End If
Info = Modem_F.WaitForValue(Chr$(26), 5)
'Wait a playing message
If g_ErrorCode = 1 Then
'Some error such as Timeout occured
Exit Sub
End If
p1 = InStr(Info, "B")
p2 = InStr(Info, "E|;")
If p1 = 0 Or p2 = 0 Then
Exit Sub
End If
temp = Mid$(Info, p1 + 1, p2 - p1 - 1)
ParseLine (temp)
Msg(Msg_No).No = CInt(ParseArray(1))
Msg(Msg_No).Color = CInt(ParseArray(2))
If IsNumeric(ParseArray(3)) Then
Msg(Msg_No).X = CInt(ParseArray(3))
Msg(Msg_No).Y = CInt(ParseArray(4))
Else
Msg(Msg_No).X = ParseArray(3)
Msg(Msg_No).Y = ParseArray(4)
End If
Modem_F.Comm1.InBufferCount = 0
'Clear Buffer
If Msg(Msg_No).Color = LOGOUT Then
Beep
MsgBox ("對方已經退出了")
Modem_F.Comm1.InBufferCount = 0
Modem_F.Comm1.Output = "R_O" + Chr$(26)
Cls
Step = 0
Start_Time = Time
Black_Time = 0
White_Time = 0
Exit Sub
End If
If Msg(Msg_No).Color = FINISHED Then
Beep
Ch = MsgBox("對方要求結束比賽,可以嗎?", vbYesNo)
Modem_F.Comm1.InBufferCount = 0
If Ch = 6 Then
Modem_F.Comm1.Output = "YESR_O" + Chr$(26)
Else
Modem_F.Comm1.Output = "NOR_O" + Chr$(26)
Exit Sub
End If
PlayState = FINISHED
Count_Area.Enabled = True
End If
If Msg(Msg_No).Color = GIVEUP Then
Beep
MsgBox ("對方已經認輸了")
Modem_F.Comm1.InBufferCount = 0
Modem_F.Comm1.Output = "R_O" + Chr$(26)
Call Begin_Click
Exit Sub
End If
If Msg(Msg_No).Color = TALK Then
Beep
MsgBox (Modem_F.His_Name.Text & "說: " & Msg(Msg_No).X)
Modem_F.Comm1.InBufferCount = 0
Modem_F.Comm1.Output = "R_O" + Chr$(26)
Exit Sub
End If
If Msg(Msg_No).Color = UNDO Then
Step = Step - 1
Beep
Modem_F.Comm1.InBufferCount = 0
Modem_F.Comm1.Output = "R_O" + Chr$(26)
Draw_Board
Ini_Board
For i = 1 To Step - 1
Board(Record(i).X, Record(i).Y).Current = False
p = Draw_Point(Record(i).X, Record(i).Y, Record(i).Color)
step_show.Cls
step_show.Print Step
p = Count_All_Gas
Next i
Board(Record(Step - 1).X, Record(Step - 1).Y).Current = True
Refresh_Board
Board(Record(Step - 1).X, Record(Step - 1).Y).Current = False
S_R = 1
R_R = 0
TURN = Side
Exit Sub
End If
Modem_F.Comm1.InBufferCount = 0
Modem_F.Comm1.Output = "R_O" + Chr$(26)
If Side = BLACKP Then
p = Draw_Point(Msg(Msg_No).X, Msg(Msg_No).Y, WHITEP)
Record(Step).Color = WHITEP
step_show.Cls
step_show.Print Step
Else
p = Draw_Point(Msg(Msg_No).X, Msg(Msg_No).Y, BLACKP)
Record(Step).Color = BLACKP
step_show.Cls
step_show.Print Step
End If
Record(Step).X = Msg(Msg_No).X
Record(Step).Y = Msg(Msg_No).Y
Step = Step + 1
S_R = 1
R_R = 0
p = Count_All_Gas
If (Msg(Msg_No).X > 0 And Msg(Msg_No).Y > 0 _
And Msg(Msg_No).X < 20 And Msg(Msg_No).Y < 20) Then
Board(Msg(Msg_No).X, Msg(Msg_No).Y).Current = True
Refresh_Board
Board(Msg(Msg_No).X, Msg(Msg_No).Y).Current = False
End If
Msg_No = Msg_No + 1
End Sub
Private Sub Timer2_Timer()
ShowS.Cls
ShowS.Print " :-):-):-):-):-) " + Show_String(C1) + " (:-(:-(:-(:-(:-"
C1 = C1 + 1
If C1 = 10 Then
C1 = 0
End If
Game_Time.Cls
Game_Time.Print " 現在時間: " & Time
End Sub
Private Sub Set_Hand(h As Integer)
'設置讓子(1-9)
Dim p As Integer
If h <= 1 Then
'Not a Handicap game
Exit Sub
End If
部分代碼。。