Invaders i variacions

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Introducció

Invaders és un tutorial per fer un videojoc, documentat a http://www.planetalia.com/cursos/Java-Invaders/JAVA-INVADERS-20.tutorial, i que em serveix per aprendre les tècniques bàsiques per programar la targeta de video fent sprites i totes aquestes coses. A partir d'aquí, en el projecte invaders_meu faig unes variacions per tal d'aproximar el codi al que jo vull. En definitiva, el que vull és dominar les tècniques de video bàsiques que em permetrant afegir efectes visuals als projectes musicals fets amb midishare.

Projecte Invaders

compilació

el projecte conté múltiples carpetes, des de la version01 fins la version29, que es corresponen al tutorial explicat de forma incremental. La carpeta res (de resources) conté els gràfics i fitxers de so que necessito.


Cada versió es correspon amb un paquet. Per exemple, en el fitxer Invaders.java puc veure:

package version29;

i això significa que la ruta de les fonts és /home/joan/workspace/invaders, i la classe la trobarà dins la carpeta version29.

Per tal de compilar totes les classes, ho puc ficar en el script ./compilar.sh:

javac -d /home/joan/workspace/Invaders/bin /home/joan/workspace/Invaders/src/version29/ResourceCache.java
javac -d /home/joan/workspace/Invaders/bin -classpath /home/joan/workspace/Invaders/src /home/joan/workspace/Invaders/src/version29/SpriteCache.java
javac -d /home/joan/workspace/Invaders/bin -classpath /home/joan/workspace/Invaders/src /home/joan/workspace/Invaders/src/version29/SoundCache.java
javac -d /home/joan/workspace/Invaders/bin -classpath /home/joan/workspace/Invaders/src /home/joan/workspace/Invaders/src/version29/Stage.java
javac -d /home/joan/workspace/Invaders/bin -classpath /home/joan/workspace/Invaders/src /home/joan/workspace/Invaders/src/version29/Actor.java
javac -d /home/joan/workspace/Invaders/bin -classpath /home/joan/workspace/Invaders/src /home/joan/workspace/Invaders/src/version29/Monster.java
javac -d /home/joan/workspace/Invaders/bin -classpath /home/joan/workspace/Invaders/src /home/joan/workspace/Invaders/src/version29/Player.java
javac -d /home/joan/workspace/Invaders/bin -classpath /home/joan/workspace/Invaders/src /home/joan/workspace/Invaders/src/version29/Bullet.java
javac -d /home/joan/workspace/Invaders/bin -classpath /home/joan/workspace/Invaders/src /home/joan/workspace/Invaders/src/version29/Bomb.java
javac -d /home/joan/workspace/Invaders/bin -classpath /home/joan/workspace/Invaders/src /home/joan/workspace/Invaders/src/version29/Laser.java
javac -d /home/joan/workspace/Invaders/bin -classpath /home/joan/workspace/Invaders/src /home/joan/workspace/Invaders/src/version29/Invaders.java

i per compilar (independentment del directori on s'executa):

$ java -classpath /home/joan/workspace/Invaders/bin version29.Invaders

Eclipse

En el cas del Eclipse,

File > New Project > Java Project
Project Name: Invaders (la primera lletra sempre amb majúscula)
Create new project in workspace
Create separate folders for sources and class files (aquesta serà la norma, posar les fonts a src/ i els class a bin/)

Default output folder: Invaders/bin (el que he dit)
Libraries: no cal ficar res

Finish

Ara tenim un projecte buit, i a partir d'aquí haurem d'anar afegint les classes.

File > New Class

Source folder: Invaders/src
Package: version29. Això significa que dins de src es crearà la carpeta version29/, i el fitxer .java estarà aquí dins. En el fitxer .java hauré d'especificar ''package version29;''.

Name: SpriteCache

i es crea el fitxer SpriteCache.java, amb el codi inicial:

package version29;

public class SpriteCache {

}

Si tinc codi per a aquesta classe, el fico aquí. Fer-ho així ho trobo més fàcil que no pas l'opció que em dóna de crear el projecte a partir de fonts ja existents.

Ara he d'anar afegint una a una totes les classes. S'executa i funciona, no cal ficar cap llibreria externa.

NetBeans

Project name: Invaders
/home/joan/workspace/Invaders
Build script name: build.xml
/home/joan/workspace/Invaders/src

En aquest cas no faig res de res. En els projectes midishare sí que hauré d'afegir la llibreria midishare.

Funciona perfectament. Efectivament, en el directori Invaders/ s'ha creat el fitxer build.xml, i les carpeta build/ i nbproject/. Les classes compilades es troben a:

/workspace/Invaders/build/classes/version29

Com que el projecte conté totes les versions (version01...version29), s'han compilat totes les versions.

Funciona perfectament, hauré de decidir si triar Eclipse o NetBeans com a entorn de programació.

Projecte Invaders_meu

En aquest projecte he modificat el projecte Invaders per anar adaptant-lo a les meves necessitats. Ara ja no és un videojoc. He canviat els dibuixos de la carpeta res/, i ara el coet és un simpàtic conill. El fons es va movent cap a la dreta, i això pot simular que el conill es mou (si li fes moure les cames). Amb el cursor el conill es pot moure en els quatre sentits.

Ho faig directament en el Eclipse. Necessito les següents classes: ResourceCahe, SpriteCache, Stage, Actor, Monster, Player, Invaders

Una de les millores és que el joc ocupa tota la pantalla (no és una finestra que es pot tancar), i no apareix el ratolí. Per tancar, tecla Q (quit)

Fixem-nos que al player se li poden fer moure les cames:

setSpriteNames( new String[] {"persona1.gif","persona2.gif"});
Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines