对角线主教用Python在棋盘上移动

2024-06-26 13:46:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下问题

在国际象棋中,主教沿对角线移动,任意数量的方块。给定棋盘上两个不同的方块,确定主教是否能在一次移动中从第一个方块移动到第二个方块

程序接收从1到8的四个数字作为输入,指定起始方块的列号和行号以及结束方块的列号和行号。如果主教可以在一次移动中从第一个正方形移动到第二个正方形,程序应该输出YES,否则输出NO

例如:

输入: 2. 3. 5. 六,

输出:

假设单元格从左到右、从下到上编号,即左下单元格的列号为1,行号为1,而右下单元格的列号为8,行号为1

我走了多远?

我已经试着去检查主教是否斜移,但是它可以移动任何一条对角线,所以这是不正确的。有人能给我一些提示吗

我的代码


initial_coord_x=int (input('enter the initial x'))
initial_coord_y=int (input('enter the initial y'))
final_coord_x=int (input('enter the final x'))
final_coord_y=int (input('enter the final y'))
if final_coord_x<=8 and final_coord_y<=8:
  if final_coord_x < initial_coord_x and final_coord_y > initial_coord_y:
    print ('you moved legally')
  elif final_coord_x < initial_coord_x and final_coord_y < initial_coord_y:
    print ('you moved legally')
  elif final_coord_x > initial_coord_x and final_coord_y > initial_coord_y:
    print ('you moved legally')
  elif final_coord_x > initial_coord_x and final_coord_y < initial_coord_y:
    print ('you moved legally')
  else:
    print ('no!')


else:
  print ('illegal move, you moved outside the chessboard')


Tags: andtheyouinputinitial方块finalint
1条回答
网友
1楼 · 发布于 2024-06-26 13:46:23

为了检查bishop移动的可能性(在现有单元),检查水平位移的绝对值是否等于垂直位移的绝对值就足够了(因此两个位置位于同一对角线上)

dx = abs(final_coord_x - initial_coord_x)
dy = abs(final_coord_y - initial_coord_y)
if (dx == dy) and (dx > 0):
     legal move 

相关问题 更多 >