Jump to content

[Java/JSP] Roll Dice


Gurzi

Recommended Posts

Um Joguito simples 😁😛

// @author Gurzi ( Tiago Palhota)
// tpalhota@gmail.com

import java.awt.*; 
import java.awt.event.*; 

// Java extension packages 
import javax.swing.*; 

public class Game extends JApplet implements ActionListener { 

    // constant variables for game status 
    final int WON = 0, LOST = 1, CONTINUE = 2;  

    // other variables used 
    boolean firstRoll = true;   // true if first roll of dice 
    int sumOfDice = 0;          // sum of the dice 
    int myPoint = 0;    // point if no win/loss on first roll 
    int gameStatus = CONTINUE;  // game not over yet 

    JLabel die1Label, die2Label, sumLabel, pointLabel; 
    JTextField die1Field, die2Field, sumField, pointField; 
    JButton rollButton; 

    // set up GUI components 
    public void init() { 
        // obtain content pane and change its layout to 
        // a FlowLayout 
        Container container = getContentPane(); 
        container.setLayout( new FlowLayout() );      

        // create label and text field for die 1 
        die1Label = new JLabel( "Die 1" ); 
        container.add( die1Label ); 
        die1Field = new JTextField( 10 ); 
       die1Field.setEditable( false ); 
       container.add( die1Field ); 

        // create label and text field for die 2 
        die2Label = new JLabel( "Die 2" ); 
        container.add( die2Label ); 
        die2Field = new JTextField( 10 ); 
        die2Field.setEditable( false ); 
        container.add( die2Field ); 

        // create label and text field for sum 
        sumLabel = new JLabel( "Sum is" ); 
        container.add( sumLabel ); 
        sumField = new JTextField( 10 ); 
        sumField.setEditable( false ); 
        container.add( sumField ); 

        // create label and text field for point 
        pointLabel = new JLabel( "Point is" ); 
        container.add( pointLabel ); 
        pointField = new JTextField( 10 ); 
        pointField.setEditable( false ); 
        container.add( pointField ); 

        // create button user clicks to roll dice 
        rollButton = new JButton( "Roll Dice" ); 
        rollButton.addActionListener( this ); 
        container.add( rollButton ); 
    } 

    // process one roll of dice 
    public void actionPerformed( ActionEvent actionEvent ) { 
        // first roll of dice 
        if ( firstRoll ) {             
            sumOfDice = rollDice();      // roll dice 
            
            switch ( sumOfDice ) { 
                // win on first roll 
                case7: case11:         
                    gameStatus = WON; 
                    pointField.setText( "" );  // clear point field 
                    break; 

                // lose on first roll 
                case2: case3: case12: 
                    gameStatus = LOST; 
                    pointField.setText( "" );   // clear point field 
                    break; 

                // remember point 
                default:                 
                    gameStatus = CONTINUE; 
                    myPoint = sumOfDice; 
                    pointField.setText( Integer.toString( myPoint ) ); 
                    firstRoll = false; 
                    break; 
            }  // end switch structure 
        }  // end if structure body
        else { //subsequent roll of dice
            sumOfDice = rollDice();     // roll dice 
       
            // determine game status 
            if ( sumOfDice == myPoint ) { // win by making point 
                gameStatus = WON; 
            }
            else {
                if ( sumOfDice == 7 ) {     // lose by rolling 7 
                    gameStatus = LOST;
                }
            } 
        } 

        // display message indicating game status 
        displayMessage(); 

    }  // end method actionPerformed 

    // roll dice, calculate sum and display results 
    public int rollDice() { 
        int die1, die2, sum;   

        // pick random die values 
        die1 = 1 + ( int ) ( Math.random() * 6 ); 
        die2 = 1 + ( int ) ( Math.random() * 6 ); 
        sum = die1 + die2;   // sum die values 

        // display results 
        die1Field.setText( Integer.toString( die1 ) ); 
        die2Field.setText( Integer.toString( die2 ) ); 
        sumField.setText( Integer.toString( sum ) ); 

        return sum;  // return sum of dice 
    }  // end method rollDice 

   // determine game status and display appropriate message 
   // in status bar 
    public void displayMessage() { 
        // game should continue 
        if ( gameStatus == CONTINUE ) { 
            showStatus( "Roll again." ); 
        } 
        else { //game won or lost 
             if ( gameStatus == WON )  {
                showStatus( "Player wins. " +  "Click Roll Dice to play again." );
            }
            else {
                showStatus( "Player loses. " + "Click Roll Dice to play again." ); 
            }
            // next roll is first roll of new game 
            firstRoll = true; 
        } 
    }  // end method displayMessage 
}
Link to comment
Share on other sites

Gurzi, tenho visto que tens postado algúm código de Java aqui no fórum. Mas estas a esquecer-te de identar o código correctamente, e em Java isso é fundamental. 😁

Por exemplo tens de pôr um avanço de 4 espaços e metes 1,2 ou os que te der na telha... Depois de linha para linha avanças ou recuas espaços...

Espero que não leves a mal, apenas te chamei à atenção às regras que todos se devem tentar guiar. 😛

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other sites

Pois é.. realmente não está muito bem identado, mas tambem sempre ouvi dizer que cada um tem a sua forma de organizar, mas realmente esta forma não foi das melhores! 😁

Pois, cada um tem o seu método mas Java exige um método único, para que seja mais fácil a reutilização do código.

Deixo-te aqui um link que fala sobre isso:

http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other sites

Não queria ser o primeiro a comentar, só para não dar ideia que não aprecio o que está ser colocado, posso afirmar que aprecio bastante, mas tens alguns promenores no código que levam a más técnicas de programação, ou melhor, no caso do java, está a fugir muito ao POO, isso em java é importante...

Erros graves: as variaveis não possuem modificadores de acesso, logo está a dizer que ficam com visibilidade por omissão.

Erro médio: A applet não devia implementar a interface "ActionListener", não é da sua competência, até porque depois vais dizer "Adiciona um listener à minha lista de listeners e o listener sou eu". Não está muito correcto, mas também não é grave 😁

Peace.

Link to comment
Share on other sites

podes xplicar isso melhor ??

como farias entao ?

inicei-me agora em java, estou  a seguir um livro e ele ensina assim!

Onde tens isto por exemplo:

 boolean firstRoll = true;   // true if first roll of dice 
int sumOfDice = 0;          // sum of the dice 
int myPoint = 0;    // point if no win/loss on first roll 
int gameStatus = CONTINUE;  // game not over yet 

Convém coloar o private nas variáveis:

private boolean firstRoll = true;   // true if first roll of dice 
private int sumOfDice = 0;          // sum of the dice 
private int myPoint = 0;    // point if no win/loss on first roll 
private int gameStatus = CONTINUE;  // game not over yet 

Quanto ao resto vê bem aquele link que te indiquei, tem lá todas as regras de escrita de Java. 😁

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.