PDF de programación - Programando juegos para PDA con Software Libre

Imágen de pdf Programando juegos para PDA con Software Libre

Programando juegos para PDA con Software Libregráfica de visualizaciones

Publicado el 11 de Octubre del 2019
557 visualizaciones desde el 11 de Octubre del 2019
651,5 KB
55 paginas
Creado hace 19a (17/04/2005)
Programando juegos para PDA con

Software Libre

David Fernández Vaamonde

<david_fv(en)gpul(punto)org>

Indice
● PARTE I: Conociendo SuperWABA

– Introducción a SuperWABA
– Creando un entorno de trabajo

● Entorno de desarrollo
● Entorno de pruebas
● Entorno de producción
● Compilación y puesta en producción

– Radiografía de un programa en SuperWaba

● PARTE II: Programando juegos con SuperWABA

– Programando juegos: Introducción
– Programando juegos: Sprites y movimiento
– Programando juegos: Detección de colisiones
– Programando juegos: Sprites animados

Parte I: Conociendo SuperWABA

Introducción a SuperWABA

● ¿Qué es SuperWaba?

– Subconjunto de clases LIBRE de Java
– Máquinas virtuales LIBRES para distintas

plataformas usadas en PDAs:
● Symbian OS
● Palm OS
● WindowsCE

– Herramientas LIBRES para generación del formato

para cada Plataforma (.pdb, .exe, ...).

Introducción a SuperWABA

● ¿Qué es SuperWaba? (II)

– Licenciado bajo GPL (Para uso no comercial :] )
– Muchos ejemplos y algunos tutoriales libres (otros

comerciales).

– Página del proyecto: http://www.superwaba.com.br

+

Creando un entorno de trabajo.

● Elementos necesarios (ejemplo en Palm):

– Entorno de desarrollo

● Superwaba SDK
● Java (Java SUN, Java IBM, GCJ, Kaffe,...)
● Ant o Make

– Entorno de pruebas

● Pose
● Palm ROMs

Creando un entorno de trabajo (II)

● Entorno de desarrollo:

– Java (cualquier implementación)
● Compilador: javac, gcj (jikes NO)
● Máquina Virtual: Kaffe, GIJ, Java (Sun o IBM)
● Gestor del proyecto: Ant, Make
● En este taller:

– Compilador: gcj
– Máquina Virtual: java

– SuperWaba SDK (Clases Java y Binarios)

● Descarga en:

http://www.superwaba.com.br/en/downloads.asp

Creando un entorno de trabajo (III)

● Configurando el entorno de desarrollo:

– Configurando PATH y CLASSPATH

● export SUPERWABA_ROOT=~/superwabasdk_gpl
● export 

CLASSPATH=”$SUPERWABA_ROOT/lib/SuperWaba.jar:$
SUPERWABA_ROOT/lib/SuperWabaTools.jar:.”

● export PATH=”$PATH:$SUPERWABA_ROOT/bin”

Creando un entorno de trabajo (IV)
● Entorno de pruebas:
– Emulador POSE
– Palm ROMS

(http://www.palmos.com/dev/tools/emulator/)

– Waba Applet

● Configuración del entorno de Pruebas:

– Pose con la siguientes opciones desactivadas:

● Settings/Debugging:

– Hardware Register Acccess
– Proscribed Function Call
– Screen Access

Creando un entorno de trabajo (V)
● Entorno de producción:

– El propio PDA :)

● Configurando el entorno de producción:

– Máquina virtual para cada plataforma

($SUPERWABA_ROOT/lib/vm/<plataforma>)
● Palm:

– SuperWaba.prc, SuperWaba.pdf y SWNatives.prc en /

lib/vm/palm/...

● Windows CE:

– superwaba.exe, SDL.dll, SDL_net.dll, 

SuperWaba.pdb, MSW.pdb en lib/vm/ce y lib/vm/win32

Creando un entorno de trabajo (VI)

● Compilación de un programa

– Ejemplo de programa: bin/src/HelloWorld.java

● gcj ­C HelloWorld.java
● javac HelloWorld.java

– Ejecución del ejemplo en la herramienta de prueba:

