本文主要是介绍Numpy练习小例题(2)--创建一个8*8的国际象棋棋盘(黑块为0,白块为1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
创建的国际象棋棋盘如下图所示:
首先可以创建一个全0或者全1的8*8数组--在这里我创建的是全0数组
Q=np.zeros((8,8),dtype=int)
print(Q)
第一步:观察到偶数行的第一个都为1,将全0的数组每偶数行都变为1
Q[1::2]=1
Q
第二步:我们需要把偶数行的奇数列变为1,而不把每一行都变为1
Q[1::2,::2]=1
print(Q)
注意:不能像以下代码这样子去书写:(这样写会导致一直不能输出新的代码结果,不用问为什么,我已经尝试了半个小时,就是不能这样子分开写!!!!)
Q[1::2]=1
print(Q)
Q[1::2,::2]=1
print(Q)
第三步:又观察到奇数行的偶数列为1,先将奇数行都变为1
Q[::2]=1
print(Q)
第四步:将奇数行的偶数列为1
Q[::2,1::2]=1
print(Q)
(注意:该部分和上述描述的坑一样,都是不能够分开写的,分开写不能获得新数组的结果,我的Anaconda和jupyter版本都是最新的)
总结完整代码如下:
#首先可以创建一个全0或者全1的8*8数组--在这里我创建的是全0数组
Q=np.zeros((8,8),dtype=int)#第一步:观察到偶数行的第一个都为1,将全0的数组每偶数行都变为1 第二步:我们需要把行列交叉的点都变为1,而不把每一行都变为1
Q[1::2,::2]=1#第三步:观察到奇数行的偶数列为1,先将奇数行都变为1 第四步:将奇数行的偶数列都变为1
Q[::2,1::2]=1
print(Q)
PS:国际象棋(Chess),又称西洋棋,是—种二人对弈的棋类游戏。棋盘为正方形,由64个黑白(深色与浅色)相间的格子组成;棋子分黑白(深色与浅色)两方共32枚,每方各16枚。
国际象棋的规则:
1、布子规则:
无论是白方视野还是黑方视野,棋盘的最右下角的一格一定要是白色,白后一定要放在白格上,黑后一定要放在黑格上。并且,白王一定在e1格,黑王一定在e8格。
2、行棋规则:
王(K):横、直、斜都可以走,但是每次限走一步。王是不可以送吃的,也就是任何被敌方控制的格子,己方王都不能走进去。否则,算“送王”犯规,三次就要判负。
(1)除易位时以外,王可以走到不被对方棋子攻击的任何相邻格子,而且只能走一步。
(2)易位是由王和己方任何一个车一起进行的仍被视作王的一步的走法。
后(Q):横、直、斜都可以走,步数不受限制,但是不能越子。
车(R):横、竖都可以走,步数不受限制,不能斜走。除王车易位外不能越子。
象(B):只能斜走。格数不限,不能越子。开局时每方有两象,一个占白格,一个占黑格。
马(N):每步棋先横走或者直走一格,然后再往外斜走一格;或者先斜走一格,最后再往外横走或者竖走一格(也就是走“日”字)。可以越子,没有中国象棋中的“蹩马腿”限制。
兵(P):只能向前直走,每次只能走一格。但是走第一步时,可以走一格或两格。兵的吃子方法与行棋方向不一样,它是直走斜吃,也就是如果兵的斜进一格内有对方棋子,就可以吃掉它而占据该格。
这篇关于Numpy练习小例题(2)--创建一个8*8的国际象棋棋盘(黑块为0,白块为1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!