基于c的五子棋游戏的设计与实现(编辑修改稿)内容摘要:
ckElement)()。 [ 1] =。 [r 1] = + 1。 //在棋盘上退一棋 13 points[[tempStackElement.pointNumber 1].X, [umber 1].Y] = 2。 (tempStackElement)。 } else//栈顶元素中点均已试过 { //寻找栈顶元素中点的最好结局 totalresult = [0]。 for (i = 0。 i。 i++) if (totalresult [i]) totalresult = [i]。 //寻找最佳步数 if (totalresult == ) { bestStepNumber = M + 2。 for (i = 0。 i。 i++) if (totalresult == [i] amp。 amp。 bestStepNumber [i]) bestStepNumber = [i]。 } else//totalresult==或 lose { bestStepNumber = 0。 for (i = 0。 i。 i++) if (totalresult == 14 [i] amp。 amp。 bestStepNumber [i]) bestStepNumber = [i]。 } if ( 0)//栈非空 { tempStackElement = (StackElement)()。 [ 1] = (result)(0 totalresult)。 [r 1] = bestStepNumber。 //在棋盘上退一棋 points[[tempStackElement.pointNumber 1].X, [umber 1].Y] = 2。 (tempStackElement)。 } } } } for (i = 0。 i。 i++) if (totalresult == [i] amp。 amp。 bestStepNumber == [i]) break。 bestPoint = [i]。 return true。 15 10) 寻 找 最 佳 的 五 个 点 , 并 形 成 栈 元 素 ——FindBestFivePointsAndFormAStackElement 函数主要是找最佳点,并形成栈元素。 如果找到,返回 true;否则。 返回 false。 要找 最佳点,就是找权值最大的点。 首先,计算出棋盘上每一个点的权值,并找出最大的一 个。 代码如下: int[,] qpPower = new int[15, 15]。 bool blnHaveFound。 int x, y, i, max。 = 0。 for (x = 0。 x 15。 x++) for (y = 0。 y 15。 y++) qpPower[x, y] = GetqpPower(qzcolor, x, y)。 for (i = 0。 i 5。 i++) {//求第 i个最佳点 max = 0。 for (x = 0。 x 15。 x++) for (y = 0。 y 15。 y++) if (max qpPower[x, y]) max = qpPower[x, y]。 for (x = 0。 x 15。 x++) { blnHaveFound = false。 for (y = 0。 y 15。 y++) if (max == qpPower[x, y]) { [i] = new Point(x, y)。 ++。 qpPower[x, y] = 1。 blnHaveFound = true。 break。 } if (blnHaveFound) break。 } 16 } if ( == 0) return false。 else { = qzcolor。 = 0。 return true。 } 11) 求权值 —— GetqpPower 定义八个方向:左,右,上,下,左上,右下,左下,右上。 代码如下: left = new Point((0, x 4), y)。 right = new Point((14, x + 4), y)。 top = new Point(x, (0, y 4))。 down = new Point(x, (14, y + 4))。 temp = (x , y )。 leftTop = new Point(x temp, y temp)。 temp = (x , y)。 leftDown = new Point(x temp, y + temp)。 temp = ( x, y )。 rightTop = new Point(x + temp, y temp)。 temp = ( x, y)。 rightDown = new Point(x + temp, y + temp)。 如果颜色是黑色,处理黑棋连子情况:如果这 个点没有下棋子,则在此置为 1,表示这点下的是黑棋。 然后看这个点各个方向黑棋子的数目是多少,并看是否是活棋,再作出处理。 最后,将此点处置为 2。 表示这点没有下棋子。 处理白棋连子情况: 在此点处置为 0,表示这点下的是白棋。 然后看这个点各个方向白棋子的数目是多少,并在此放一白棋破坏黑棋,再做出相应的处理。 如果各个方向上出现 3 个的活 棋。 就将tempActive3自加 1。 最后,将此点处置为 2。 表示这点没有下棋子。 设置权值:形成黑棋五个的权值设为 150000;形成白棋五个的权值设为 140000;形成黑活棋个数为 4或形成两条 以上黑棋个数为 4的权值设为 130000;形成一条黑棋个数为 4并且一条为黑活棋个数为 3的权值为 120200;形成一条黑棋个数为 4或一条 17 以上黑棋个数为 3的权值 110000;形成白活棋个数为 4或形成两条以上白棋个数为 4的权值设为 100000;形成一条黑棋个数为 4并且一条为黑活棋个数为 3的权值为 120200;形成一条白棋个数为 4 并且一条为白活棋个数为 3 的权值为 90000;两条以上白活棋个数为 3 的权值为 80000;形成一条白棋个数为 4 或一条以上白棋个数为 3 的权值为 70000;同样,如果颜色为白色,做法和以上的差不多。 代码如下 : if (qzcolor == 1) { if (points[x, y] != 2) return 2。 else { /// ///处理黑棋连子情况 /// points[x, y] = 1。 //左右方向 connectCount = ConnectqpCount(1, left, right)。 [connectCount]++。 if (ActiveConnectqp(1, connectCount, left, right)) { [connectCount]。 [connectCount]++。 } //上下方向 connectCount = ConnectqpCount(1, top, down)。 [connectCount]++。 if (ActiveConnectqp(1, connectCount, top, down)) { 18 [connectCount]。 [connectCount]++。 } //左上 _右下方向 connectCount = ConnectqpCount(1, leftTop, rightDo。基于c的五子棋游戏的设计与实现(编辑修改稿)
相关推荐
序; 业务层:包括各 种业务规则和逻辑功能,业务功能 完成如账号验证和字符处理这样的业务; 数据层:这 层为 上面一面 层提供数据 的服务,这层 作为解决方案文件中的Conn 类来实现的。 .NET Framework 概述 .NET Framework 它 是 基 于 .NET 平台的编程 方式 , 其 公 用 语言运行库 包括CLR, Common Language Runtime 和
.NET Framework 概述 .NET Framework 它 是 基 于 .NET 平台的编程 方式 , 其 公 用 语言运行库 包括CLR, Common Language Runtime 和 .NET Framework 类库 、 和 Windows 窗体 [7]。 它提供了托管执行环境、简化 了 开发 及 部署 而且集成了 各种编程语言。 .NET Framework 实现 了
格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。 事实上,代码管理的概念是运行库的基本原则。 以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。 .NET Framework 的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面 (GUI) 应用程序,也包括基于
限 switch(i) { case 1: //调秒 { if(j==0) { sec++。 if(sec=60) { sec=0。 } else { } } else { sec。 if(sec=0) { sec=59。 } } break。 } case 2: { if(j==0) { min++。 if(min=60) { min=0。 } else { } } else { min。
即可,在这里就不在多说。 时钟电路 : 此电路的作用是为单片机提供 12MHz 时钟信号,是单片机有节奏的工作,它由两个谐振电容、一个晶振、和单片机内部的振荡电路构成, 其电路如图 23所示 泸州职业技术学院毕业论文: 基于 AT89C51 单片机的多功能电子万年历的设计 第 9 页 共 25 页 图 23 时钟电路 复位电路 : 其作用是使单片机回到初始状态,它由一个开关和一个上拉电阻构成
设计采用国内生产的通用元件,成本较低廉。 本设计将以上功能结合起来加 以改进发展,使其在整个倒车过程中自动测量车尾到最近障碍物的距离,并用数字显示出来,在倒车到极限距离时会发出急促的警告声,提醒驾驶员注意刹车,如果和制动系统联系在一起也可以形成自动刹车。 雷达不仅成为军事上必不可少的电子装备,而且广泛应用于社会经济发展 (如气象预报、资源探测、环境监测等 )和科学研究 (天体研究、大气物理