« Respuesta #23 en: 10 Septiembre 2010, 15:16 pm »
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...
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
« Respuesta #25 en: 10 Septiembre 2010, 15:22 pm »
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).
« Respuesta #29 en: 10 Septiembre 2010, 19:54 pm »
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!! 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
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
Código
privatevoid 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
elseif(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