2

さて、今私はMatlabコーディングを介してコネクト4ゲームを作成しようとしています。今のゲームはまだ幼児ですが、私の問題は、各グリッドの正方形に図形をプロットできないか、「円」の図形をまったくプロットできないことです。可能な限り助けてください。また、connect 4 matlabチュートリアルについて誰かが知っているなら、それは大いにありがたいです。

  function [] = Kinect4(nrRows, nrCols)
  board = zeros(nrRows, nrCols);

  nrMoves = 0;

        set(gca, 'xlim', [0 nrCols]);
        set(gca, 'ylim', [0 nrRows]);

        for r = 1 : 1 : nrRows - 1
        line([0, nrCols], [r, r], ...
        'LineWidth', 4, 'Color', [0 0 1]);
        end

        for c = 1 : 1 : nrCols - 1
        line([c, c], [0, nrRows], ...
        'LineWidth', 4, 'Color', [0 0 1]);
        end

  DrawBoard(nrRows, nrCols)
  hold on;

  while nrMoves < nrRows * nrCols                    %Computes ability to move polygon
       [x, y] = ginput(1); 
        r = ceil(y); % convert to row index
        c = ceil(x); % convert to column index

angles = 0 : 1 : 360;
        x = cx + r .* cosd(angles);
        y = cy + r .* sind(angles);

        plot(x, y, 'Color', [1 1 1], 'LineWidth', 3);
        axis square;
  end 
  end 
4

1 に答える 1

2

コードの修正点は次のとおりです。

  1. 行を削除しましたDrawBoard(nrRows, nrCols)。すでにボードを描いているのでコメントとして入れているのか、それともDrawBoard別の機能なのかわからない。
  2. の計算を変更してrcセルの中心にペグを入れます。これは、それぞれから0.5を引くことによって行われます。
  3. x = cx + r .* cosd(angles);行をに変更しましたx = c + 0.5*cosd(angles);。前の変数では、変数cxは未定義でrあり、ペグの半径ではなく0.5、適切な変数に置き換えることができます。ただし、中心がx軸に沿ってオフセットされた半径の円を0.5(セルに収まるように)描画するという考え方です。y軸に沿ってペグをオフセットするcための同様の変更。y
  4. plotコマンドの色を[0 0 0]黒に変更しました。[1 1 1]白で、白い背景で見ることは不可能です:)。'k'黒、'b'青などに使用することをお勧めします。基本的な色の仕様については、matlabのドキュメントを参照してください。
  5. ペグが下に移動するように、重力をまだ実装していないと思います。また、セルがすでにいっぱいになっていることを確認する必要があります。これらすべての改善およびその他の改善(不要なforループの削除、ペグを描画するためのより良い方法など)は、機能するコードに到達すると残ります。

これが「機能する」コードです。

function [] = Kinect4(nrRows, nrCols)
    board = zeros(nrRows, nrCols);

    nrMoves = 0;

        set(gca, 'xlim', [0 nrCols]);
        set(gca, 'ylim', [0 nrRows]);

        for r = 1 : 1 : nrRows - 1
            line([0, nrCols], [r, r], ...
            'LineWidth', 4, 'Color', [0 0 1]);
        end

        for c = 1 : 1 : nrCols - 1
            line([c, c], [0, nrRows], ...
            'LineWidth', 4, 'Color', [0 0 1]);
        end

        axis square;
        hold on;

    while nrMoves < nrRows * nrCols        %Computes ability to move polygon
        [x, y] = ginput(1); 
        r = ceil(y) - 0.5;
        c = ceil(x) - 0.5;

        angles = 0 : 1 : 360;
        x = c + 0.5*cosd(angles);
        y = r + 0.5*sind(angles);

        plot(x, y, 'Color', [0 0 0], 'LineWidth', 3);
    end 
end 
于 2012-12-06T03:30:02.703 に答える