软著申请源代码_第1页
软著申请源代码_第2页
软著申请源代码_第3页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、前言围棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。同时它起源于中 国,古称“弈” ,是我国传统技艺之一。本游戏软件提供了人机对弈,和棋手对弈(局域网 对弈)两种模式,局域网模式可以保证多人同时进行游戏。本软件使用C#语言编写,在windows 7 x64 系统下采用 Visual Studio 2010 开发和调试,附源码如下。客户端程序:ype)case = (margin_left + i *gap - chessSize);= (margin_top + j * gap - chessSize);= (chessSize * 2);= (chessSize * 2);,

2、 rect);if (m_bShowIndex && m_Boardi, j.step > 0)(m_Boardi, j.(), fontNumber, , rect, format);break;case = (margin_left + i *gap - chessSize);= (margin_top + j * gap - chessSize);= (chessSize * 2);int centerX = (margin_left + i * gap);int centerY = (margin_top + j * gap);, rect);2, centerY

3、 -(new Pen, 3), centerX - chessSize / chessSize / 2, centerX + chessSize / 2, centerY + chessSize / 2);if (m_bShowIndex && m_Boardi, j.step > 0)(m_Boardi, j.(), fontNumber, , rect, format);break;case= (margin_left + i *gap - chessSize);= (margin_top + j * gap - chessSize);= (chessSize * 2

4、);= (chessSize * 2);, rect);if (m_bShowIndex && m_Boardi, j.step > 0)(m_Boardi, j.(), fontNumber, , rect, format);break;case= (margin_left + i *gap - chessSize);= (chessSize * 2);= (chessSize * 2);centerX = (margin_left + i * gap);centerY = (margin_top + j * gap);, rect);2, centerY -(new

5、Pen, 3), centerX - chessSize / chessSize / 2, centerX + chessSize / 2, centerY + chessSize / 2);if (m_bShowIndex && m_Boardi, j.step > 0)(m_Boardi, j.(), fontNumber, , rect, format);break;case= (margin_left + i *gap - chessSize / 2);= (margin_top + j * gap - chessSize / 2);= (chessSize);=

6、 (chessSize);, rect);break;case= (margin_left + i *gap - chessSize / 2);= (margin_top + j * gap - chessSize / 2);= (chessSize);, rect);break;case = (margin_left + i gap - chessSize / 2);= (margin_top + j * gap - chessSize / 2);= (chessSize);= (chessSize);, rect);break;ype !=return false;ype = type;#

7、region 判断是否可以提子bool bEat = false;bool bValidStep = true;ype = (type)ype = (type) bEat = tryToEat(pos, new + 1, , ref bValidStep) | bEat;if (!bValidStep)return false;ype = (type)bEat = tryToEat(pos, new , - 1), ref bValidStep) | bEat;if (!bValidStep)return false;ype = (type)bEat = tryToEat(pos, new ,

8、 + 1), ref bValidStep) | bEat;if (!bValidStep)return false;#endregionif (!bEat)tep = m_currentStep;m_Board, .pos = pos;m_currentStep+;return true;ype = newBoardi, j;return true;ype = '0' : (m_Boardj, i.type = '1' : '2'(ch);(strLine);();return true;ype = ChessBlock block;findB

