さて、私はチェスのゲームで長い道のりを歩んでいます! ただし、大きな問題があります。board[4][3] に駒が必要な場合、チェス盤がインデックスとしてメモリ内でどのように見えるかを次に示します。
y axis
0 1 2 3 4 5 6 7
1
x 2
a 3
x 4 X
i 5
s 6
7
ユーザーが画面を見たときにこれが見えるように、x 軸にメモリ インデックスがどのように見えるかに番号を付けました。私のコードは現在、これは d,6 でポーンを取得するために入力しなければならないものです: user input = wf4 これは、プログラムで Board[5][3] に変換されます。ご覧のとおり、wd6 と入力して d と 6 まで進みたいと思います。しかし、プログラムは最初に 5 下がり、3(d) になります。
1 R N B Q K B N R
x 2 P P P P P P P P
a 3
x 4
i 5
s 6 P
7 P P P P P P P
8 R N B Q K B N R
a b c d e f g h
y-axis
座標から 1 を引く式を用意したので、ユーザーが (e,8) と入力すると、チェスボード [4] [7] でピースが検索されますが、[4] [ 7] はダウン 4 オーバー 7 です。オーバー 4 ダウン 7 が必要です。私が本当に欲しいのは、オーバー 4 アップ 1 です! 次のようになります。
8 R N B Q K B N R
y 7 P P P P P P P P
a 6
x 5
i 4
s 3
2 P P P P P P P P
1 R N B Q K B N R
a b c d e f g h
x-axis
ここで、e, 1 と入力して King を取得します。これを行うには、左上隅ではなく、左下隅を 0,0 にする方法を見つける必要があります。基本的に、これを行うにはどうすればよいですか?2D 配列インデックスを数学的スタイルのグリッドに変換するにはどうすればよいですか?!?! EDIT*** 完璧な例です。私は、入力値 source.x = 2 および source.y = 6 にポップする c, 6 を入力するプレーヤーでした。これを行うコードがあります。ここで必要なのは、ボード [source.x] [source.y] に、プレイヤーがボード [2] [2] を意味したことを伝えることです。見る?そして、最後の図を使用して、この入力のリストとボードが確認する必要があるものを確認するため、直接的な式は表示されません。
- input = 1,4 array[4][1] は同じピースを取得します
- input = 5,7 array[1][5] は同じピースを取得します
- input = 2,6 array[2][2] は同じピースを取得します
- input = 3,7 array[1][3] は同じピースを取得します
したがって、入力 x を配列の y インデックスにスワップする必要があることは明らかです。しかし、x値はどうですか?? うーん、これはとても複雑です