我有以下問題
在國際象棋中,象棋對角移動,任意數量的方格。給定棋盤的兩個不同方格,確定主教是否可以一步從第一個方格走到第二個方格。
程式接收從 1 到 8 的四個數字作為輸入,指定起始方格的列號和行號以及結束方格的列號和行號。如果 Bishop 可以一步從第一個方格移動到第二個方格,程式應該輸出 YES,否則輸出 NO。
例如:
輸入:2 3 5 6
輸出:
是的
假設單元格從左到右從下到上編號,即左下角單元格的列號為 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')
uj5u.com熱心網友回復:
要檢查主教移動的可能性(在現有單元格中),只需檢查水平位移的絕對值是否等于垂直位移的絕對值(因此兩個位置位于同一對角線上)
dx = abs(final_coord_x - initial_coord_x)
dy = abs(final_coord_y - initial_coord_y)
if (dx == dy) and (dx > 0):
legal move
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/324833.html