9、lock(new (i, j), out block);if > 0)type = foreach pos in block)ifnewType = m_Board - 1, .type;if (type = &&(newType| newTypetype = newType;elseif (type != &&type = (newType)break;typeifnewType = m_Board + 1, .type;if (type = && (newType = | newType =type = newType;elseif (

10、type != && type = (newType)break;typeifnewType = m_Board, - 1.type;if (type = && (newType = | newType =type = newType;elseif (type != && type = (newType)typebreak;break;else ifelseifnewType = m_Board, + 1.type;if (type = && (newType = | newType =type = newType;elseif

11、(type != && type = (newType)typeif (type =type =(type =type =type =foreachposToFill in block)m_Board, .type = type;ype =ChessBlock block;findBlockOnSim(new (i, j), out block);if > 0)type = foreach pos in block)ifnewType = - 1, .type;if (type = &&(newType = |newType type = newType;

12、elseif (type != &&type = (newType)break;typeifnewType = + 1, .type;if (type = && (newType = | newType =type = newType;elseif (type != && type = (newType)break;break;typeifnewType = , - 1.type;if (type = && (newType = | newType =type = newType;elseif (type != &&

13、; type = (newType)typeifnewType = , + 1.type;if (type = && (newType = | newType = type = newType;elseif (type != && type = (newType)typebreak;if (type = type =type =else if (type =elsetype = foreachposToFill in block), .type = type;ype = | m_Boardi, j.type| m_Boardi, j.type = m_Board

14、i, j.type = ype;if (type = | type = |type = | type = ChessBlock block;findBlock(pos, out block);if > 0)typeResult =switch (type)casecase typeResult break;typeResultbreak;break;case typeResult break;foreach posToToggle in block)m_Board, .type = typeResult;ype =m_Boardi, j.type =else if (m_Boardi,

15、j.type =m_Boardi, j.type =ype)casecasecasenBlack+;casebreak;casecasenWhite+; break;default:nPending+; break;double fBlack = nBlack + (double)nPending / 2;double fWhite = nWhite + (double)nPending / 2;StringBuilder strResult = new StringBuilder();("黑子 : " + () + "n");("白子 : &

16、quot; + () + "nn");(" 结果 : ");fWhite += ;if (fBlack > fWhite)("黑子赢 " + (fBlack - fWhite).ToString();else if (fWhite > fBlack)(" 白子赢 " + (fWhite - fBlack).ToString();return ();ype;while > 0)posCurrent = ();ype = type)(pos1);(pos1);ype = type)(pos1);(po

17、s1);ype = type)(pos1);(pos1);ype = type)(pos1);(pos1);ype;while > 0)posCurrent = ();ype = type)(pos1);(pos1);ype = type)(pos1);(pos1);ype = type)(pos1);(pos1);ype = type)(pos1);(pos1);吃别人(包括劫持)被自己吃了QueueposToProcceednewQueue();ype;ypereturn true;if(!(pos1)&&ype =type)ypereturn true;if(!(p

18、os1)&&ype =type)ypereturn true;if(!(pos1)&&ype= type)ypereturn true;if (!(pos1) &&ype = type)ype =ype =os, m_Board_backupi, j.type, m_Board_backupi, j.step);= = -= 2;return true;os, m_Boardi, j.type, m_Boardi, j.step);= = #region = 单人游戏时 =ype = &&i, j.step = 0)if (new

19、 (i, j), )(new Node(new (i, j);if <= 0)= true;#endregion#region 每个节点都进行若干回合的模拟棋局foreach (Node root in move_Node)for (int i = 0; i < numsim; +i)/* 复制棋局信息 */* 进行模拟 */* 获得根节点的访问次数最多CopyState(root);play_simulation(root);#endregionNode n = GetBestChild(move_Node);的子节点 */private bool CanAddChess pos

20、, type)ype !=return false;ype = type;#region 判断是否可以提子bool bEat = false;bool bValidStep = true;bool result = true;ype = (type)ype = (type)bEat = ChecktryToEat(pos, new + 1, , ref bValidStep) | bEat; if (!bValidStep)result = false;ype = (type)bEat = ChecktryToEat(pos, new , - 1), ref bValidStep) | bEa

21、t; if (!bValidStep)result = false;ype = (type)bEat = ChecktryToEat(pos, new , + 1), ref bValidStep) | bEat;if (!bValidStep)result = false;#endregionype = return result;private bool ChecktryToEat posNewChess, posToEat, ref bool bValidStep) bValidStep = true;chessBlock;if (!isLive(posToEat, out chessB

22、lock)ype != return true;return false;private void CopyState(Node n)for (int i = 0; i < 19; +i)for (int j = 0; j < 19; +j)i, j = new Chessi, j.pos, i, j.type, i, j.step);J, ype)case case case nBlack+;break;case case case nWhite+;break;default:nPending+;break;double fBlack = nBlack + (double)nPe

23、nding / 2;double fWhite = nWhite + (double)nPending / 2;fWhite += ;if (fBlack > fWhite && .ChessType .White)|(fBlack < fWhite && =os;Chess chs = new Chess(pos, type, ;return chs;ype !=return false;ype = type;#region 判断是否可以提子bool bEat = false;bool bValidStep = true;ype = (type)b

24、Eat = tryToEatOnSim(pos, new - 1, , ref bValidStep) | bEat;if (!bValidStep)return false;ype = (type)bEat = tryToEatOnSim(pos, new + 1, , ref bValidStep) | bEat;if (!bValidStep)return false;ype = (type)bEat = tryToEatOnSim(pos, new , - 1), ref bValidStep) | bEat;if (!bValidStep)return false;ype = (ty

25、pe)bEat = tryToEatOnSim(pos, new , + 1), ref bValidStep) | bEat;if (!bValidStep)return false;#endregion(type =if(!bEat)ype= else, .type =return false;tep = ;+;return true;Eat others (Include "jie")Be eaten yourselfQueueposToProcceedreturn true;if (!(pos1) return true;if(!(pos1)return true;

26、if(!(pos1)return true;if (!(pos1) && else, .type =ype;if (type =, .type =, .type =ins)();(node);else if = temp10.wins)new Queue();ype;ype&&ype =type)ype&&ype =type)ype&&ype= type)ypeype = type) ype = ypeelse if (type =(node);List<Node> temp2 = new List<Node&g

27、t;();foreach (Node node in temp1)pos = ;if - <= 1 |- <= 1)(node);continue;if (3, , )(node);Node result ;if > 0)result = temp2 - 1);elseresult = temp1 - 1);return result;#endregion =单人游戏时 =amePlayerside.user = user;gameTabletableIndex.gamePlayerside.someone = true;("0 在第 1 桌第 2 座入座 &quo

28、t;, tableIndex + 1, side + 1);amePlayeranotherSide.someone = true)amePlayeranotherSide.;(user, sendString);amePlayerside.someone = false;gameTabletableIndex.gamePlayerside.started = false;gameTabletableIndex.gamePlayerside.grade = 0;anotherSide = (side + 1) % 2;if(gameTabletableIndex.gamePlayeranoth

29、erSide.someone = true)gameTabletableIndex.gamePlayeranotherSide.started = false;= 0;ength +splitString1.Length);(gameTabletableIndex, sendString);break;case "Ready":amePlayerside.started = true;if (side = 0)anotherSide = 1;sendString = "Message, 黑方已准备。 "elseanotherSide = 0;sendSt

30、ring = "Message, 白方已准备。 "(gameTabletableIndex, sendString);if(gameTabletableIndex.gamePlayeranotherSide.started = true)break;case "NotReady":tableIndex = (splitString1);side = (splitString2);gameTabletableIndex.gamePlayerside.started = false;if (side = 0)sendString = "Messag

31、e,黑方取消准备。 " elsesendString = "Message,白方取消准备。 "(gameTabletableIndex, sendString); tartTimer();break;case "UnsetDot":nsetDot(xi, xj, color);break;case "SetDot":amePlayeranotherSide.user, receiveString);gameTabletableIndex.gamePlayeranotherSide.passfalse;break;case &

32、quot;Pass":amePlayerside.pass = true;if (gameTabletableIndex.gamePlayeranotherSide.pass)amePlayerside.pass = false;gameTabletableIndex.gamePlayeranotherSide.pass= false;gameTabletableIndex.gamePlayerside.startedfalse;gameTabletableIndex.gamePlayeranotherSide.started = false;else(gameTabletableIndex.gamePlayeranotherSide.user,receiveString);break;case "Lose":amePlayeranotherSide.user,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论