● kaffe ­classpath $CLASSPATH 

waba.applet.Applet HelloWorld

● java waba.applet.Applet HelloWorld

Creando un entorno de trabajo (VII)

● Generando los formatos con Exegen y Warp

– Genera los formatos necesarios para ejecutar en cada

plataforma.
● Para palm:

– Exegen <NombreFichero> <ClasePrincipal> 

<Nombreaplicación>

● Exegen HolaMundo HolaMundo Hola
● Genera un fichero .prc

– Warp c <NombreAplicacion> <RecursosNecesarios>

● Warp Hola HolaMundo.class
● Genera un fichero .pdb

● Curiosidad: Cambio de los scripts para que funcionen con
Kaffe

Proceso de compilación

Creando un entorno de trabajo (y VIII)

● Gestionando el proyecto:

– Makefile (Tips)

● Creación de “targets” para Exegen y Warp
● Creación de “targets” para distintas arquitecturas

– make winCE, make palm,....

– Ant

● Sistema de compilación en Java
● Uso de targets “prefabricados”
● Basado en XML
● Más complejo que Make pero más específico y potente.

Creando un entorno de trabajo (y IX)
● Un ejemplo de Makefile:

JAVA_COMPILER= /usr/bin/gcj
JAVAVM= /usr/bin/kaffe
JAVA_OPTS= ­C
EXEGEN=Exegen
WARP=Warp
APPLET=waba.applet.Applet
NAME=HolaMundo
CLASSES=HolaMundo.class

all: compile exegen warp

compile:
        ${JAVA_COMPILER} ${JAVA_OPTS} *.java

exegen:
        ${JAVAVM} ${EXEGEN} ${NAME} ${NAME} ${NAME}

warp:
        ${JAVAVM} ${WARP} c ${NAME} ${CLASSES}

run:
        ${JAVAVM} ${APPLET} ${NAME}

Radiografía de un programa en

SuperWaba

● Un poco de código...

import waba.ui.*;
import waba.fx.*;
 
public class HelloWorld extends MainWindow
{
   public HelloWorld()
   {
      super("HelloWorld", NO_BORDER);
   }

   public void onPaint(Graphics g)
   {
      g.drawText("Welcome to SuperWaba", width >> 
3, height >> 1);
   }
}

Radiografia de un programa en

SuperWaba (II)

● Ciclo de vida de una aplicación clásica en SuperWaba

Radiografía de un programa en

SuperWaba (y III)
● Métodos a redefinir en la aplicación:

– onStart()

● Se ejecuta al comenzar la aplicación
● Ejecuta un repaint()

– onPaint()

● Se ejecuta al realizar un repaint()

– onEvent()

● Es llamado cuando hay un evento (pulsa botones, pinchar

con el lapiz...)

● Se tratan así los eventos de la aplicación:

– Evento → Reacción

Resumen Parte I

● Superwaba = Clases java libres+Binarios+VM

libres

● Proceso de

desarrollo=programación+compilación+generación
de formatos PDA.

● Elementos del

entorno=gcj+Kaffe+Makefile+Exegen+Warp
(Todo libre)

● Programación similar a un applet guiada por

eventos.

Parte II: Programando juegos con

SuperWaba

Programando Juegos: Introducción (I)
● Inclusión de nuevas clases en nuestro PDA:

– lib/vm/<arquitectura>/xplat/XPlatGame.pdb
– Otras pueden ser de utilidad (las iremos viendo si hacen falta).

● Se extiende la clase GameEngine

– Esta clase redefine nuevos métodos que llamen a

metodos derivados de la clase MainWindow

– Ciertos métodos son llamados cuando ocurren ciertos

eventos en el juego.

– Los eventos pueden también ser provocados por

funciones. (Ej.: refresh())

Programando juegos: Introducción (II)
● Diagrama de clases del esqueleto de un juego:

Programando juegos: Introducción (III)
● Atributos de GameEngine

– gameCreatorID: Cadena del creador del juego
– gameDoClearScreen: El juego borra la pantalla antes de cada

onPaint()

– gameHasUI: El juego usa o no interfaz de ventanas (mucho más

lento)

– gameIsDoubleBufferedSize: El juego hace doble-buffer
acelerando la presentacion y previniendo el parpadeo de pantalla.

– gameName: Nombre del juego
– gameRefreshPeriod: Tiempo en milisegundos en el que se llama

periódicamente a onPaint()

– gameVersion: Versión del juego (100 = 1.00).

Programando juegos: Introducción (IV)

● Funciones llamadas por eventos en el juego a

redefinir:
– onGameInit: Llamada al inicio de un juego. Main.
– onGameStart: Llamada por la función start()
– onGameStop: Llamada por la función stop()
– onPaint: Llamada cuando se hace un refresco de pantalla o

explícitamente por la función refresh()

– onOtherEvent: Llamada por otros eventos (UI, Teclas...)
– onTimer: Invocada cuando vence un timer.

Programando juegos: Introducción (V)

● Funciones que pueden ser llamadas en

GameEngine
– start(): Inicia el contador de juego y llama a

onGameStart().

– stop(): Para el contador del juego y llama a

onGameStop().

– refresh(): Llama a la función onPaint()
– createTextRenderer(): Crea un objeto de tipo

TextRender.

Programando juegos: Introducción

(VI)
● Ciclo de vida de un juego

onGameInit()

start()

onGameStart()
onGameStart()

refresh()

onPaint()

stop()

onGameStop

refresh()

Programando juegos: Introducción (VI)
● Ejemplo con TextRender

import superwaba.ext.xplat.game.*;
import waba.fx.*;
import waba.sys.*;
import waba.ui.*;

public class TextRender extends GameEngine{

    TextRenderer levelRenderer=createTextRenderer
(MainWindow.defaultFont, 
new Color(255,255,0), "TEXTO RENDER!:", 1);

    public TextRender(){
        gameName= "TextRender";        
        gameCreatorID= "davidfv";
        gameVersion=100;
        gameRefreshPeriod=20000;
        gameIsDoubleBuffered=false;
        gameDoClearScreen=false;   
        gameHasUI=false;


Programando juegos: Introducción (VII)

public void onGameInit(){
      levelRenderer.display(20,20,1,true);    
      start();
    }

    public void onStartGame(){
      refresh();
    }

    public void onPaint(Graphics gfx){
      levelRenderer.display(20,20,2,true);
    }
}

createTextRenderer(Font font, 
java.lang.String text, int maxDigits, 
boolean zeroPadding)

 

 

 

Color foreColor, 

 

 

Programando juegos: Sprites y movimiento

Sprite: Figura que interviene en un juego

● Figuras que interactúan en un juego.
● Un sprite es un objeto que extiende la clase Sprite
● Se moverá, colisionará y podrá estar animada.
● Sprite significa hada en inglés ;).

Programando juegos: Sprites y movimiento (II)

● Diagrama de clase de un sprite

Programando Juegos: Sprites y Movimiento (III)

● Constructor de un Sprite

● Imagen asociada al sprite (BMP)
● Color de transparencia del sprite (XOR...)
● Conservación del fondo del sprite
● Region válida del sprite ( null equivale a toda la pantalla)

● Atributos a redefinir del objeto Sprite
● centerX: Centro X del sprite (Determina su posición).
● centerY: Centro Y del sprite (Determina su posición).
● doClip: Define si se permite salir al sprite de la pantalla
● drawOp: Define como se dibujará el sprite en pantalla

– Graphics.DRAW_SPRITE, Graphics.DRAW_PAINT

● speed: Pixels con los que avanza a cada paso el sprite

¡CUIDADO CON LAS PATENTES!
● ¿Sabeis que el algoritmo XOR está patentado?
● ¿Eso quiere decir que nos pueden impedir usarlo para un

juego? ... SI...

● Las patentes de software (de algoritmos en general) son un freno a

la innovación y sirven para hacer tradding de patentes entre
multinacionales, para nada más.

● ¿Sabeis que hay una directiva de la comunidad europea que

aprueba ilegalmente las patentes de software en Europa?
  • Links de descarga
http://lwp-l.com/pdf16709

Comentarios de: Programando juegos para PDA con Software Libre (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad