나는 Arduino와 Processing으로 일종의 게임을 만들고있다. 제 코드에서는 Daniel Shiffman의 Timer 클래스를 사용하지만 클래스의 두 인스턴스를 사용하여 두 개의 다른 Timer를 만들고 싶습니다.두 개의 클래스 인스턴스가 혼재하고 있습니까?
제 문제는이 두 인스턴스가 서로 섞여있는 것처럼 보일뿐입니다. 각 인스턴스는 다른 인스턴스가 수행해야하는 작업의 일부입니다.
예를 들어 타이머를 10 초 동안 실행하고 correctTimer를 3 초 동안 실행해야하지만 둘 다 10 초 동안 실행해야합니다. 또한 타이머가 완료되면 배경을 빨간색으로 설정하고 correctTimer가 끝나면 배경을 파란색으로 설정해야합니다. 그러나 두 타이머가 모두 끝나면 배경이 파란색으로 설정됩니다.
누구에게이 문제를 해결할 수있는 아이디어가 있습니까?
import processing.serial.*;
int end = 10;
String serial;
Serial port;
float[] array;
// --------------------------------------------------
PImage img;
PImage correct;
PImage incorrect;
float thumb;
float index;
float middle;
float ring;
float pinky;
// --------------------------------------------------
String alphabet;
int randomNum;
String letter;
// --------------------------------------------------
int savedTime;
int totalTime;
int passedTime;
boolean quit = false;
class Timer {
Timer(int tempTotalTime) {
totalTime = tempTotalTime;
}
void start() {
savedTime = millis();
//quit = false;
}
boolean isFinished() {
passedTime = millis() - savedTime;
if (passedTime > totalTime) {
return true;
} else {
return false;
}
}
}
Timer timer;
Timer correctTimer;
// --------------------------------------------------
boolean checkLetter(String letterPicked, float flexR_THUMB, float flexR_INDEX, float flexR_MIDDLE, float flexR_RING, float flexR_PINKY) {
if (letterPicked == "A") {
if (flexR_THUMB > 12000 && flexR_THUMB < 22000 &&
flexR_INDEX > 27958 && flexR_INDEX < 38500 &&
flexR_MIDDLE > 26035 && flexR_MIDDLE < 41650 &&
flexR_RING > 16492 && flexR_RING < 26000 &&
flexR_PINKY > 37528 && flexR_PINKY < 53500) {
return true;
} else {
return false;
}
}
return false; }
// --------------------------------------------------
void setup() {
size(1280, 950);
background(255);
port = new Serial(this, "/dev/tty.usbmodem1421", 9600);
port.clear();
serial = port.readStringUntil(end);
serial = null;
correct = loadImage("img/RIGHT.png");
incorrect = loadImage("img/WRONG.png");
correctTimer = new Timer(3000);
startOver();
}
// --------------------------------------------------
void startOver() {
background(255);
letter = "A";
img = loadImage("img/" + letter +".png");
image(img, 0, 0, 1280, 950);
timer = new Timer(10000);
timer.start();
}
// --------------------------------------------------
void draw() {
while(port.available() > 0) {
serial = port.readStringUntil(end);
}
if (serial != null) {
float[] array = float(split(serial, ','));
thumb = array[0];
index = array[1];
middle = array[2];
ring = array[3];
pinky = array[4];
}
if (checkLetter(letter, thumb, index, middle, ring, pinky) == true && quit == false) {
image(correct, 0, 0, 1280, 950);
quit = true;
correctTimer.start();
} else if (timer.isFinished() && quit == false) {
background(255, 0, 0);
quit = true;
correctTimer.start();
}
if (correctTimer.isFinished()) {
background(0, 0, 255);
}
}
죄송합니다 .- 나는 Stack Overflow에 익숙하지 않습니다. 답변 해 주셔서 감사하지만 문제는 계속됩니다. 나는 새로운 지위를 만들 것이다. – tarlyo