elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 00:30  


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales

+  Foro de elhacker.net
|-+  Informática
| |-+  Juegos y Consolas (Moderador: Castiblanco)
| | |-+  [Hilo oficial] Desarrollo de Videojuegos
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] 3 4 5 6 7 8 9 10 Ir Abajo Respuesta Imprimir
Autor Tema: [Hilo oficial] Desarrollo de Videojuegos  (Leído 23,761 veces)
Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #15 en: 9 Septiembre 2010, 20:55 »

Como SDL y Allegro, los dos tienen para crear ventanas propias, sin necesidad de usar la cabecera windows.h


En línea


Ari Slash


Desconectado Desconectado

Mensajes: 1.758



Ver Perfil WWW
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #16 en: 9 Septiembre 2010, 21:13 »

gracias
vamos a poner pilas

saludos


En línea


Ariath


Desconectado Desconectado

Mensajes: 2.130


Ver Perfil WWW
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #17 en: 9 Septiembre 2010, 23:39 »

Mirando cosas del proyecto Mono (proyecto que permite ejecutar aplicaciones .NET en Linux y Mac) me he encontrado con otro llamado MonoXNA, el cual, por lo que he entendido, es una versión libre del Microsoft XNA.

Para el que no sepa lo que es el XNA... os pongo de la Wikipedia XD :

Cita de: Wikipedia: Microsoft XNA
Microsoft XNA (XNA's Not Acronymed, XNA no es un acrónimo) es un conjunto de herramientas con un entorno de ejecución administrado proporcionado por Microsoft que facilita el desarrollo de juegos de ordenador y de gestión. Intentos para liberar a los desarrolladores de juegos la creación de "repetitivo código"1 y traer diferentes aspectos de la producción de juego en conjunto de un único sistema2 el XNA es una herramientas que se anunció el 24 de marzo de 2004, en la Game Developers Conference en San José, California. La primera comunidad Technology Preview de XNA Build fue lanzado el 14 de marzo de 2006. XNA Game Studio 2.0 fue lanzado en diciembre de 2007, seguida de XNA Game Studio 3.0 en 30 de octubre de 2008.

XNA actualmente abarca secciones de Microsoft Game Development Sections, incluyendo el estándar Kit de desarrollo de Xbox y XNA Game Studio.

Es decir, es con lo que se crean los juegos amateur (también llamados "indie") que pululan por el XBox Arcade.

El mismo también está disponible para desarrollar juegos en Windows, y aunque no se el grado de desarrollo que lleva la versión libre, con su ayuda también se podrán ejecutar los mismos en Linux y Mac.

Voy a desempolvar el Visual Studio 2008 Express, porque de momento voy a hacer algunas cosas con el, y de paso, como quiero hacer una pequeña guía para configurar el CodeBlocks para trabajar con SDL, también la haré para hacer lo mismo con el Visual C++.

Salu2
En línea
EvilGoblin


Desconectado Desconectado

Mensajes: 2.320


YO NO LA VOTE!


Ver Perfil
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #18 en: 10 Septiembre 2010, 04:46 »

El mismo SDL crea la ventana.

Al ser portable, cambiando solo 2 o 3 lineas. Lo compilas tanto en Linux como Windows..

grabe con Snagith Portable (lo llevo siempre en el Pendrive con las herramientas q mas uso)

tambien esta para Python SDL. Es bastante sencillo de usar..

despues grabo un nuevo video y subo el codigo.
En línea

Experimental Serial Lain [Linux User]
Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #19 en: 10 Septiembre 2010, 09:39 »

Yo realmente a los "novatos" recomiendo que empiecen python..

Y que luego miren PyGame y PythonSDL

De hecho yo en cuanto tenga tiempo libre(Navidad) empezare con Python y PHP.
En línea


Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #20 en: 10 Septiembre 2010, 14:06 »

Sacar información de lo que hace el cursor no es nada complicado gracias a Allegro, gracias a este code, podemos conseguir una especie de shooter.

Os pongo el code y una pantalla de lo que hace, no explicaré nada porque es más sencillo que el agua.

Pantalla:


Code:

Código
#include <allegro.h> //It's my love
 
//BY P4|3L0-KOMODO
 
int main()
{
   allegro_init();
   install_mouse();
   install_keyboard();
 
   set_color_depth(16);
   set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 1024, 768, 0, 0);
 
   BITMAP* mouse_image = load_bitmap("pointer.bmp", 0);
   BITMAP* buffer = create_bitmap(screen->w, screen->h);
 
   position_mouse(50,50);
 
   while(!key[KEY_ESC])
   {
       draw_sprite(buffer, mouse_image, mouse_x, mouse_y);
       textprintf_ex(buffer,font,mouse_x,(mouse_y-30),makecol(0,255,255),-1,"%i %i",mouse_x,mouse_y);
 
       if(mouse_b&1 && mouse_b&2){
           textprintf_ex(buffer,font,50,50,makecol(250,0,255),-1,"Estas pulsando el boton izquierdo y el boton derecho");
       }
       else
       {
           if(mouse_b&1)
               textprintf_ex(buffer,font,50,50,makecol(255,0,0),-1,"Estas pulsando el boton izquierdo");
 
           if(mouse_b&2)
               textprintf_ex(buffer,font,50,50,makecol(0,0,255),-1,"Estas pulsando el boton derecho");
 
           if(mouse_b&4)
               textprintf_ex(buffer,font,50,50,makecol(0,255,0),-1,"Estas pulsando el boton central");
       }
 
       blit(buffer, screen, 0, 0, 0, 0, screen->w, screen->h);
       clear_bitmap(buffer);
   }
 
   return 0;
 
} END_OF_MAIN()
 

