• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gurzi

[Java/JSP] Roll Dice

7 mensagens neste tópico

Um Joguito simples :cheesygrin::P

// @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 
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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. :cheesygrin:

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. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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! :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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! :cheesygrin:

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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 :cheesygrin:

Peace.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes xplicar isso melhor ??

como farias entao ?

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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. :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora