Unas preguntillas de Java.

Estoy haciendo un juego (cutre) de Dragon Ball Z por consola en Java.

Os explico por encima como va...
- Tu eres Gokuh, con una fuerza de 20 y 100 de vida. Luchas contra Freezer, con una fuerza de 30 y 100 de vida.
Empiezas atacando tú. Te saldrá un número aleatorio entre 0 y 20. Ese será el daño que lo has hecho. Por ejemplo, si sacas 9, Freezer tendrá una vida de 91.
Seguidamente ataca él. Pasa lo mismo que con Gokuh pero el número aleatorio es entre 0 y 30.
- El primero que llegue a 0 pierde.
(Hasta aquí será mi primera versión seguramente [qmparto] Luego le añadiré defensa, límite (a lo Final Fantasy), elegir personaje etc.)

Entonces unas preguntillas...


- Para que la gente ejecute el juego, no hace falta que tenga el fichero .java no? Supongo que con el .class ya es suficiente.

- Para que la gente pueda ver el juego, qué versión de Java necesita tener? La SDK (que eran más de 100 mb) o alguna que pueda leer el juego aunque ellos no puedan compilar? Me podéis poner un enlace para bajar o el nombre de dicha versión?

- Los paquetes que haya usado, ellos los necesitan?
En el juego utilizo 2 paquetes:
a) El java.util.Random. Supongo que les funcionará...
b) El javabook2. Este paquete no viene con Java, sino que se tiene que tener en el Classpath (creo). La persona que quiera ejecutar el juego podrá? O también tendrá que tener ese paquete?

Creo que esto es todo. Gracias! :-)
K. Ichigo escribió:Estoy haciendo un juego (cutre) de Dragon Ball Z por consola en Java.

Os explico por encima como va...
- Tu eres Gokuh, con una fuerza de 20 y 100 de vida. Luchas contra Freezer, con una fuerza de 30 y 100 de vida.
Empiezas atacando tú. Te saldrá un número aleatorio entre 0 y 20. Ese será el daño que lo has hecho. Por ejemplo, si sacas 9, Freezer tendrá una vida de 91.
Seguidamente ataca él. Pasa lo mismo que con Gokuh pero el número aleatorio es entre 0 y 30.
- El primero que llegue a 0 pierde.
(Hasta aquí será mi primera versión seguramente [qmparto] Luego le añadiré defensa, límite (a lo Final Fantasy), elegir personaje etc.)

Entonces unas preguntillas...


- Para que la gente ejecute el juego, no hace falta que tenga el fichero .java no? Supongo que con el .class ya es suficiente.

Si

- Para que la gente pueda ver el juego, qué versión de Java necesita tener? La SDK (que eran más de 100 mb) o alguna que pueda leer el juego aunque ellos no puedan compilar? Me podéis poner un enlace para bajar o el nombre de dicha versión?

Necesitas el JRE (Java runtime edition) el JDK es para desarrollo (Java Development Kit)


- Los paquetes que haya usado, ellos los necesitan?
En el juego utilizo 2 paquetes:
a) El java.util.Random. Supongo que les funcionará...
b) El javabook2. Este paquete no viene con Java, sino que se tiene que tener en el Classpath (creo). La persona que quiera ejecutar el juego podrá? O también tendrá que tener ese paquete?

No. Pero si la aplicación tiene más de una clase evidentemente tendrás que darles todas las clases. Lo mejor es que lo metas todo en un jar
K. Ichigo escribió:- Para que la gente ejecute el juego, no hace falta que tenga el fichero .java no? Supongo que con el .class ya es suficiente.


Sólo necesita el .class

K. Ichigo escribió:- Para que la gente pueda ver el juego, qué versión de Java necesita tener? La SDK (que eran más de 100 mb) o alguna que pueda leer el juego aunque ellos no puedan compilar? Me podéis poner un enlace para bajar o el nombre de dicha versión?


Necesitan la máquina virtual de java actualizada a la versión con la que se creó el programa al menos.

K. Ichigo escribió:- Los paquetes que haya usado, ellos los necesitan?
En el juego utilizo 2 paquetes:
a) El java.util.Random. Supongo que les funcionará...
b) El javabook2. Este paquete no viene con Java, sino que se tiene que tener en el Classpath (creo). La persona que quiera ejecutar el juego podrá? O también tendrá que tener ese paquete?

Creo que esto es todo. Gracias! :-)




Si utilizas algún paquete externo tendrá que tenerlo para que pueda ejecutarlo. Debe guardarlo en el classpath como tu dices. Esto quiere decir que tendría que estar en el directorio con los demás .class organizado según la jerarquía que hayas definido
Muchas gracias por las respuestas.

Respecto al paquete .jar hoy me leeré algún manual para crear uno, ya que ayer me leí uno por encima. Lo empaqueté con java -jar nombre.jar pero me daba un error con la clase principal.

Respecto al javabook2 (que también es un .jar), si lo meto junto a las clases, hay alguna forma para que la gente no tenga que modificar lo del Classpath (en Windows, yendo a Mi pc y editar una línea.....)?
Si pones todos los archivos necesarios en el mismo directorio no hace falta modificar el classpath.
Como dice NGC el classpath sirve para indicarle a java dónde buscar más clases. Si las tienes en el mismo directorio no necesitas crear la variable de entorno o modificarla.
Gracias por vuestras respuestas [oki]

En Linux he compilado el .java con la versión SDK 1.4.2 (almenos es lo que me pone con 'java -version' o 'java -fullversion').

Al ejecutarlos en Windows, con la JRE 1.4.2_13, me da este error:

Imagen


Es que para ejecutarse tiene que ser la misma versión de java?? [reojillo] [reojillo]

He instalado en Linux el SDK 1.4.2_13 de un archivo .bin pero creo que no se ha instalado porque con lo de java -versión no sale que es la _13 :-(
Bueno esto va mejorando ;-)
Después del comentario de zootropo sobre Java 5, he visitado la página de Sun, informándome de las versiones, y veo que hay más actuales, como la JRE 6. Esa me la he instalado en Windows.

He compilado en Linux las clases (con 1.4.2) y las he empaquetado en un .jar.
He metido el javabook2.jar dentro también.
En Linux he editado el .bashrc para desactivar lo del ClassPath. Lo he ejecutado... y funciona!!

En Windows, con el JRE 6, he quitado el ClassPath de variables de entorno. Lo he ejecutado y... Error!

Me carga el juego hasta llegar al punto en que se utiliza el javabook2:
'Exception in threat 'main' java.lang.NoClassDefFoundError: javabook2/SimpleInput'

El código para compilarlo ha sido (escribo de memoria):

jar cmf manifest.txt DragonBallZ.jar DragonBallZ.class Player.class javabook2.jar

El archivo manifest.txt era:
Main-Class: DragonBallZ
Class-Path: javabook2.jar

TODOS los archivos en el mismo directorio (vaya, sin carpeta ni nada).


Sugerencias? :O
Yo no puedo ayudar al autor del hilo, pero para no abrir nuevos hilos intentaré aprovechar éste. Y es que tengo una duda referente al javabook2 y como hacérmelo para no tener que hacer siempre:

javac -classpath.:/home/.../javabook2.jar nombredelprograma.java

sino,

javac nombredelprograma.java

Lo que he probado de momento es:
- Edito ~/.bashrc para añadirle al final: EXPORT CLASSPATH="/home/aclapes/javabook2:."
- Ejecuto la orden: source ~/.bashrc en la consola.
- Intento compilar con la 2ª orden (sin -classpath...) y nada, (errores por los SimpleInput que tengo en el código).

Algo hago mal, supongo que el fallo estará en la linia añadida al .bashrc, pero no lo veo.

¿Alguien?

EDITO: Solucionado. Habia dos cosas problemas:
i) Al editar la linia escribo export y no EXPORT.
ii) Cerrar la consola del terminal, después de ejecutar el source, y volverla abrir antes del intento de compilación (orden javac).

Salu2!
10 respuestas