Necesitais el pointer.bmp, que sería simple y llanamente un bmp con forma de puntero.



Espero que os guste.
« Última modificación: 10 Septiembre 2010, 15:20 por Ariath » En línea


Ariath


Desconectado Desconectado

Mensajes: 2.130


Ver Perfil WWW
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #21 en: 10 Septiembre 2010, 14:58 »

Esto... ¿Me pasa solo a mí el verte los caracteres acentuados como interrogaciones?

Es parecido a SDL por lo que veo.

Por cierto... ¿Qué son estos dos parámetros?

textprintf_ex(buffer,font,50,50,makecol(255,0,0),-1,"Estas pulsando el boton izquierdo");

Salu2


P.D: Acordaos de usar las etiquetas GeSHi, que queda el código mucho más presentable. Si solo es añadirle el =cpp a la primera etiqueta del code :P .
En línea
Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #22 en: 10 Septiembre 2010, 15:10 »

no, ariath es que esto es de http://foro.code-makers.net/forum/ y cambiaron la BD ahora edito.

Hace ya mucho que no toco allegro, pero lo makecol es el color... RGB algo obvio si ves que los valores son 3 y no superan 255 jajaja

y el otro pues ni idea, me lo aprendi usando el -1 y en todos se usa -1.

Ahora edito y añado más codes ;D
En línea


EvilGoblin


Desconectado Desconectado

Mensajes: 2.320


YO NO LA VOTE!


Ver Perfil
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #23 en: 10 Septiembre 2010, 15:16 »

Komodo No es por insinuar nada.. pero ese puntero no sirve xD

tiene q ser al reves... pork el unico pixel que se marca al pulsar es 1,1 .. lo demas es solo dibujo... :P

Utilize una vez allegro.. parece util para los Juegos en 3D.. pero para eso aprenderia Ogre3D (motor grafico) ya que utilizar OpenGL seria demaSiado complejo para un juego x.X
En línea

Experimental Serial Lain [Linux User]
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.647


My software never has bugs. Its just features!


Ver Perfil WWW
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #24 en: 10 Septiembre 2010, 15:19 »

Yo preferiría usar lirrlicht.. :P A ver que sale
En línea

Ariath


Desconectado Desconectado

Mensajes: 2.130


Ver Perfil WWW
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #25 en: 10 Septiembre 2010, 15:22 »

He modificado un poco el código, ordenándolo para que quede más "mono" :) .

No se porque, pero cuando corrijo textos de mensajes retocando espacios, a veces en la previsualización, los espacios aparecen como cosas al estilo de %20 o algo así (no recuerdo ahora mismo el texto exacto).

Salu2
En línea
Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #26 en: 10 Septiembre 2010, 15:22 »

¿Por qué a ver?

por cierto me funcionaba.
En línea


[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.647


My software never has bugs. Its just features!


Ver Perfil WWW
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #27 en: 10 Septiembre 2010, 16:09 »

Si ariath, a mi a veces me ha pasado eso.. :S
En línea

EvilGoblin


Desconectado Desconectado

Mensajes: 2.320


YO NO LA VOTE!


Ver Perfil
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #28 en: 10 Septiembre 2010, 18:19 »

¿Por qué a ver?

por cierto me funcionaba.

Si quisieras apuntar precisamente a un objeto pequeño no podrias...

El pixel que funciona de puntero es 1,1 (osea la esquina superior izquierda...)

Claro, almenos que lo hagas con algun programa y sea .cur que le podes indicar que pixel es el que funciona como cursor para hacer click
En línea

Experimental Serial Lain [Linux User]
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.647


My software never has bugs. Its just features!


Ver Perfil WWW
Re: [Hilo oficial] Desarrollo de Videojuegos
« Respuesta #29 en: 10 Septiembre 2010, 19:54 »

Veamos como hice el juego del Snake en C# (como el de Nokia) aunque el mio tiene una especie de Level Manager. Solo uso GDI+ o Graphics en .Net, vamos es lo mismo xD
UPDATE: VIDEITO!! :D
Note: Ojo, es importante conocer que jugué rapidito, y que ya yo me pasé todos mis niveles sin trampa! xD luego subo otro video en donde aparezcan las culebritas malas!
Note2: Hay que esperar que se procese el videito!



Primero hacemos el modelo de componentes:

El SnakeBase, ba a ser nuestra base de la culebra, porque este juego tiene culebras malas xD
http://pastebin.com/3FyG9igV

Direction es solo un enum:
Código
 public enum Direction
{
     Up=0, Left, Down, Right
}

Esta es nuestra culebra buena http://pastebin.com/wmYxxitm
Y este es la clase para las malas: http://pastebin.com/eVZWeCKG

Clase para los niveles(Level) http://pastebin.com/NEcQ4VWX
Y esta es la clase que administra los niveles: http://pastebin.com/Z8ipvYCk

Los extraItems como las manzanitas esas son estas: http://pastebin.com/sBCA5Af7
Y el board es el siguiente: http://pastebin.com/m9R5VmTi

Ahora explicamos las partes importantes y cruciales del juego:

Para dibujar el juego creé un control de usuario para así usar la DLL en la aplicación que yo quiera xD estilo easternegg xD

Cómo? bueno, primero el control debe tener los siguientes atributos:
Código
 SetStyle(ControlStyles.SupportsTransparentBackColor, true); //auto descriptivo
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // Siempre true si usamos UserPaint, con esto evitamos flicker en el formulario
SetStyle(ControlStyles.UserPaint, true); //Auto descriptivo
SetStyle(ControlStyles.DoubleBuffer, true); // Habilita el double buffer en el control
SetStyle(ControlStyles.Opaque, true);

Como el juego es MUY sencillo lo hice con un Timer xD No el renderizado sino el control del juego como tal., Este es el código del tick:

Código
t.Interval = board.Interval; //define la velocidad del juego, si cambia de nivel, el interval se reduce por lo que va "más" rápido.
board.GoStep(); //Ya veremos que hace esto más adelante
board.UpdateArray(); //actualiza el array del juego
this.Refresh(); // como se hizo una modificación en el array se refresca el control para que se invoke el evento paint.
 

Ahora me dirán, de qué array habla este loco xD, pues el juego en sí es un array, es una forma fácil de hacerlo y va bastante bien. En cada posición hay un número que indica qué hay en el tablero :)

en el OnPaint del control que se llama cuando hacemos Refresh se hace lo siguiente:
Código
e.Graphics.Clear(Color.Black); //borra todo y lo pinta de negro
DrawBoard(e); // dibuja el tablero como tal
DrawSnakeAndLevel(e); // self descriptive -.-
DrawStat(e); // dibuja el score y eso..
 


Se qué no debo publicar codes muy largos, pero es necesario hacerlo para no ir tanto a pastebin :D
Código
private void DrawSnakeAndLevel(PaintEventArgs e)
{
   if (Board.WaitForUser)
       return;
   int[,] array = board.Array;
 
   //iteramos todos las posiciones del array y vemos cada valor y pintamos lo correspondiente
   for (int y = 0; y < boardSize; y++)
   {
       for (int x = 0; x < boardSize; x++)
       {
           Brush tmpColor = null;
           if (array[x, y] == 1)
               tmpColor = Brushes.Green; //1 es la culebra buena, es decir el player, y es verde :D
           else if (array[x, y] == 5)
               //si es 5 es una manzana, por lo que no pintamos un punto de un color e especial
               //la manzana se pinta dento de ese method por lo que le referenciamos el e.Graphics
               DrawApple(e.Graphics, Brushes.Red, Pens.Green, x, y);
           else if (array[x, y] == 99)
               tmpColor = Brushes.Blue;
           else if (array[x, y] == 50)
               tmpColor = Brushes.Yellow;
           else if (array[x, y] == 1000)
               DrawApple(e.Graphics, Board.m_extraItem.Color, Pens.Green, x, y); // 1000 es un extra item!
 
           if (tmpColor != null)
               e.Graphics.FillRectangle(tmpColor, (x * lineSize) + 6, (y * lineSize) + 31, lineSize, lineSize);
       }
   }
}
 
