写给自己看的五子棋人机思路!
写给自己看的五子棋人机思路!
写给自己看的五子棋人机思路!
重要的事情说3边
做个一类,假设这个类为电脑方所用.在电脑下的时候,先创建一个临时的数字棋谱,把真实的数字棋谱获取过来.在临时的棋谱上做设想:把自己设想成敌方,每一个位置都下一边,再把每一步的危险都记录到日记里,并给每个危险都标识一个危险级别(如:1,2,3)越高越危险.可以做到监测敌方的所有威胁,同时换成自己也可以做到监测所有对自己有利的落子位置,也同样有一个级别.当有利级别大于等于危险级别时,下有利的位置,反之下有危险的位置.
监测危险(或有利)的想法 横向监测
双层循环每个位置,如果可以下就假设落子,把落子的位置的值记录到临时变量a里,在落子的位置向左循环遍历6次(可向左循环6次时),全部记录到a变量里,当遇到非己方的棋子时(如果自己棋子的类型是1,遇到0或2时),记录下当时的棋子并退出循环,然后再向右循环遍历6次(可向右循环6次时),同样抄作.则变量a的值会是(非己方类型,n*己方类型)或(n*己方类型,非己方类型)或(非己方类型,n*己方类型,非己方类型)再在a变量里搜索如(01110),(011110)是否存在,记录到日记里同时标上危险级别.(列向,斜向同样思想)
(01110)意思是下一步会出现三个连在一起,两边是空的为危险级别1
(011110)意思是下一步会出现四个连在一起,两边是空的为危险级别2
把判断是否赢棋的函数带到监测危险的循环里,如果下一步有赢棋的位置,记录到日记,危险级别为3