Gurzi Posted October 22, 2006 at 07:18 PM Report #59492 Posted October 22, 2006 at 07:18 PM 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 }
Hipnoted Posted October 22, 2006 at 10:20 PM Report #59541 Posted October 22, 2006 at 10:20 PM 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"
Gurzi Posted October 22, 2006 at 11:18 PM Author Report #59550 Posted October 22, 2006 at 11:18 PM 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! 😁
Hipnoted Posted October 22, 2006 at 11:23 PM Report #59553 Posted October 22, 2006 at 11:23 PM 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"
Knitter Posted October 23, 2006 at 10:48 AM Report #59595 Posted October 23, 2006 at 10:48 AM 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.
Gurzi Posted October 23, 2006 at 03:50 PM Author Report #59622 Posted October 23, 2006 at 03:50 PM podes xplicar isso melhor ?? como farias entao ? inicei-me agora em java, estou a seguir um livro e ele ensina assim!
Hipnoted Posted October 23, 2006 at 07:50 PM Report #59673 Posted October 23, 2006 at 07:50 PM 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"
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now