Guess the Answer was built as a desktop program, so it only works on a laptop or desktop computer, with a keyboard.
Starting Java in your browser… the first load can take a few seconds.
My 2022 Java Swing arithmetic game, compiled from the original code and running in your browser. It runs on CheerpJ, which runs Java desktop apps in the browser. The Quit button won’t close this page.
Main.java (the original code)
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.util.Random;
public class Main extends JFrame {
private static int a = 1 + (int) (30 * Math.random());
private static int b = 1 + (int) (30 * Math.random());
private static int count = 0;
private static int n = 0;
private static int m = 0;
private static char random = '+';
public Main() {
super("GUESS THE ANSWER");
setSize(375, 450);
JPanel top = new JPanel();
top.setLayout(new GridLayout(2, 1));
JLabel label1 = new JLabel("Guess the answer");
JLabel label2 = new JLabel("by Eeman and Yusuff🙃");
top.add(label1);
top.add(label2);
top.setBorder(new EmptyBorder(10, 10, 10, 10));
super.add(top, BorderLayout.NORTH);
label1.setHorizontalAlignment(JLabel.CENTER);
label2.setHorizontalAlignment(JLabel.CENTER);
JPanel center = new JPanel();
GridLayout myGrid = new GridLayout(5, 2);
myGrid.setVgap(5);
myGrid.setHgap(20);
center.setLayout(myGrid);
center.setBorder(new EmptyBorder(10, 10, 10, 10));
super.add(center, BorderLayout.CENTER);
JTextField input1 = new JTextField();
input1.setEditable(false);
showQuestion(input1, a, b);
JTextField input2 = new JTextField();
JTextField input3 = new JTextField();
input3.setEditable(false);
JTextField input4 = new JTextField();
input4.setEditable(false);
JTextField input5 = new JTextField();
input5.setEditable(false);
input5.setHorizontalAlignment(JLabel.CENTER);
input5.setFont(input5.getFont().deriveFont(20f));
input1.setHorizontalAlignment(JLabel.CENTER);
input1.setFont(input1.getFont().deriveFont(20f));
input2.setHorizontalAlignment(JLabel.CENTER);
input2.setFont(input2.getFont().deriveFont(20f));
input3.setHorizontalAlignment(JLabel.CENTER);
input3.setFont(input3.getFont().deriveFont(20f));
input4.setHorizontalAlignment(JLabel.CENTER);
input4.setFont(input4.getFont().deriveFont(20f));
JLabel label3 = new JLabel("Question:");
JLabel label4 = new JLabel("Answer:");
JLabel label5 = new JLabel("Score:");
JLabel label6 = new JLabel("Indicator:");
JLabel label7 = new JLabel("Correct answer:");
label3.setHorizontalAlignment(JLabel.RIGHT);
label4.setHorizontalAlignment(JLabel.RIGHT);
label5.setHorizontalAlignment(JLabel.RIGHT);
label6.setHorizontalAlignment(JLabel.RIGHT);
label3.setFont(label3.getFont().deriveFont(20f));
label4.setFont(label4.getFont().deriveFont(20f));
label5.setFont(label5.getFont().deriveFont(20f));
label6.setFont(label6.getFont().deriveFont(20f));
label7.setHorizontalAlignment(JLabel.RIGHT);
label7.setFont(label7.getFont().deriveFont(20f));
center.add(label3);
center.add(input1);
center.add(label4);
center.add(input2);
center.add(label7);
center.add(input5);
center.add(label6);
center.add(input4);
center.add(label5);
center.add(input3);
JPanel bottom = new JPanel();
bottom.setLayout(new GridLayout(1, 3));
super.add(bottom, BorderLayout.PAGE_END);
JButton calculateButton = new JButton("Check");
JButton continueButton = new JButton("Continue");
JButton quitButton = new JButton("Quit");
bottom.add(calculateButton);
bottom.add(continueButton);
bottom.add(quitButton);
bottom.setBorder(new EmptyBorder(10, 10, 10, 10));
quitButton.addActionListener(e -> System.exit(0));
continueButton.addActionListener(e -> reset(input1, input2, input3, input4, input5));
calculateButton.addActionListener(e -> multiplyTheNumbers(input2, input3, input4, input5));
getRootPane().setDefaultButton(calculateButton);
calculateButton.setMnemonic(KeyEvent.VK_ENTER);
}
private void reset(JTextField input1, JTextField input2, JTextField input3, JTextField input4, JTextField input5) {
if (n == (m + 1)) {
if (n % 4 < 2) {
a = (int) (99 * Math.random());
b = (int) (99 * Math.random());
random = randomChar2();
if (a > b) {
random = randomChar1();
}
}
if (n % 4 == 2) {
a = (int) (33 * Math.random());
b = (int) (33 * Math.random());
random = '*';
}
if (n % 4 == 3) {
b = (int) (40 * Math.random());
a = b * ((int) (20 * Math.random()));
while (a == 0 || b == 0) {
b = (int) (40 * Math.random());
a = b * ((int) (20 * Math.random()));
}
random = '/';
}
showQuestion(input1, a, b);
input2.setText("");
input5.setText("");
input4.setBackground(input3.getBackground());
m++;
}
}
private void showQuestion(JTextField field1, int a, int b) {
field1.setText(a + Character.toString(random) + b);
}
private static int getValue(JTextField field) {
int result = 0;
String numeral = field.getText();
try {
result = Integer.parseInt(numeral);
} catch (NumberFormatException e) {
System.out.println();
}
return result;
}
public static void multiplyTheNumbers(JTextField field2, JTextField field3, JTextField field4, JTextField field5) {
if (n == m) {
int answer = getValue(field2);
switch (random) {
case '+':
add(field3, field4, field5, answer);
break;
case '*':
multiply(field3, field4, field5, answer);
break;
case '-':
subtract(field3, field4, field5, answer);
break;
case '/':
divide(field3, field4, field5, answer);
break;
}
}
}
public static char randomChar1() {
Random random = new Random();
String setOfChar1 = "+-";
int randomInt = random.nextInt(setOfChar1.length());
return setOfChar1.charAt(randomInt);
}
public static char randomChar2() {
String setOfChar2 = "+";
return setOfChar2.charAt(0);
}
public static void add(JTextField field3, JTextField field4, JTextField field5, int answer) {
field5.setText(Integer.toString(a + b));
n++;
if (answer == (a + b)) {
count++;
field3.setText(count + "/" + n);
field4.setBackground(Color.green);
} else {
field3.setText(count + "/" + n);
field4.setBackground(Color.red);
}
}
public static void multiply(JTextField field3, JTextField field4, JTextField field5, int answer) {
field5.setText(Integer.toString(a * b));
n++;
if (answer == (a * b)) {
count++;
field3.setText(count + "/" + n);
field4.setBackground(Color.green);
} else {
field3.setText(count + "/" + n);
field4.setBackground(Color.red);
}
}
public static void subtract(JTextField field3, JTextField field4, JTextField field5, int answer) {
field5.setText(Integer.toString(a - b));
n++;
if (answer == (a - b)) {
count++;
field3.setText(count + "/" + n);
field4.setBackground(Color.green);
} else {
field3.setText(count + "/" + n);
field4.setBackground(Color.red);
}
}
public static void divide(JTextField field3, JTextField field4, JTextField field5, int answer) {
field5.setText(Integer.toString(a / b));
n++;
if (answer == (a / b)) {
count++;
field3.setText(count + "/" + n);
field4.setBackground(Color.green);
} else {
field3.setText(count + "/" + n);
field4.setBackground(Color.red);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Main stuff = new Main();
stuff.setVisible(true);
}
}