2016-09-27 5 views
0

Javaの処理で基本的な描画プログラムを作成していますが、私は2色の色があり、消しゴムもあり、新しい色(緑色)を作成しました。何らかの理由で緑色をクリックしても、色は変わりません。ありがとう!処理中のプログラムの描画に関する問題

(注:私はこの処理をインポートしてEclipseで実行しましたが、ちょうど処理を使用する場合はintの色をcolor1に変更してください。メイン関数、PApplet.main( "main"私は、あなたが本当にshouldn your previous questionに言ったようにhttps://processing.org/tutorials/eclipse/

// note: many imports aren't used yet 
import java.util.ArrayList; 
import java.util.Scanner; 
import processing.core.PApplet; 
import processing.core.PShape; 

import java.applet.*; 
import java.awt.*; 
import java.awt.event.*; 

public class Main extends PApplet{ 

PShape rectangle; 

String file = ""; 

char letter; 

int color; 
int color2; 
int color3; 
boolean red = false; 
boolean blue = false; 
boolean green = false; 
boolean yellow = false; 
boolean eraser = false; 

boolean saving = false; 

// needed to create this in order for Eclipse to work 
public static void main(String[] args) { 
    PApplet.main("Main"); 
} 

public void settings(){ 
    size(1280, 720); 
} 

public void setup() { 
    size(1280, 720); 
    smooth(); 
    background(255, 255, 255); 
    noStroke(); 

} 

public void draw() { 

    if (keyPressed) { 

     if (key == 'c') { 
      background(255, 255, 255); 
     } 

     if (key == 's') { 
      save("Drawing.tif"); 

     } 

    } 
    else { 
     color = 0; 
    } 
    fill(0); 
    text("Press 'c' to clear the screen", 50, 700, 200, 50); 
    text("Press 's' to save", 250, 700, 200, 50); 

    fill(255, 0, 0); 
    // red square 
    rect(0, 50, 50, 50); 
    fill(0, 10, 255); 
    // blue square 
    rect(0, 100, 50, 50); 
    fill(0, 255, 40); 
    // green square 
    rect(0, 150, 50, 50); 
    fill(255, 255, 0); 
    // yellow square 
    rect(0, 200, 50, 50); 
    fill(0); 


} 

public void mousePressed() { 
    if(red) { 
     color = 255; 
     color2 = 0; 
     color3 = 0; 
    } 
    if(eraser) { 
     color = 255; 
     color2 = 255; 
     color3 = 255; 
    } 
    if(blue) { 
     color = 0; 
     color2 = 10; 
     color3 = 255; 
    } 
    if(green){ 
     color = 0; 
     color2 = 255; 
     color3 = 40; 
    } 
    else{ 
     fill(0); 
    } 
    // check if mouse is in drawing area 
    if (mouseX >= 50 && mouseX <= 1280 && mouseY >= 0 && mouseY <= 680) { 
     // change the drawing color 
     fill(color, color2, color3); 
     rect(mouseX, mouseY, 50, 50); 
    } 
    // if red 
    if (mouseX >= 0 && mouseX <= 50 && mouseY >= 50 && mouseY <= 100) { 
     eraser = false; 
     blue = false; 
     green = false; 
     red = true; 
    } 
    // if eraser (note: in top left corner) 
    if (mouseX >= 0 && mouseX <= 50 && mouseY >= 0 && mouseY <= 50) { 
     red = false; 
     blue = false; 
     green = false; 
     eraser = true; 
    } 
    // if blue 
    if (mouseX >= 0 && mouseX <=50 && mouseY >= 100 && mouseY <= 150) { 
     eraser = false; 
     red = false; 
     green = false; 
     blue = true; 
    } 
    // if green 
    if (mouseX >= 0 && mouseY <= 50 && mouseY >= 150 && mouseY <= 200) { 
     eraser = false; 
     red = false; 
     blue = false; 
     green = true; 
    } 
} 

// basically the same code for mousePressed 
public void mouseDragged() { 
    if(red) { 
     color = 255; 
     color2 = 0; 
     color3 = 0; 
    } 
    if(eraser) { 
     color = 255; 
     color2 = 255; 
     color3 = 255; 
    } 
    if(blue) { 
     color = 0; 
     color2 = 10; 
     color3 = 255; 
    } 
    if(green){ 
     color = 0; 
     color2 = 255; 
     color3 = 40; 
    } 
    else{ 
     fill(0); 
    } 
    // check if mouse is in drawing area 
    if (mouseX >= 50 && mouseX <= 1280 && mouseY >= 0 && mouseY <= 680) { 
     // change the drawing color 
     fill(color, color2, color3); 
     rect(mouseX, mouseY, 50, 50); 
    } 
    // if red 
    if (mouseX >= 0 && mouseX <= 50 && mouseY >= 50 && mouseY <= 100) { 
     eraser = false; 
     blue = false; 
     green = false; 
     red = true; 
    } 
    // if eraser (note: in top left corner) 
    if (mouseX >= 0 && mouseX <= 50 && mouseY >= 0 && mouseY <= 50) { 
     red = false; 
     blue = false; 
     green = false; 
     eraser = true; 
    } 
    // if blue 
    if (mouseX >= 0 && mouseX <=50 && mouseY >= 100 && mouseY <= 150) { 
     eraser = false; 
     red = false; 
     green = false; 
     blue = true; 
    } 
    // if green 
    if (mouseX >= 0 && mouseY <= 50 && mouseY >= 150 && mouseY <= 200) { 
     eraser = false; 
     red = false; 
     blue = false; 
     green = true; 
    } 
} 

} 
+0

Javaタグが削除されました:これは処理に関する質問であり、Javaの質問ではありません。はい、言語は関連していますが、同じではありません。 –

答えて

0

」:あなたはここでそれについての記事があります(私が行ったように)日食でこれを実行するためにwan't場合);,、あなたは)良いことがあります変数colorを使用してください。それは日食であなたのために働くかもしれませんが、それは混乱しています。少なくともそれは私たちがあなたを助けることをより困難にします。あなたがそれをしている間、あなたは未使用のインポートステートメントのようなものを世話するべきです。参照:How to create a Minimal, Complete, and Verifiable example

このような問題を理解するには、デバッグを行う必要があります。最初にチェックするのは、コードがの内部にあるifの声明にあなたの緑色を入力するかどうかです。だから私はこのように、そのif文の中println()ステートメントを追加したい:

if (mouseX >= 0 && mouseY <= 50 && mouseY >= 150 && mouseY <= 200) { 
    println("here"); 
    eraser = false; 
    red = false; 
    blue = false; 
    green = true; 
    } 

は、プログラムを実行すると、緑色の四角形をクリックすると、我々はこの if文が入力されないことを参照してください。それは確かに疑わしいですが、それでは if文自体を詳しく見てみましょう:

if (mouseX >= 0 && mouseY <= 50 && mouseY >= 150 && mouseY <= 200) { 

お知らせ何か?あなたがそうでないなら大声でそれを読んでください。

この2番目のチェックは、mouseYを比較しています。 mouseXを使用するように見えます。

関連する問題