int score = 0;
int problemA, problemB, correctAnswer;
int Answer = 0;
int difficulty = 1;
boolean gameOver = false;
int timeLimit = 8000; //8 seconds
int startTime;
PFont font; // https://processing.org/reference/
void setup() {
size(400, 400);
font = createFont("Arial", 24, true);
textFont(font);
ProblemGen();
startTime = millis();
}
void draw() {
background(255);
fill(0);
if (millis() - startTime > timeLimit) {
gameOver = true;
}
if (gameOver) {
textAlign(CENTER, CENTER);
text("Time's up! Your score: " + score, width / 2, height / 2);
} else {
textAlign(LEFT, TOP);
text("Score: " + score, 10, 10);
text("Time: " + (timeLimit - (millis() - startTime)) / 1000, 10, 40);
text("Difficulty: " + difficulty, 10, 70); // Display difficulty level
textAlign(CENTER, CENTER);
text(problemA + " + " + problemB + " = " + Answer, width / 2, height / 2);
}
}
void ProblemGen() {
if (difficulty == 1) {
problemA = int(random(1, 10));
problemB = int(random(1, 10));
} else if (difficulty == 2) {
problemA = int(random(10, 50));
problemB = int(random(10, 50));
} else if (difficulty == 3) {
problemA = int(random(50, 100));
problemB = int(random(50, 100));
}
correctAnswer = problemA + problemB;
}
void keyPressed() {
if (key >= '0' && key <= '9') {
Answer = Answer * 10 + (key - '0');
} else if (key == BACKSPACE) {
Answer = Answer / 10;
} else if (key == ENTER || key == RETURN) {
checkAnswer();
} else if (key == '1' || key == '2' || key == '3') {
difficulty = key - '0';
ProblemGen();
Answer = 0;
startTime = millis();
gameOver = false;
} else if (keyCode == UP) {
difficulty++;
if (difficulty > 3) {
difficulty = 1;
}
ProblemGen();
Answer = 0;
startTime = millis();
gameOver = false;
}
}
void checkAnswer() {
if (Answer == correctAnswer) {
score++;
} else {
score--;
}
ProblemGen();
Answer = 0;
startTime = millis();
}