簡體   English   中英

更改顏色/循環種類(java)

[英]changing colors/cycling kind of (java)

我試圖讓Mosaic在一個重復的循環中添加紅色,然后是綠色,然后是藍色,直到顏色為白色,又名(r/g/b/ >= 255)為止。

我寫了各種if語句,因為我相信這就是我要尋找的循環。 我已經到了停頓點。 問題在於,循環一直循環到白色,然后一直保持藍色(我假設是重新設置紅色。它比洋紅色更青色)。 我假設這是因為循環在main()例程的while(Mosaic.isOpen())循環中重新循環后再也不會變成藍色。 另一個版本(此后我發布了該版本,其中我變得很沮喪)。反復添加然后重置為藍色(我相信,因為它循環為黃色,然后重置為綠色)。

這是由main()例程運行和重新運行的for循環。

  static void colorChange(int x,int y) {
        int red = Mosaic.getRed(x,y);
        int green = Mosaic.getGreen(x,y);
        int blue = Mosaic.getBlue(x,y);
        if (red <= green || red <= blue) {
            if (red <= 240) {
                Mosaic.setColor(x, y, red + 6, green, blue);
            } else {
                Mosaic.setColor(x, y, 0, green, blue);
            } //
        } else if (green <= blue || green <= red) {
            if (green <= 240) {
                Mosaic.setColor(x, y, red, green + 6, blue);
            } else {
                Mosaic.setColor(x,y,red,0,blue);
            } //
        }  else if (blue <= red && blue <= green) {
            if (blue <= 240) {
                Mosaic.setColor(x, y, red, green, blue + 6);
            } else {
                 Mosaic.setColor(x, y, red, green, 0);
            }  //
        }

誰能看到我可能會想念的東西? 如果之前不清楚,我想添加紅色,然后下一個循環(因為紅色應該大於綠色),它應該添加綠色,然后與藍色相同,直到最后將值重置為最大化。

如有其他任何問題,請philecarpenter@gmail.com評論或給我發送電子郵件: philecarpenter@gmail.com

boolean redSmallerGreen = (red <= green);
boolean greenSmallerBlue = (green <= blue);

//What happens here?!
boolean allGreater240 = (red >= 240 && blue >= 240 && green >= 240);

if (redSmallerGreen) {
    Mosaic.setColor(x, y, red<=240?red+6:0,green,blue); 
} else if (greenSmallerBlue) {
    Mosaic.setColor(x, y, red,green<=240?green+6:0,blue);   
} else if (allgreater240) {
    //?!
} else {
    Mosaic.setColor(x, y, red,green,blue<=240?blue+6:0);    
}

怎么了? 在某個時候,紅色,綠色和藍色都將大於240。現在藍色將重置為0,然后又增加到240,而紅色和綠色保持不變。 也許這可以幫助您解決問題。 我本來會發表評論,但卻無法理解。

我沒有測試我的代碼,只是將它寫下來,以使您對您/我在這里所做的事情有想像力:)

編輯:反向

int step = 6;

public void yourFunction() {

    (...)

    boolean redSmallerGreen = (red <= green);
    boolean greenSmallerBlue = (green <= blue);

    boolean allSmaller0 = (red <= 0 && blue <= 0 && green <= 0); 
    boolean allGreater240 = (red >= 240 && blue >= 240 && green >= 240);

    if (allSmaller0) {
        step = 6;
    }
    if (allGreater240) {
        step = -6;
    }

    if (redSmallerGreen) {
        Mosaic.setColor(x, y, red+step,green,blue); 
    } else if (greenSmallerBlue) {
        Mosaic.setColor(x, y, red,green+step,blue); 
    } else {
        Mosaic.setColor(x, y, red,green,blue+step); 
    }
}

暫無
暫無

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

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