Single Tech Games

2. The WormChase Class

Antes de iniciar esto, recuerden que hacer un UML en netbeans tiene sus ventajas, como por ejemplo si le dan anticlic (clic derecho) al proyecto le sale una opción generar código, apuntan a un proyecto e insertan automáticamente el esqueleto de las clases
A pedido de Andrew (En su código ^_^) le pongo un enlace a su libro… Recuerden que esto es una versión beta del libro, la versión final esta impresa y esta muy barata, compren la
Ahora si, la clase WormChase, no usaremos el Java 3D timer, por lo tanto primero declaramos las variables globales:

private static int DEFAULT_FPS = 80;
  private WormPanel wp;        // Donde se dibuja el gusano
  private JTextField jtfBox;   // muesra el numero de cajas usadas
  private JTextField jtfTime;  // muestra el tiempo usado en el juego

Ahora  viene el constructor

public WormChase(int period)
  { super("The Worm Chase");
    makeGUI(period);// Creamos la pantalla
    addWindowListener(this);//por aca escucha todos los eventos de pantalla
    pack();//auto regula el tamaño de la pantalla
    setResizable(false);
    setVisible(true);
  }  // fin de el constructor WormChase()

ahora una función que hace la pantalla

  private void makeGUI(int period)
  {
    Container c = getContentPane();    // BorderLayout usado por defecto
    wp = new WormPanel(this, period);// nuevo objeto WormPanel
    c.add(wp, "Center");
    JPanel ctrls = new JPanel();   // una fila de campos
    ctrls.setLayout( new BoxLayout(ctrls, BoxLayout.X_AXIS));//http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html
    jtfBox = new JTextField("Cajas usadas: 0");//caja de texto
    jtfBox.setEditable(false);
    ctrls.add(jtfBox);// la agrega
    jtfTime = new JTextField("Tiempo usado: 0 secs");
    jtfTime.setEditable(false);
    ctrls.add(jtfTime);
    c.add(ctrls, "South");// agrega el boxlayout al container
  }  // fin de makeGUI()

Si queremos modificar el texto de las cajas usamos dos funciones

    public void setBoxNumber (int no) {
        jtfBox.setText("Boxes used: " + no);
    }
    public void setTimeSpent (long t) {
        jtfTime.setText("Time Spent: " + t + " secs");
    }

setBoxNumber es una función utilizada por el objeto Obstacles cuando se crea una nueva caja
Ahora la función principal

    public static void main(String args[])
    {
        int fps = DEFAULT_FPS;
        if (args.length != 0)//lee de la linea de comandos
        fps = Integer.parseInt(args[0]);
        int period = (int) 1000.0/fps;
        System.out.println("fps: " + fps + "; period: " + period + " ms");
        new WormChase(period);    // pasamos el tiempo
    }

Las funciones que quedan son para la pausa, reanudación y fin del juego, y seran manejado por WindowListener

    public void windowOpened (WindowEvent e) {
    }
    public void windowIconified(WindowEvent e)
    {  wp.pauseGame(); }
    public void windowDeiconified(WindowEvent e)
    {  wp.resumeGame();  }
    public void windowDeactivated(WindowEvent e)
    {  wp.pauseGame();  }
    public void windowClosing(WindowEvent e)
    {  wp.stopGame();  }
    public void windowClosed (WindowEvent e) {
    }
    public void windowActivated(WindowEvent e)
    { wp.resumeGame();  }
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments