trying to make a program(game) for two players. the game has an interface and three text fields "player1","player2", and "winning amount". the interface also has a button called rand which when pressed generates random numbers from 1 to 10 and assigns them to a particular field. assuming that the first player to click rand is player1 and the second is player2. the game should end when two consecutive numbers generated are the same. the sum of all the generated numbers should be added and sent to the winning amount text field. there is also a clear button which resets the text fields for starting a new game. please help me with code am a beginner in java.

Dani AI

Generated

Good start, — the UI is mostly there. The reason the Random button does nothing is that the buttons were created but never wired: an ActionListener was implemented but not registered with the buttons (addActionListener). Also keep a small piece of state: the last value, the running sum, and a flag to alternate which player gets the next value. Applets (JApplet) are outdated now; the example below is a simple standalone Swing version that demonstrates the required behavior (alternate players, generate 1–10, accumulate the sum, stop when two consecutive values match, and Clear to reset).

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;

public class TwoPlayerRandomGame extends JPanel {
    private final JTextField p1 = new JTextField(6);
    private final JTextField p2 = new JTextField(6);
    private final JTextField total = new JTextField(8);
    private final JButton rand = new JButton("Random");
    private final JButton clear = new JButton("Clear");

    private final Random rnd = new Random();
    private int previous = -1;
    private int sum = 0;
    private boolean nextIsP1 = true;
    private boolean gameOver = false;

    public TwoPlayerRandomGame() {
        p1.setEditable(false); p2.setEditable(false); total.setEditable(false);
        setLayout(new FlowLayout());
        add(new JLabel("Player 1")); add(p1);
        add(new JLabel("Player 2")); add(p2);
        add(new JLabel("Winning Amount")); add(total);
        add(rand); add(clear);

        rand.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) { roll(); }
        });
        clear.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) { reset(); }
        });
    }

    private void roll() {
        if (gameOver) return;
        int v = rnd.nextInt(10) + 1; // 1..10
        sum += v;
        if (nextIsP1) p1.setText(Integer.toString(v));
        else p2.setText(Integer.toString(v));
        total.setText(Integer.toString(sum));
        if (previous != -1 && v == previous) {
            gameOver = true;
            rand.setEnabled(false);
        }
        previous = v;
        nextIsP1 = !nextIsP1;
    }

    private void reset() {
        previous = -1; sum = 0; nextIsP1 = true; gameOver = false;
        p1.setText(""); p2.setText(""); total.setText(""); rand.setEnabled(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new JFrame("Two-player Random Game");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.getContentPane().add(new TwoPlayerRandomGame());
                f.pack(); f.setLocationRelativeTo(null); f.setVisible(true);
            }
        });
    }
}

Key points: register the buttons with addActionListener, keep previous to detect two identical consecutive rolls, toggle a boolean to alternate which player gets the roll, update the running sum each roll and show it in the winning-amount field, and disable the Random button when the game ends. If a click-history is needed instead of overwriting, store values in a list or append to a text area. As noted earlier by and , some form of Random (or Math.random) plus ActionListener is required — the working example above ties those pieces together and shows where to reset state.

Recommended Answers

All 10 Replies

Be more than happy to help you. Once you show us what you have. We are not going to do it for you, though.

You need, JFrame, JLabel, JTextField, JButton, GridLayout (as the easiest), ActionListener, and Random.

following masijade advice i tried busting my head abit. i have written the following code

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;



public class Game extends JApplet implements ActionListener
{
//Creating a new JPanel called panel1
JPanel panel1 = new JPanel();
//Creating a JLabel for panel1
JLabel header = new JLabel("Simple Random Numbers Game 4 Two Players");
//Seting the font for panel1
Font bigFont = new Font("Tahoma", Font.ITALIC, 18);


//Creating a new JPanel called panel2
JPanel panel2 = new JPanel();


//Creating a JLabel R1 which receives a parameter "player1"
JLabel R1 = new JLabel("Player 1");
//Creating a JTextField Player1
JTextField player1 = new JTextField("",6);
JLabel R2 = new JLabel("Player 2");
JTextField player2 = new JTextField("",6);


JLabel amount = new JLabel("Winning Amount");
JTextField amnt = new JTextField("",6);



//panel3 and its contents
JPanel panel3 = new JPanel();
JButton random = new JButton("Random");
JButton clear = new JButton("Clear");


//seting the layout to be used in the game applet
FlowLayout flow = new FlowLayout();


//initiallising the Applet
public void init()
{
header.setFont(bigFont);
Container con = getContentPane();


//defining the layouts for each of the three panels
panel1.setLayout(new GridLayout(4,1,10,10));
panel2.setLayout(new GridLayout(1,1,6,6));
panel3.setLayout(new GridLayout(1,1,5,5));


//adding the panels and components to the container
con.add(panel1);
panel1.setBorder(new TitledBorder ("Controls"));
panel1.add(header);
panel1.add(panel2);
panel1.add(panel3);
panel2.setBorder(new TitledBorder (""));
panel2.add(R1);
panel2.add(player1);
panel2.add(R2);
panel2.add(player2);
panel2.add(amount);
panel2.add(amnt);
panel3.setBorder(new TitledBorder (""));
panel3.add(random);
panel3.add(clear);
con.setLayout(new FlowLayout());//setting the defined layout
//registering text tips to the buttons
random.setToolTipText("Press to play");
clear.setToolTipText("Press to reset");
//registering mnemonics to the buttons
random.setMnemonic('R');
clear.setMnemonic('C');
}
public void actionPerformed(ActionEvent thisEvent)
{
Object source = thisEvent.getSource();
if(source == random)
{
String name = amnt.getText();
System.out.println("it ends here"+amount);
}
}
}

And? What's it doing?

Are you getting compiler messages?

Are you getting an exception?

Are you seeing an unexpected effect?

In short, what is wrong?

Post the complete messages, and, if it's the third, a complete description of what you expect and a complete description of what you actually get. (And repost your code using code tags please.)

the code is giving a use interface that i require plus the text fields and the random and clear button.but i cant generate any random numbers with the rand button and later on out put them please help. the code is given below

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;


public class Game extends JApplet implements ActionListener
{
//Creating a new JPanel called panel1
JPanel panel1 = new JPanel();
//Creating a JLabel for panel1
JLabel header = new JLabel("Simple Random Numbers Game 4 Two Players");
//Seting the font for panel1
Font bigFont = new Font("Tahoma", Font.ITALIC, 18);

//Creating a new JPanel called panel2
JPanel panel2 = new JPanel();

//Creating a JLabel R1 which receives a parameter "player1"
JLabel R1 = new JLabel("Player 1");
//Creating a JTextField Player1
JTextField player1 = new JTextField("",6);
JLabel R2 = new JLabel("Player 2");
JTextField player2 = new JTextField("",6);

JLabel amount = new JLabel("Winning Amount");
JTextField amnt = new JTextField("",6);


//panel3 and its contents
JPanel panel3 = new JPanel();
JButton random = new JButton("Random");
JButton clear = new JButton("Clear");

//seting the layout to be used in the game applet
FlowLayout flow = new FlowLayout();

//initiallising the Applet
public void init()
{
header.setFont(bigFont);
Container con = getContentPane();

//defining the layouts for each of the three panels
panel1.setLayout(new GridLayout(4,1,10,10));
panel2.setLayout(new GridLayout(1,1,6,6));
panel3.setLayout(new GridLayout(1,1,5,5));

//adding the panels and components to the container
con.add(panel1);
panel1.setBorder(new TitledBorder ("Controls"));
panel1.add(header);
panel1.add(panel2);
panel1.add(panel3);
panel2.setBorder(new TitledBorder (""));
panel2.add(R1);
panel2.add(player1);
panel2.add(R2);
panel2.add(player2);
panel2.add(amount);
panel2.add(amnt);
panel3.setBorder(new TitledBorder (""));
panel3.add(random);
panel3.add(clear);
con.setLayout(new FlowLayout());//setting the defined layout
//registering text tips to the buttons
random.setToolTipText("Press to play");
clear.setToolTipText("Press to reset");
//registering mnemonics to the buttons
random.setMnemonic('R');
clear.setMnemonic('C');
}
public void actionPerformed(ActionEvent thisEvent)
{
Object source = thisEvent.getSource();
if(source == random)
{
String name = amnt.getText();
System.out.println("it ends here"+amount);
}
}
}

I would, but I have not a clue what you just said.

what i need is code that will help me generate the numbers and then assign them to the text field.and code that will help me to reset the text field.please people am just a beginner help me

The button to reset your text field is just an actionlistener that sets the value of your textfield.text property to "" (or null).

For the generation of numbers, I suggest a class where you declare a variable (int var) and then use

var = (int)(100 * Math.random())

This particular example gives you a value between one and hundred.
After you stored this value in the variable, you can load the variable in your textbox using textbox.text = var.tostring().

At least, that is what I think it is out of my head. Hope this helps.

i think i know why you can't seem to eplain your code my friend. are you even in the slightes bit sure of your code is doing. to start with you just leave us hunging. what does your program do at the state it's at right now?
why do i get the feeling you just got that code off someone else?

can create a visual games

can create a visual games

Yes you can , please be more specific.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.