matlab编程(五子棋)_第1页
matlab编程(五子棋)_第2页
matlab编程(五子棋)_第3页
matlab编程(五子棋)_第4页
matlab编程(五子棋)_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

精品文档 1欢迎下载 function five M文件的一种类型 以function开启的函数文件 另一种是把一系列命令结 合在一起的一般M文件 figure 1 创建一个新的图形对象 axis 0 12 0 12 坐标轴范围控制命令 axis xmin xmax ymin ymax 用于设置图表各 坐标轴的刻度范围 hold on 图形保持功能 当前坐标轴和图形都将保持 此后绘制的图形都将添加在这个图形 之上 并且自动调整坐标轴的范围 axis off 取消坐标轴背景 在运行的图中不显示坐标 for i 1 11 a b c第一个为起始值 第二个为增量 增量为1 冒号省略 第三个为结束 值 line 1 11 i i 画网格line 1 2 3 4 将画出 1 3 到 2 4 的一条直线 line i i 1 11 end axis equal 横纵坐标使用相同的刻度 使每一个格子成为正方形 qishou 1 判断棋手的颜色 开始的时候是红色 取0时是黑色 boardstatus zeros 10 棋盘状态gt矩阵 取0为空 取1为黑 取2为红zeros 10 将画出 10 10的零阵 代表棋盘上的100个位置 while 1 hold on posflag 1 用于判断下的棋是否有效 取1说明下的棋无效 要重新下 while posflag xpos ypos ginput 1 能从当前的坐标中读取n个点并返回这n个点的x y坐标 均为n x1向量 程序运行时 在界面鼠标会以一个 十字线移动 便是ginput x 的功能 xpos 0 5 floor xpos ceil xpos x y为圆心 floor x 地板函数 即舍去 正小数至最近整数 ypos 0 5 floor ypos ceil ypos ceil x 天花板函数 即加入正小数至最 近整数 例如x 9 5 floo x 9 ceil x 10 if xpos 11 ypos 11 点到棋盘外了 回到上面的循环 continue end for n 1 10 判断棋子是否下到边界 若在边线上 判断无效 继续 if xpos n ypos n continue end rx floor xpos boardstatus是10 10零阵从1 1开始 所以用floor函数 ry floor ypos if boardstatus rx ry 1 boardstatus rx ry 2 该位置已经有棋子 continue 回到上面的循环 end posflag 0 跳出循环 end if qishou 1 drawthego xpos ypos qishou boardstatus rx ry 1 此空为红棋 qishou 0 轮到黑棋下 else drawthego xpos ypos qishou 精品文档 2欢迎下载 boardstatus rx ry 2 此空位黑棋 qishou 1 轮到红棋下 end if iswin boardstatus rx ry 1 if qishou 1 winmsg 黑棋连成了五颗 黑棋胜 else winmsg 红棋连成了五颗 红棋胜 end if iswin boardstatus rx ry 2 winmsg 和棋 msgbox winmsg msgbox Message 创建一个对话框 根据figure窗体大小自动将 Message换行 Message可以是一个字符串向量 字符串矩阵或 者元胞数组 弹出赢家是红方或黑方的或和棋的对话框 return end axis 0 12 0 12 坐标轴范围控制命令 axis xmin xmax ymin ymax 用 于设置图表各坐标轴的刻度范围 axis equal 横纵坐标使用相同的刻度 使每个格子是正方形 end figure 1 创建一个新的图形对象 axis 0 10 0 10 坐标轴范围控制命令 axis xmin xmax ymin ymax 用于设 置图表各坐标轴的刻度范围 axis equal 横纵坐标使用相同的刻度 使每个格子为正方形 上三行为无效语句在程序中 无作用 function drawthego x y flag 在 x y 处画一个棋子 flag取1时画红棋 flag取0时画黑棋 t 0 pi 100 2 pi 画最外面一层的圆周 x y是圆心0 5为半径 其中增量只要足够小就 行不必非取pi 100 若想要画到格子的点上 只需将圆心移到格点 坐标 rx x 0 5 cos t ry y 0 5 sin t if flag 1 fill rx ry r fill x1 x2 x3 x4 y1 y2 y3 y4 k x1 x2 x3 x4 y1 y2 y3 y4 区域内的颜色填充为黑色 k 表 示黑色r是红色 flag取1画红色 flag取0画黑色 else fill rx ry k end function w iswin board x y 判断是否赢棋 w 0 if isempty find board 0 棋盘上下满棋了 判为和棋 find A 计算一个数组 它包含 数组A中非零元素的索引 此if循环判断和棋有误 find A 函数返回的是行列向量 应该统计棋子个数 若为棋盘的最大容量就和棋 w 2 return end 修改如下 在刚下棋的后面判断 flag board x y 刚下的棋 sum 0 精品文档 3欢迎下载 for i 1 10 for j 1 10 if boardstatus i j 1 boardstatus i j 2 该位置已经有棋子 sum sum 1 if sum 100 w 2 return k 0 统计连在一起的棋的个数 for i x 10 统计从此子开始 横向到右边界的同色个数 if board i y flag 判断在此过程中 棋子与刚下的棋的颜色是否一样 不一样就跳 出循环 break end k k 1 end if k 5 w 1 return end for i x 1 1 1 统计从此子开始 横向到左边界的同色个数 if board i y flag 判断在此过程中 棋子与刚下的棋的颜色是否一样 不一样就跳 出循环 break end k k 1 end if k 5 w 1 return end k 0 for i y 10 统计从此子开始 纵向到上边界的同色个数 if board x i flag 判断在此过程中 棋子与刚下的棋的颜色是否一样 不一样就跳 出循环 break end k k 1 end if k 5 w 1 return end for i y 1 1 1 统计从此子开始 纵向到下边界的同色个数 if board x i flag 判断在此过程中 棋子与刚下的棋的颜色是否一样 不一样就跳 出循环 break end k k 1 end 精品文档 4欢迎下载 if k 5 w 1 return end k 0 统计主对角线 斜向上同色子的个数 for i 0 10 if x i 10 break end if y i 10 break end if board x i y i flag 判断在此过程中 棋子与刚下的棋的颜色是否一样 不一样 就跳出循环 break end k k 1 end if k 5 w 1 return end for i 1 10 统计主对角线 斜向下同色子的个数 if x i 0 break end if y i 5 w 1 return end k 0 统计副对角线 斜向上同色子的个数 for i 0 10 if x i10 break end if board x i y i flag 判断在此过程中 棋子与刚下的棋的颜色是否一样 不一样 精品文档 5欢迎下载 就跳出循环 break end k k 1 e

温馨提示

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

评论

0/150

提交评论