0

さて、私はチェスのゲームで長い道のりを歩んでいます! ただし、大きな問題があります。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値はどうですか?? うーん、これはとても複雑です

4

2 に答える 2

1

試してみてくださいchessBoard[x-1][8-y]

そのように:

  • x = 1-> x-1 = 0
  • x = 8-> x-1 = 7

と:

  • y = 1-> 8-y = 7
  • y = 8-> 8-y = 0

必要なものだけ。

更新

ここには多少の混乱があるようです...要約しましょう:2Dマトリックスを配置する方法は8つ(最低限合理的)です:2つのx符号×2つyの符号の回数切り替えx/yまたは切り替えなし= 2*2*2 = 8。あなたはただあなたのお気に入りを選ぶ必要があります。

まず、簡単にするために、との両方がから包括的であるとx仮定しyます。そうでない場合、修正は簡単なはずです。07

配列名を、とすると、次のようbになります。

  1. b[x][y]
  2. b[x][7-y]
  3. b[7-x][y]
  4. b[7-x][7-y]
  5. b[y][x]
  6. b[y][7-x]
  7. b[7-y][x]
  8. b[7-y][7-x]

さて、どれ?簡単。たとえば、x増加するときは右に移動する必要があると言います...では、どこが正しいのでしょうか。まあ、それはあなたがマトリックスを描く方法に依存します(私はあなたのASCIIアートを見ましたが、それはかなり曖昧です)、しかしavobe 8オプションから、あなたが言うように2つだけが動くべきです。これら2つのうち、1つはy上向き、もう1つは下向きになります。両方を試して、もう一度選択してください。

于 2012-10-01T20:13:08.930 に答える