private void DrawApple(Graphics e, Brush brush, Pen pen, int x, int y)
{
  //bueno, intento dibujar una forma de manzana, solo Dios sabe que hice en el code xD
   e.FillPie(brush, (x * lineSize) + 5, (y * lineSize) + 30,
                   lineSize + 1, lineSize + 1, -60, 330);
   e.DrawLine(pen,
       (x * lineSize) + lineSize / 2 + 5, (y * lineSize) + 30 + lineSize / 2,
       (x * lineSize) + lineSize + 5, (y * lineSize) + 30);
   e.DrawLine(pen,
       (x * lineSize) + lineSize / 2 + 5, (y * lineSize) + 30 + lineSize / 2,
       (x * lineSize) + lineSize + 5, (y * lineSize) + 30 - 1);
   e.DrawLine(pen,
       (x * lineSize) + lineSize / 2 + 5, (y * lineSize) + 30 + lineSize / 2,
       (x * lineSize) + lineSize + 5, (y * lineSize) + 30 - 2);
}
 
 
private void DrawBoard(PaintEventArgs e)
{
   // nada mas que un rectangulo azul xD
   e.Graphics.DrawRectangle(Pens.Blue, 5, 30, boardSize * lineSize+1, boardSize * lineSize+1);
}
 
 
private void DrawStat(PaintEventArgs e)
{
   //puros strings , es decir los scores.. bastante self descriptive el code..
   e.Graphics.DrawString("Level: " + board.LevelIndex.ToString(), new Font("Arial", 10), Brushes.LightBlue, 5, 5);
   e.Graphics.DrawString("Lives: " + ((board.Lives < 0) ? "0" : board.Lives.ToString()), new Font("Arial", 10), Brushes.LightBlue, 110, 5);
   e.Graphics.DrawString("Score: " + Board.Score.ToString().PadLeft(9,'0'), new Font("Arial", 10), Brushes.LightBlue, 199, 5);
 
   if (Board.Lives == 0)
       e.Graphics.DrawString("Game Over", new Font("Arial", 20), Brushes.LightBlue, (boardSize * lineSize) / 4, ((boardSize * lineSize) / 2)+40);
   if (Board.WaitForUser)
       e.Graphics.DrawString("Press any key to start level " + Board.LevelIndex.ToString(), new Font("Arial", 15), Brushes.LightBlue, 20, ((boardSize * lineSize) / 2) + 15);
 
   e.Graphics.DrawString("Items Left: " + board.LevelTotalItems.ToString(), new Font("Arial", 12), Brushes.LightBlue, 120,boardSize * lineSize +40);
}
 

Bueno por ahora eso es todo, si checkan el código y no entienden o no están seguros de qué hace, postean y respondemos..

Un saludo :P
« Última modificación: 10 Septiembre 2010, 20:25 por [D4N93R] » En línea

Páginas: 1 [2] 3 4 5 6 7 8 9 10 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Hilo oficial] TrinityCore 2 « 1 2 3 »
Juegos y Consolas
Ariath 30 10,309 Último mensaje 11 Junio 2010, 12:54
por Ariath
[Hilo oficial] MaNGOS / TrinityCore 2 « 1 2 ... 5 6 »
Juegos y Consolas
Ariath 77 14,869 Último mensaje 10 Octubre 2010, 13:32
por Ariath
Hilo Oficial [Debian, El sistema operativo universal]
GNU/Linux
xexio 7 1,731 Último mensaje 8 Julio 2010, 04:20
por xexio
[Hilo oficial] Dolphin (Emulador de GC/Wii)
Juegos y Consolas
Ariath 1 2,395 Último mensaje 13 Agosto 2010, 14:13
por Ariath
[Ehn-Dev 2010] - Concurso de desarrollo de aplicaciones - Hilo oficial. « 1 2 »
Programación General
Littlehorse 21 24,449 Último mensaje 1 Diciembre 2010, 00:09
por Littlehorse
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines