Mostrando entradas con la etiqueta Introduccion. Mostrar todas las entradas
Mostrando entradas con la etiqueta Introduccion. Mostrar todas las entradas

sábado, 18 de abril de 2009

Esqueleto Basico

Bueno, este es el esqueleto basico que seguiran la mayoria de los juegos, no voy a explicar mucho, solo sera dar el codigo, ya que esta explicado en Conceptos.

Main.java
package packagenamehere;

import javax.swing.JFrame;

/**
*
* @author fede
*/
public class Main extends JFrame {
public Main(){
add(new Board());
setTitle("Skeleton");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300,300);
setLocationRelativeTo(null);
setVisible(true);
setResizable(false);
}

public static void main(String[] args) {
new Main();
}

}


Board.java
package packagenamehere;

import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Color;

// timer
import javax.swing.Timer;
import java.awt.Toolkit;

// teclas y timer
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

// teclas
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

/**
*
* @author fede
*/
public class Board extends JPanel implements ActionListener {
private Timer timer;
public Board(){
setDoubleBuffered(true);
setFocusable(true);
addKeyListener(new Listener());
setBackground(Color.white);

timer = new Timer(5, this);
timer.start();
}

public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D)g;

// Dibuja aca

Toolkit.getDefaultToolkit().sync();
g.dispose();
}

public void actionPerformed(ActionEvent e){
// Logica aca

repaint();
}

private class Listener extends KeyAdapter{
@Override
public void keyPressed(KeyEvent e){
// Metodo de los objetos que reciben input
}

@Override
public void keyReleased(KeyEvent e){
// Metodo de los objetos que reciben input
}
}
}


Si leyeron el post de Animacion, veran que digo que hay mas timers, este utiliza threads, y es una forma mas efectiva aunque un poco mas complicada de hacerlo.

Board.java
package packagenamehere;

import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Color;

// timer
import java.awt.Toolkit;

// teclas
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

/**
*
* @author fede
*/
public class Board extends JPanel implements Runnable {
private Thread thread;
private final int DELAY = 50;
private GameState gameState;
private MenuScreen menuScreen;

public Board(){
setDoubleBuffered(true);
setFocusable(true);
addKeyListener(new Listener());
setBackground(Color.white);
}

@Override
public void addNotify(){
super.addNotify();
thread = new Thread(this);
thread.start();
}

@Override
public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D)g;

// Dibuja aca

Toolkit.getDefaultToolkit().sync();
g.dispose();
}

public void cycle(){
// Logica aca
}

@Override
public void run(){
long beforeTime, timeDiff, sleep;

beforeTime = System.currentTimeMillis();

while(true){
cycle();
repaint();

timeDiff = System.currentTimeMillis() - beforeTime;
sleep = DELAY - timeDiff;

if (sleep < 0)
sleep = 2;

try {
Thread.sleep(sleep);
} catch (InterruptedException e) {
System.out.println("interrupted");
}

beforeTime = System.currentTimeMillis();
}
}

private class Listener extends KeyAdapter{
@Override
public void keyPressed(KeyEvent e){
// Metodo de los objetos que reciben input
}

@Override
public void keyReleased(KeyEvent e){
// Metodo de los objetos que reciben input
}
}
}

viernes, 17 de abril de 2009

Antes de Comenzar

Descargas
Todo lo que es utilizado acá, es gratis :)
El IDE que yo utilizo es NetBeans, lo pueden descargar de acá. Utilizo la version que solo tiene Java (40mb~).
Lo otro que necesitan es el Java SE SDK, lo pueden descargar de la web de sun.
Una vez que tengan eso, ya pueden empezar a seguir este blog. (Primero instalar el SDK, despues el IDE)

Antes de comenzar
Si hace tiempo no ves nada en Java, y sabes programar, es buena idea hacerle un repaso rápido, con alguna documentación que tengan ustedes o haciendo pequeños programas. Lo más importante que usaremos acá sera Variables, Arrays, Estructuras de control de flujo, y OOP (Programacion Orientada a Objetos)
Si no sabes programar en Java, recomiendo un pequeño libro gratuito online, lo podes ver acá. Es bastante corto, conciso y explica bien los temas que nos conciernen.
También recomiendo usar NetBeans, ya que es el IDE (Integrated Development Envirment) que use para hacer esto y el código fuente incluye el proyecto de NetBeans.