五子棋--软件工程课程设计内容摘要:
t1, point2)) return false。 if (count == 5) return false。 else if (count == 4) return true。 else { bool blnFlag。 points[x, y] = qzcolor+1。 blnFlag = !ActiveConnectqp(qzcolor, count 1, point1, point2)。 points[x, y] = qzcolor。 return blnFlag。 } 9) 查看 是否是最好的点 —— FindBestPoint 首先,查看有没有最佳点,并形成栈元素。 如果没有,返回 false;否则,将这栈元素压入回溯栈中。 当栈非空时,将栈元素弹出,如果栈中的 pointNumber 小于 pointCount 时,在棋盘上下一棋。 如果赢棋,不再继续探测,并在棋盘上退一棋。 如果和棋的话,也不再继续探测,并在棋盘上退一棋。 否则,继续下棋并探测。 如果栈顶元素无点,弹出后栈必非空,并在棋盘上退一棋。 如果栈顶元素中点均已试过,则寻找栈顶元素中点的最好结局,并寻找最佳步数。 实现的代码如下: result totalresult =。 int i, bestStepNumber = 0。 StackElement tempStackElement = new StackElement()。 if (first) { qzcolor = 0。 if (!FindBestFivePointsAndFormAStackElement(qzcolor, ref tempStackElement)) return false。 } else { qzcolor = 1。 if (!FindBestFivePointsAndFormAStackElement(qzcolor, ref tempStackElement)) return false。 } (tempStackElement)。 while ( 0)//栈非空 { tempStackElement = (StackElement)()。 if ( ) { //在棋盘上下一棋 points[[].X, [].Y] =。 if (Win(, [])) {//赢棋,不在继续探测 [] =。 [] = + 1。 //在棋盘上退一棋 points[[].X, [].Y] = 2。 ++。 (tempStackElement)。 } else if ( == M 1) {//将此元素压入栈后栈满,不在继续探测 [] =。 [] = M。 //在棋盘上退一棋 points[[].X, [].Y] = 2。 ++。 (tempStackElement)。 } else {//另一方继续下棋向下探测 ++。 (tempStackElement)。 FindBestFivePointsAndFormAStackElement(+1, ref tempStackElement)。 (tempStackElement)。 } }//end if else//栈顶元素无点或点均已试过 { if ( == 0)//栈顶元素无点,且弹出后栈必非空 { tempStackElement = (StackElement)()。 [ 1] =。 [ 1] = + 1。 //在棋盘上退一棋 points[[ 1].X, [ 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 == [i] amp。 amp。 bestStepNumber [i]) bestStepNumber = [i]。 } if ( 0)//栈非空 { tempStackElement = (StackElement)()。 [ 1] = (result)(0 totalresult)。 [ 1] = bestStepNumber。 //在棋盘上退一棋 points[[ 1].X, [ 1].Y] = 2。 (tempStackElement)。 } } } } for (i = 0。 i。 i++) if (totalresult == [i] amp。 amp。 bestStepNumber == [i]) break。 bestPoint = [i]。 return true。 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。五子棋--软件工程课程设计
相关推荐
随着政府工作信息化进程的推进,中央、省、地市、县等各级政府以及政府的各部门机构都建立了自己的网站,发布一些政府要闻、公开信息、政策法规以及相关公共资源信息,方便人们查看。 做一做 ( 1)浏览“中华人民共和国中央人民政府”门户网站 在地址栏中输入:“ 18 华人民共和国中央人民政府”门户网站的首页 ( 2)浏览首页,观察首页设置了哪些栏目,这些栏目在首 页是如何分布。 (
76。 手指开合:177。 5~ 10176。 抓重 Kg 运动速度、控制精度的确定 因为本系统是教学演示用的,为节约资金,对速度和精度要求较低。 控制系统的确定 本 系统采用 89C51 单片机控制,臂部伸缩、回转、腕部升降、手爪开合采用步进电机开环控制;腕部回转和手爪回转采用直流电机闭环控制,毕业设计说明书论文 1961660126 课件之家的资料精心整理好资料
73 致谢 74 参考文献 76 附录 A 译文 77 附录 B 外文文献 错误 !未定义书签。 附录 C 主电路图 错误 !未定义书签。 1 1 绪论 煤矿生产管理中的问题 煤矿的生产分为露天开采和地下开采, 而 我国 95%的煤矿开采是地下开采作业 , 而地下开采的危险性较之露天开采要大的多。 我国煤层自然赋存 条件复杂多变,影响煤矿安全生产的因素众多,水、火、瓦斯、煤尘
幻灯片 背景填充方式 ;学会给幻灯片 换不同背景 ; 能够向别人介绍 自己的经验 ,培养学生的表达能力。 教学重点: 幻灯片 不同填充方式。 教学难点: 多张幻灯片选择不同的填充方式。 教学环节 教师活动 学生活动 设计意图 引入 一、激情引入 我们上节课在介绍我自己,大家都把自己的精彩介绍写得非常有才华,但是,有没觉得这么张幻灯片留着白色的底好看吗。 今天我们就来学习,给幻灯片背景换换装。
外圆 —— 校验。 图 32 轴的零件图 表 轴的工艺路 线 序号 工序名称 工序内容 设备 1 下料 45钢 2 车削 三爪卡盘夹持工件,车端面钻中心孔,用尾座顶尖顶住,粗车φ 5φ 60、φ 6φ 70的 4个台阶,直径长度均留 2 mm余量 车床 调头,三爪卡盘夹持工件另一端车端面,保证总长 331cm,钻中心孔,用尾座顶尖顶住,粗车φ 7φ 65的台阶,直径长度均保留 2mm余量 3
很多人的心得,大家普遍说合订本字小,翻起来不方便。 而单行本就没有这个问题了,而且空白处多,可以写下很多自己总结的东西。 后来发现确实是这样的。 对于学生来说,购买规范可是一笔不小的开支啊。 确实是如此,但是我不建议大家去借别人 的规范。 因为注册考试,考的就是对规范的熟练程度。 我们要做的就是在复习过程中,通过练习,不断的完善自己的规范,从而达到我们做题,翻到规范所在页