到今天为止闷头肝了3天,用js达成了围棋界面,实现了一定的基本逻辑(提子之类的2333)
棋盘的画法参考了这篇文章和代码,感觉还是很容易理解的(呃……:before和:after伪元素的使用还是很不熟练啊……)
http://blog.csdn.net/sinat_38077266/article/details/72730203
在逻辑上难点主要在于提子和落子是否合法(禁入点)的操作,这就跟棋子的气相关了(用个二维数组吧233)。我这里是在每次落子时进行判断。先判断这个落子是否能触发提子,如果能提子的话就不需要判断这个落子是否合法了,否则就要判断这个落子是否合法。虽说判断顺序是先提子后合法,然而写代码函数的时候先写的是是否合法。这里通过递归得到与落子相连的棋子,同时判断相连的棋子是否有气(因为递归所以可能会发生重复判定导致死循环,所以需要另一个二维数组来判定是否判定过该棋子),只要有一个棋子有气就说明这块棋是不会被提子的,即落子是不会导致这个棋子所在的这块棋没气,即落子是合法的。
回过头来说为什么要先写这个合法函数,因为这个函数能判定棋的死活,那样在提子的函数里调用这个函数就会方便许多