在棋盘上移动骑士(Python 3.2.2)
我今天接到一个班级项目,两个星期后就要交。我需要让国际象棋中的骑士在棋盘上移动(只移动骑士,不涉及其他棋子),我已经开始写了一些代码:
import math
print("This is the program for the knight's movement in chess, Press Y when you are ready to move on.")
input ("Would you like to move on?")
position=int(input("What position is your knight in?"))
print("If your knight is in the position",position,"you may move either 2 forward and 1 left, or 2 forward and 1 right, or the other way so 2 backward 1 left, or 2 backward and 1 right.")
...但是我不知道接下来该怎么做。有没有人能给我一些建议?
我只是想要一些建议,并不是在寻求答案,所以请不要告诉我去自己思考。我只是卡在一个问题上,找不到解决办法。谢谢你们关注我的问题。祝好,Roscomadrid
1 个回答
2
先暂时放下代码,花点时间思考一下该如何解决这个问题。像这样的题目通常会涉及几个步骤:
1) 你打算用什么数据结构来表示棋盘?
如果你问十个人这个问题,可能会得到十种不同的答案。想想几种不同的选择,然后选出你最喜欢的一种。一个简单的例子是用一个8x8的数组,但这样做有什么优缺点呢?有没有更好的方法呢?
2) 我该如何表示一个棋子移动?
同样,这里也有很多选择。你可以创建一个 Move
类,或者用一个 (fromSquare, toSquare)
的元组等等。这个问题的答案在一定程度上会依赖于你在第一步选择的数据结构。
3) 我该如何生成合法的骑士移动集合?
这可能是最棘手的部分。你需要设计一个算法,计算出每一个合法的 (from, to)
对,使用你选择的移动表示方式。你还需要注意棋盘边缘的情况,以确保骑士不会掉下去,或者绕到棋盘的另一边。
当你对这些问题都有了答案后,重新坐下来,慢慢地写代码。一次解决一个问题;也许第一个小目标可以是打印出当前棋盘的位置?
祝你在作业中好运。