簡體   English   中英

Java Abacus,在使用for循環繪制計數器時遇到麻煩

[英]Java Abacus, Having trouble with the for loop to draw my counters

就像標題所說的那樣,在最終在算盤上繪制計數器時,我的Java代碼遇到了麻煩。 代碼可以編譯並運行,但是計數器是從第一行而不是第一行開始繪制的。 最重要的是,計數器不會在每一列中堆疊,一個計數器會出現,並根據單擊的按鈕的正確性在列中上下移動,但是計數器應該是在我單擊鼠標左鍵時加或在我單擊鼠標右鍵時減。

我已經花了幾個小時,我確定這很愚蠢,但是我的大腦已經停止工作,我想不出任何解決方案。

無論如何,這是我的代碼。

AbacusPanel.java

public void paint(Graphics g)
{
    g.setColor(Color.gray);
    g.fillRect(0,0,getWidth(), getHeight());
    g.setColor(Color.black);

    Graphics2D g2 = (Graphics2D)g;
    // we'll use Graphics2D for it's "draw" method -
    // neater than the Graphics "drawRect" suppled
    // (which you could also use)

    for (int i = 0;i<numCols;i++)
    {
        for(int j = 0;j<numRows;j++)
        {
            g2.draw(getRect(i,j));
        }
    }

    for(int thisCol= 0; thisCol < numCols; thisCol++)
    {
        for(int thisRow = 0; thisRow < numRows; thisRow++)
        {
            for(int counters=0; counters<=myAbacus.getNumCounters(thisCol); counters++)
            {
                Rectangle r2 = getRect(thisCol,myAbacus.getNumCounters(thisCol));
                g2.setColor(Color.red);
                g2.fillOval(r2.x, r2.y, r2.width, r2.height);
            }
        }
    }

}

希望外面有人可以向我指出正確的方向,如果沒有按照您的意願格式化,對不起。 這是我的第一個問題帖子,我試圖使它看起來更簡單。

根據我的評論:

當您繪制石頭的占位符時,您將在列上然后在行上進行迭代。 但是,當繪制計數器時,您僅遍歷列而不行。 為什么不行呢? 而且,由於您正在嘗試獲取Mancala板上每個位置的計數器數量,因此getNumCounters()的結果不應該同時將列和行作為輸入嗎?

在回答您的第二個問題時,我不得不相信getNumCounters()必須將行和列都作為輸入。 由於在Mancala板上有兩行,並且結石的數量取決於該列以及它在第一行還是第二行中,所以否則就沒有意義了。

另外,要考慮的第三件事。 在矩形中,繪制計數器時,似乎需要改變它們的位置-在我看來,每個計數器都將堆疊在一起,所以20個計數器看上去沒有與1不同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM