Hola
Acabo de terminar un arcade que imita en cierta parte a el mítico juego Space Invaders:
(http://img205.imageshack.us/img205/1762/screenshot1gn6.png)
La idea de hacer este juego, así como los sprites están sacados de esta web:
http://www.planetalia.com/cursos/
Eso si, el código no se parece en nada, así que tenéis dos ejemplos de lo mismo :P Aun le faltan muchas cosas por añadir, como niveles, unas animaciones más depuradas, un fondo, vidas, etc, etc.. Por ahora solo se puede jugar a un nivel que se acaba cuando matéis a los marcianitos o ellos a vosotros. Los marcianos chocan entre ellos, se mueven aleatoriamente y poco más jajaja Así que si queréis mejorarlo pues ya sabéis ;)
Espero que a alguien le sea útil
Salu2 E0N
Gracias por el aporte... ¿le puedo patrocinar en el blog?
Gracias E0N, estare mirando el código y que bueno que sea Java ;)
Cita de: Casidiablo en 2 Septiembre 2008, 16:18 PM
Gracias por el aporte... ¿le puedo patrocinar en el blog?
Hombre, por supuesto ;) Anda que no habré aprendido cosas de tu blog, espero que le sea de ayuda a alguien.
Salu2 y gracias por los comentarios
Oooh no :o :o el alumno ha superado al maestro jojojo!!!! >:D >:D
Y yo que estaba haciendo mi version de esto, aun no lo he probado...pero si le has metido el sonidito tipico de los marcianos...te suuuupeeer felicitare!! xd
Asi que revisare el codigo y vere que tal curras!!!
PD: Yo tambien lo publicare en mi foro sin tu consentimiento por supuesto!!! xd
Saludos
Pues yo aprovechando los recursos gráficos de esa pagina y metiendo de los mios lo voy a hacer en visual basic. Y si me queda wapo lo haré en delhpi que seguro que lo hago muchisimo mejor.
PD: Al final no he usado los recursos de esa pagina. He pillao haciendo una chapuza las naves de las guerras de las galaxias.
Lucasarts tiembla !
Lastima que no sea de C++ :P
Me gustan mas hechos en SDL y C++. Aunque no he logrado nunca hacer uno pero sigo intentando :xD
Cita de: Burnhack en 2 Septiembre 2008, 20:54 PM
Oooh no :o :o el alumno ha superado al maestro jojojo!!!! >:D >:D
Y yo que estaba haciendo mi version de esto, aun no lo he probado...pero si le has metido el sonidito tipico de los marcianos...te suuuupeeer felicitare!! xd
Asi que revisare el codigo y vere que tal curras!!!
PD: Yo tambien lo publicare en mi foro sin tu consentimiento por supuesto!!! xd
Saludos
no lleva sonido :P
felicidades!!! muy bueno :xD yo estoy empezando con java y no dudo que me servirá >:D... y dentro de poco se viene mi tarea de programación y las malas lenguas dicen que dejan hacer juegos (laberintos y otro que no recuerdo)
que conste que no planeo ripear nada xD
por cierto, si te sirve (es que yo estoy un poco clavado con la interfaz gráfica de java)
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e){
}
esto hace que se vea nativa, independientemente de la plataforma, lo digo por los popups :xD
salu2
CitarOooh no :o :o el alumno ha superado al maestro jojojo!!!! >:D >:D
Bueno, bueno, quien te ha asignado ese título?? :¬¬ jajajaja Este una choradilla (y bastante incompleto, pero por algo se empieza :P), verás cuando saque mi próximo juego, va a crear más expectativa incluso que el mítico tetris ese que tienes en mente jajajaja
Estoy programando ni más ni menos que un....... Pong!!! jaja si, si, me refiero al juego más cutre y aburrido de la historia de los arcades xD Pero esta vez ya lo voy a hacer completo con su pantallita de selección de un player o dos y puede que hasta un sonidito para los rebotes de la bola (http://img300.imageshack.us/img300/1976/jaaaih6.png) jajajja
CitarPD: Yo tambien lo publicare en mi foro sin tu consentimiento por supuesto!!! xd
Así me gusta xD pero ya sabes que te dejo :P
CitarPues yo aprovechando los recursos gráficos de esa pagina y metiendo de los míos lo voy a hacer en visual basic. Y si me queda wapo lo haré en delhpi que seguro que lo hago muchísimo mejor.
PD: Al final no he usado los recursos de esa pagina. He pillado haciendo una chapuza las naves de las guerras de las galaxias.
Lucasarts tiembla !
Jajajaja entre tu y yo les vemos a arruinar :P Yo no me e atrevido a pintar nada, por que tengo un arte que tela :rolleyes: :rolleyes: :-\
VB no te lo recomiendo yo hice algunas pruebas en su día con dxlib (creo recordar que se llamaba) y al intentar hacer algo que mueva unos cuantos sprites (véase el típico mapa compuesto de cuadraditos) se peta que da gusto, en delphi ni idea, de lo que he probado Java sin lugar a dudas lo mejor (tanto para juegos 2D como de lenguaje, para que mentir xD) y C# + XNA también está bastante bien, pero no es multiplatarforma y es más complejo que java.
Citarpor cierto, si te sirve (es que yo estoy un poco clavado con la interfaz gráfica de java)
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e){
}
esto hace que se vea nativa, independientemente de la plataforma, lo digo por los popups
Gracias, no lo conocía, pero de todas formas me sigue gustando más el estilo del swing, combina muy bien con el theme del emerald que tengo puesto jajajajaja que pijales que soy :P
Muchas gracias a todos por los comentarios ;)
Salu2
CitarJava sin lugar a dudas lo mejor (tanto para juegos 2D como de lenguaje, para que mentir xD) y C# + XNA
Uff, pero si la mayoria de juegos son creados en c++ con SDL, OpenGL o (no me acuerdo la otra)...
Y no porque la mayoria siempre es lo mejor (vease Microsoft) sino que los resultados tambien apuntan a C++. :P
Cita de: Freeze. en 3 Septiembre 2008, 01:09 AM
CitarJava sin lugar a dudas lo mejor (tanto para juegos 2D como de lenguaje, para que mentir xD) y C# + XNA
Uff, pero si la mayoria de juegos son creados en c++ con SDL, OpenGL o (no me acuerdo la otra)...
Y no porque la mayoria siempre es lo mejor (vease Microsoft) sino que los resultados tambien apuntan a C++. :P
Lo único que no puedo pelear es que java se ejecuta en maquina virtual lo que lo hace mas lento que C++, pero, no tanto :P porque en lo que a gráficos se refiere, java también tiene excelentes frameworks para 3D y se hacen excelentes cosas.
Citar
Estoy programando ni más ni menos que un....... Pong!!! jaja si, si, me refiero al juego más cutre y aburrido de la historia de los arcades xD Pero esta vez ya lo voy a hacer completo con su pantallita de selección de un player o dos
A mi me hicieron hacer un pong de 1 o 2 jugadores para elegir en la universidad pero programado en flash. La verdad esque esta divertido un pong.
Por cierto, sigo con mi juego de las guerras de las galaxias y va viento en popa. Las naves ya se mueven pero he tenido un pequeño problema con el sonido ya que al cerrar el juego se keda como el sonido pillado. Por lo demas perfecto.
Ponos unos pantallazos skapunky, que me pica la curiosidad :P
CitarUff, pero si la mayoria de juegos son creados en c++ con SDL, OpenGL o (no me acuerdo la otra)...
Java es más rápido a la hora de programar, cómodo y bastante más sencillo, por no hablar de la facilidad para hacer funcionar tu juego en un movil, linux, windows, mac, una pda, etc, etc
Que java rinde menos? pues si, pero merece la pena por las ventajas que aporta, o eso creo yo, cada uno que programe en lo que quiera :P
Yo solo comentaba, ya que de Java no puedo hablar porque nunca lo he usado. ;)
No te ofusques xD
Ummm, se me había olvidado el post (129 descargas XD):
http://casidiablo.net/marcianos-java/
(http://i270.photobucket.com/albums/jj96/Casidiablo/screenshot_01.png)
Un saludo!
Jaja joer, que de descargas ^^ que chulo, ahora mismo voy a publicar el pong a ver si también le interesa a la gente xD
podrias/ian explicarme mas o menos esta linea
Marciano auxMarciano = (Marciano)marcianos.get(indexMarciano);
tambien esta que es la misma pero con los misiles
Misil auxMisil = (Misil)misiles.get(indexMisil);
por lo que entiendo crea un objeto de la clase Marciano, no se que mas, y el valor de numero que lleva el bucle
pero no lo comprendo bien
haaa y otra cosa....en que momento, se llama a los metodos paint y doblebuffer ??
por lo que estuve leyendo se autoinvocan pero no se cuando.....
gracias
Meto a todos los marcianos y todos los misiles en un LinkedList, lo que hago en esas dos líneas es "sacarlos" y ver si chocan uno por uno.
Paint se llama constantemente, fíjate que la clase hereda de JFrame, lo que hago es sobrescribir su método paint para pintar lo que yo quiera. DobleBuffer es para que no se vea con parpadeo la imagen ;)
Salu2
ok muchas gracias, me sirvio de mucho.......
tengo otra pregunta mas :P
a modo de entrenar un poc le estoy incorporando al juego 1 enemigo mas, el tema es que este es uno solo y difiere de los demas, ya tengo todo menos el metodo morir()...
que deberia de poner en el metodo morir() para que deje de existir este enemigo que se encuentra en la clase "Mutante" y dentro de la clase Main lo defini asi
private Mutante mutan;
private BufferedImage imMutante;
public int vidas=0;
estoy bastante pesado con las preguntas
Pues cuando se muera si es uno solo, lo dejas de pintar, si son varios lo borras de la lista como hago con los marcianos o los misiles. Ponle en su clase un booleano que sea muerto y cuando esté en true no lo pintes por ejemplo.
Wow, EON, no tenía ni idea de que también te manejases en Java... :o
Está claro que ningun lenguaje se te resiste, estas hecho un crack :D
Gran trabajo man ^^
gracias E0N lo puede solucionar como decis vos, lo deje de pintar y ademas deje de comprobar si se interceptan los rectangulos.....
yyy otra pregunta :-[
quiero poner una imagen de fondo asi que modifique el metodo psint asi
public void paint (Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Image mImagen = createImage(ANCHO, ALTO);
Image fondo = Toolkit.getDefaultToolkit().getImage("C:/IMAGE");
dobleBuffer((Graphics2D)mImagen.getGraphics());
g2.drawImage(fondo, 0, 0, ANCHO, ALTO, this);
g2.drawImage(mImagen, 0, 20, this);
try { Thread.sleep(30); } catch(Exception e) {}
}
pero me titila porque no uso doble buffer verdad?
el tema es que quize poner un doble buffer como ahi pero no me deja......
como puedo hacer para que no titile la imagen de fondo?
muchas gracias de verdad
Claro, tienes que pintarla dentro de la función dobleBuffer para que no parpadee, te tiene que dejar :P eso si, pintala la primera por que si no se te superpone a todos los marcianos y la nave xD En el foro hay otro ejemplo mio de un pong que tiene imagen de fondo y de más, miratelo ;)
Esta excelente, estoy haciendo un juego pa la U, que se llama KillerEmo, sin animo de ofender :rolleyes:, espero poder terminarlo pronto.
Bye salu2
AmeRiK@nO
Hey esta "chido" el space invaders, si tengo tiempo le metere algo personalizado.
-berz3k.
;D gracias! me estan pasando swing en java y esto me sirve =) , saludos! :P
Gracias a todos ;)
CitarEsta excelente, estoy haciendo un juego pa la U, que se llama KillerEmo
Jajajajajajajajaja pues nada, esperando a que lo subas :xD :xD
hola hola....
una ultima cosa queria saber...... el problema que tengo ahora es cuando quiero cargar las imagenes. el programa asi como esta si lo quiere usar sin el JAR, osea compilando el source me tira error en las imagenes.
entonces hice esto
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.imageio.*;
public class Mystery {
public static void main(String[] args) {
System.out.println(Ruta());
}
public static String Ruta() {
File appPath = new File(System.getProperty("java.class.path"));
try {
appPath = appPath.getCanonicalFile().getParentFile();
}
catch (IOException e) { }
String ret = appPath.toString() + File.separator;
return ret;
}
para ver la salida de dicho metodo y rsulta que este metodo me da como salida lo siguiente
C:\Documents and Settings\Administrador\Escritorio\Programacion\Java;C:\Archivos de programa\Java\jdk1.6.0_06\jre\lib\rt.jar;C:\Archivos de programa\Java\jdk1.6.0_06\lib\dt.jar;C:\Archivos de programa\Java\jdk1.6.0_06\lib\tools.jar;C:\Archivos de programa\Java\jdk1.6.0_06\jre\lib\ext\dnsns.jar;C:\Archivos de programa\Java\jdk1.6.0_06\jre\lib\ext\localedata.jar;C:\Archivos de programa\Java\jdk1.6.0_06\jre\lib\ext\sunjce_provider.jar;C:\Archivos de programa\Java\jdk1.6.0_06\jre\lib\ext\sunmscapi.jar;C:\Archivos de programa\Java\jdk1.6.0_06\jre\lib\ext\sunpkcs11.jar
donde lo que realmente importa es la primera parte......
C:\Documents and Settings\Administrador\Escritorio\Programacion\Java
todo lo otro no se porque sale ahi......
podrias explicarme que es lo que en realidad hace ese metodo, porque estuve leyendo la informacion oficial pero me dice la dirccion canonica y ni idea que es eso........
gracias por todo :P
Que se supone que quieres hacer exactamente? Meter las imágenes dentro del Jar o en una carpeta aparte? (Como está ya programado)
nono
lo que pasa es que el programa asi como esta (recien descargado) me tira un error al cargar las imagenes si compilo desde el source, me dice que no se pudieron cargar las imagenes y hace referencia a esa ruta que puse arriba.
lo que quiero es que pueda jugar el juego haciendolo correr desde lo source compilado y ejecutando desde ahi, no desde el jar
pero ya te digo, el metodo miRuta() me devuelve esa ruta larga y no la que realmente deberia.....
no se porque.
Pues ni idea de por qué puede ser, a mi con el NetBeans no me da problemas y el eclipse tampoco los da... tu que ide usas?
el problema no creo que sea el copilador ya que uso JCreator y eclipse, el tema es en tiempo de ejecucion, pero aun asi....
podrias explicarme estas dos lineas por favor...
File appPath = new File(System.getProperty("java.class.path"));
appPath = appPath.getCanonicalFile().getParentFile();
gracias =D
Eyy, gracias por postearlo, me viene de perlas ya que ahora estoy aprendiendo algo de JAVA.
Otra cosa, en la carpeta JAR está "Marcianitos" y las imágenes, hay alguna manera de "meterlo todo en un pack", es decir, que si yo por ejemplo le quiero pasar a alguien el juego en un sólo fichero, ¿es posible?
Un saludo.
Cita de: WannaBeHacker en 19 Octubre 2008, 02:49 AM
Eyy, gracias por postearlo, me viene de perlas ya que ahora estoy aprendiendo algo de JAVA.
Otra cosa, en la carpeta JAR está "Marcianitos" y las imágenes, hay alguna manera de "meterlo todo en un pack", es decir, que si yo por ejemplo le quiero pasar a alguien el juego en un sólo fichero, ¿se podría hacer ?
Un saludo.
E0N aca te dejo un poco mas de info de porque no me anda el metodo ese
lo que hize fue que me respondiera el catch y
public static String miRuta()
{
File appPath = new File(System.getProperty("java.class.path"));
try
{
appPath = appPath.getCanonicalFile().getParentFile();
}
catch (IOException e) { e.printStackTrace(); }
String ret = appPath.toString() + File.separator;
return ret;
}
--------------------Configuration: <Default>--------------------
java.io.IOException: El nombre de archivo, directorio o etiqueta del volumen no es válido
at java.io.WinNTFileSystem.canonicalize0(Native Method)
at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:396)
at java.io.File.getCanonicalPath(File.java:559)
at java.io.File.getCanonicalFile(File.java:583)
at Main.miRuta(Main.java:202)
at Prota.<clinit>(Prota.java:13)
at Main.<init>(Main.java:51)
at Main.main(Main.java:29)
Process completed.
las lineas que estan invulucradas segun eso son estas:
at Main.miRuta(Main.java:202)
appPath = appPath.getCanonicalFile().getParentFile();
at Prota.<clinit>(Prota.java:13)
private static final String rutaImagen = Main.miRuta() + "image" + File.separator + "prota.gif";
at Main.<init>(Main.java:51)
prota = new Prota(ANCHO/2, ALTO-Prota.altoImagen-50);
at Main.main(Main.java:29)
public static void main(String[] args) { new Main(); }
el error en si deve de estar en esta linea
appPath = appPath.getCanonicalFile().getParentFile();
o en esta
private static final String rutaImagen = Main.miRuta() + "image" + File.separator + "prota.gif";
aunque porque a mi me da ese error en tiempo de ejecucion :/ , espero que puedas ayudarme
Cita de: WannaBeHacker en 19 Octubre 2008, 02:49 AM
Eyy, gracias por postearlo, me viene de perlas ya que ahora estoy aprendiendo algo de JAVA.
Otra cosa, en la carpeta JAR está "Marcianitos" y las imágenes, hay alguna manera de "meterlo todo en un pack", es decir, que si yo por ejemplo le quiero pasar a alguien el juego en un sólo fichero, ¿es posible?
Un saludo.
Si, si se puede meter todo en el JAR para que requiera un solo archivo, si buscas puedes encontrar mucha información al respecto:
http://www.javahispano.org/forum/j2se/es/ficheros_dentro_del_ejecutable_jar/
http://www.lawebdelprogramador.com/news/mostrar_new.php?id=44&texto=Java&n1=13026&n2=1&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0
http://www.lawebdelprogramador.com/news/mostrar_new.php?id=44&texto=Java&n1=13026&n2=2&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0
Tienes que cambiar un poco el código y listo ;)
@ ~[uNd3rc0d3]~ No tengo ni idea de a que se puede deber ese error, si a mi me lo diera podría investigar un poco al respecto, pero no puedo... A mi tal y como está me funciona perfectamente (uso net beans bajo linux) así que no te puedo decir... A ver si a alguien más le pasa lo mismo y te puede indicar como lo a solucionado.
Prueba a poner la carpeta de imágenes en distintas rutas a ver.. Te pasaatambién con el otro juego que colgué? El Pong??
Salu2
tambien me susude con el pong si....
sera porque estoy bajo windows con eclipse?
getCanonicalFile().getParentFile(); aparentemente es quien da el error :-\
voy a ver si lo puedo solucionar de alguna manera, gracias igualmete E0N
Cita de: E0N en 21 Octubre 2008, 23:54 PM
Cita de: WannaBeHacker en 19 Octubre 2008, 02:49 AM
Eyy, gracias por postearlo, me viene de perlas ya que ahora estoy aprendiendo algo de JAVA.
Otra cosa, en la carpeta JAR está "Marcianitos" y las imágenes, hay alguna manera de "meterlo todo en un pack", es decir, que si yo por ejemplo le quiero pasar a alguien el juego en un sólo fichero, ¿es posible?
Un saludo.
Si, si se puede meter todo en el JAR para que requiera un solo archivo, si buscas puedes encontrar mucha información al respecto:
http://www.javahispano.org/forum/j2se/es/ficheros_dentro_del_ejecutable_jar/
http://www.lawebdelprogramador.com/news/mostrar_new.php?id=44&texto=Java&n1=13026&n2=1&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0
http://www.lawebdelprogramador.com/news/mostrar_new.php?id=44&texto=Java&n1=13026&n2=2&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0
Tienes que cambiar un poco el código y listo ;)
[...]
Salu2
Muchas gracias, ahora le echo un vistazo ;)
Hola. He entrado en la web que has puesto pero el archivo .jar no está disponible para bajar. Tengo el "Invaders.jnlp" pero me falta el otro archivo .jar
¿Podrías subirlo por favor? Muchas gracias :)