Right now I'm working on a rock paper scissors project.
It is pretty simple, but I am new to java and am struggling with a few aspects of the game.
I have the basic game all working and good, but I am trying to add in a scoring system that is shown in either the top or bottom corners and every time you win your score goes up, and same with the computer, I haven't really decided yet where to put them though.
I am using JLabel
s for the numbers and I have been trying a few methods, some of the failed ones are still there though.
I have been using integer to String for the label. I am having trouble with both updating the number when someone scores, and positioning the JLabel
s.
So far most of the stuff pertaining the score is in the score method near the bottom of the code and the variables for most of the scoring thing are yourNum
, yourScore
, compScore
, compNum
.
For the positioning issue, I hope to use absolute positioning but i don't fully understand how I would use this with my JLabel
, so if someone could explain how to use it in my situation that would be great. Here is my full code.
public class main extends JFrame implements ActionListener {
JButton rock;
JButton scissors;
JButton paper;
JLabel left;
ImageIcon rock1;
ImageIcon scissors1;
ImageIcon scissors2;
ImageIcon paper2;
ImageIcon paper1;
ImageIcon rock2;
ImageIcon back;
ImageIcon scissorsb;
JLabel right;
String[] RPS = {"Rock", "Paper", "Scissors"};
Random rand = new Random();
int num = rand.nextInt(RPS.length);
int yourChoice = -1;
JTextField texter;
JLabel winner;
Container contentPane = this.getContentPane();
SpringLayout layout = new SpringLayout();
String Tie = "Tie";
String compwins = "Computer wins!";
String youwin = "You win!";
int yourNum = 9;
JLabel yourScore;
int compNum = 0;
JLabel compScore;
Font winnerFont = new Font("Font", Font.PLAIN, 35);
public main() {
super("Rock Paper Scissors");
back = new ImageIcon("image1233450665506.png");
paper1 = new ImageIcon("paper1.png");
paper2 = new ImageIcon("paper2.png");
scissors1 = new ImageIcon("scissors1.png");
scissors2 = new ImageIcon("scissors2.png");
rock1 = new ImageIcon("rock1.png");
rock2 = new ImageIcon("rock2.png");
JLabel background = new JLabel(back);
left = new JLabel();
right = new JLabel();
winner = new JLabel();
yourScore = new JLabel();
compScore = new JLabel();
right.setVisible(true);
this.setVisible(true);
this.setSize(1280, 985);
winner.setFont(winnerFont);
winner.setHorizontalAlignment(SwingConstants.CENTER);
yourScore.setFont(winnerFont);
compScore.setFont(winnerFont);
contentPane.setLayout(layout);
contentPane.add(winner);
contentPane.add(left);
contentPane.add(right);
contentPane.add(yourScore);
contentPane.add(compScore);
layout.putConstraint(SpringLayout.NORTH, left, 300, SpringLayout.NORTH, contentPane);
layout.putConstraint(SpringLayout.NORTH, right, 300, SpringLayout.NORTH, contentPane);
layout.putConstraint(SpringLayout.EAST, right, 0, SpringLayout.EAST, contentPane);
rock = new JButton("Rock");
paper = new JButton("Paper");
scissors = new JButton("Scissors");
layout.putConstraint(SpringLayout.WEST, rock, 500, SpringLayout.WEST, contentPane);
this.add(rock, BorderLayout.NORTH);
layout.putConstraint(SpringLayout.SOUTH, rock, -30, SpringLayout.SOUTH, contentPane);
layout.putConstraint(SpringLayout.WEST, rock, 40, SpringLayout.NORTH, contentPane);
this.add(paper, BorderLayout.NORTH);
layout.putConstraint(SpringLayout.SOUTH, paper, -30, SpringLayout.SOUTH, contentPane);
layout.putConstraint(SpringLayout.WEST, paper, 200, SpringLayout.NORTH, contentPane);
this.add(scissors, BorderLayout.NORTH);
layout.putConstraint(SpringLayout.SOUTH, scissors, -30, SpringLayout.SOUTH, contentPane);
layout.putConstraint(SpringLayout.WEST, scissors, 360, SpringLayout.NORTH, contentPane);
rock.setBackground(Color.GRAY);
rock.setPreferredSize(new Dimension(140, 50));
paper.setBackground(Color.WHITE);
paper.setPreferredSize(new Dimension(140, 50));
scissors.setBackground(Color.LIGHT_GRAY);
scissors.setPreferredSize(new Dimension(140, 50));
rock.repaint();
scissors.repaint();
paper.repaint();
contentPane.add(background);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
rock.doClick();
paper.doClick();
scissors.doClick();
rock.addActionListener(this);
paper.addActionListener(this);
scissors.addActionListener(this);
}
public static void main(String args[]) {
main framer = new main();
}
@Override
public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource() == rock) {
left.setIcon(rock1);
yourChoice = 0;
} else if (arg0.getSource() == paper) {
left.setIcon(paper1);
yourChoice = 1;
} else if (arg0.getSource() == scissors) {
left.setIcon(scissors1);
yourChoice = 2;
}
computerMove();
Score();
}
public void Score() {
layout.putConstraint(SpringLayout.NORTH, winner, 50, SpringLayout.NORTH, contentPane);
layout.putConstraint(SpringLayout.WEST, winner, 560, SpringLayout.WEST, contentPane);
layout.putConstraint(SpringLayout.SOUTH, compScore, 100, SpringLayout.SOUTH, contentPane);
layout.putConstraint(SpringLayout.EAST, compScore, 600, SpringLayout.EAST, contentPane);
yourScore = new JLabel(Integer.toString(yourNum));
compScore = new JLabel(Integer.toString(compNum));
if (num == 0 && yourChoice == 0) {
winner.setText(Tie);
winner.repaint();
} else if (num == 1 && yourChoice == 0) {
yourNum++;
yourScore.repaint();
winner.setText(compwins);
winner.repaint();
} else if (num == 2 && yourChoice == 0) {
compNum++;
compScore.repaint();
winner.setText(youwin);
winner.repaint();
} else if (num == 0 && yourChoice == 1) {
yourNum++;
yourScore.repaint();
winner.setText(youwin);
winner.repaint();
} else if (num == 1 && yourChoice == 1) {
winner.setText(Tie);
winner.repaint();
} else if (num == 2 && yourChoice == 1) {
compNum++;
compScore.repaint();
winner.setText(compwins);
winner.repaint();
} else if (num == 0 && yourChoice == 2) {
compNum++;
compScore.repaint();
winner.setText(compwins);
winner.repaint();
} else if (num == 1 && yourChoice == 2) {
yourNum++;
yourScore.repaint();
winner.setText(youwin);
winner.repaint();
} else if (num == 2 && yourChoice == 2) {
winner.setText(Tie);
winner.repaint();
}
winner.repaint();
yourScore.repaint();
compScore.repaint();
yourScore.setForeground(Color.RED);
compScore.setForeground(Color.RED);
winner.setForeground(Color.RED);
}
public void computerMove() {
num = rand.nextInt(RPS.length);
if (num == 0) {
right.setIcon(rock2);
} else if (num == 1) {
right.setIcon(paper2);
} else if (num == 2) {
right.setIcon(scissors2);
}
}
}