Posted on 29-06-2008
Filed Under (Desarrollo, VB.NET) by Programlocura

Hace un tiempo en el curso empezamos con este proyecto y lo estamos agrandando cada dia.
Voy a tratar de ir mostrando de a partes y dando consejos para construir un juego de este tipo en CONSOLA y dejando bien abierto para proximas cosas que tengan ganas de ponerle.

1. Uso de Constantes

Visual Basic:
  1. Const FILAS As Integer = 10
  2. Const COLUMNAS As Integer = 10
  3. Const CANT_BARCOS As Integer = 4

Siempre! Siempre! Se usan constantes para este tipo de cosas, es complicado acostumbrarse a programar "generico" pero tiene que hacerse, que pasa si cambia el tamaño del tablero? Que pasa si queremos aumentar el numero de barcos en el juego? Tendriamos que cambiar todos los numeros en el codigo, seria un desastre.
El uso de constantes evita todo tipo de problemas y el uso de las palabras hace más clara la lectura del codigo.

2. El Procedimiento "Main()" limpio.

Visual Basic:
  1. Sub Main()
  2.         Dim opcion As Integer
  3.         Dim Pantalla As New ClearConsole
  4.  
  5.         Titulo()
  6.         Console.WriteLine("1. Player 1 Vs Player 2")
  7.         Console.WriteLine("2. Player 1 Vs CPU")
  8.         Do
  9.             opcion = Console.ReadLine()
  10.  
  11.             If (opcion> 2) Then
  12.                 Console.WriteLine("La opcion no esta disponible")
  13.             End If
  14.         Loop While (opcion> 2)
  15.  
  16.         Select Case opcion
  17.             Case 1
  18.                 Pantalla.Clear()
  19.                 Player1vs2()
  20.             Case 2
  21.                 Pantalla.Clear()
  22.                 Player1vsCPU()
  23.         End Select
  24.     End Sub

El Main debe contener el menor numero de instrucciones posibles, cuanto más limpio mejor, no tiene porque pero si es muy recomendable.

3. Procedimientos genericos util para cualquier cantidad de jugadores

Visual Basic:
  1. Sub Player1vs2()
  2.         ' Player 1 VS Player 2
  3.         Dim Jugador As Short = 1
  4.         Dim Tablero_uno(FILAS, COLUMNAS), Tablero_dos(FILAS, COLUMNAS) As Short
  5.         Dim Tablero_uno_aux(FILAS, COLUMNAS), Tablero_dos_aux(FILAS, COLUMNAS) As Short
  6.         Dim num_barcos_uno, num_barcos_dos, intento As Integer
  7.         Dim x, y, xx, yy, i, j As Integer
  8.         Dim Pantalla As New ClearConsole
  9.  
  10.         cargaBarcos(Jugador, Tablero_uno)
  11.         Jugador = 2
  12.         cargaBarcos(Jugador, Tablero_dos)
  13.  
  14.         ' Comenzamos a Jugar
  15.         intento = 1
  16.         Jugador = 1
  17.  
  18.         num_barcos_uno = CANT_BARCOS
  19.         num_barcos_dos = CANT_BARCOS
  20.  
  21.             Do
  22.                 Pantalla.Clear()
  23.                 Titulo()
  24.                 Console.WriteLine("Empieza el juego")
  25.                 Console.WriteLine("Jugador {0} - Intente hundir un barco:", Jugador)
  26.                 Console.WriteLine("Barco {0} - FILA:", intento)
  27.                 Do
  28.                     Do
  29.                         xx = Console.ReadLine()
  30.                         If (xx> FILAS) Then
  31.                             Console.WriteLine("El numero es Mayor al numero de FILAS")
  32.                         End If
  33.                     Loop While (xx> FILAS)
  34.                     Console.WriteLine("Barco {0} - COLUMNA:", intento)
  35.                     Do
  36.                         yy = Console.ReadLine()
  37.                         If (yy> COLUMNAS) Then
  38.                             Console.WriteLine("El numero es Mayor al numero de COLUMNAS")
  39.                         End If
  40.                     Loop While (yy> COLUMNAS)
  41.  
  42.                     If ((Jugador = 1 And Tablero_uno_aux(xx, yy) = 1) Or (Jugador = 2 And Tablero_dos_aux(xx, y) = 1)) Then
  43.                         Console.WriteLine("La Posicion {0},{1} Esta ocupada", xx, yy)
  44.                     End If
  45.                 Loop While ((Jugador = 1 And Tablero_uno_aux(xx, yy) = 1) Or (Jugador = 2 And Tablero_dos_aux(xx, y) = 1))
  46.  
  47.                 If (Jugador = 1) Then
  48.                     If Tablero_dos(xx, yy) = 1 Then
  49.                         Console.WriteLine("Has Hundido el Barco ({0},{1}) !", xx, yy)
  50.                         Tablero_dos_aux(xx, yy) = 2
  51.                         num_barcos_dos -= 1
  52.                         Jugador = 2
  53.                     Else
  54.                         Console.WriteLine("Agua en la posicion ({0},{1})", xx, yy)
  55.                         Tablero_dos_aux(xx, yy) = 1
  56.                         Jugador = 2
  57.                     End If
  58.                 Else
  59.                     If Tablero_uno(xx, yy) = 1 Then
  60.                         Console.WriteLine("Has Hundido el Barco ({0},{1}) !", xx, yy)
  61.                         Tablero_uno_aux(xx, yy) = 2
  62.                         num_barcos_uno -= 1
  63.                         Jugador = 1
  64.                     Else
  65.                         Console.WriteLine("Agua en la posicion ({0},{1})", xx, yy)
  66.                         Tablero_uno_aux(xx, yy) = 1
  67.                         Jugador = 1
  68.                     End If
  69.                 End If
  70.                 Console.ReadLine()
  71.         Loop While (num_barcos_uno <> 0 Or num_barcos_dos <> 0)
  72.     End Sub

Los procedimientos deben ser genericos SIEMPRE! no podemos estar copiando y pegando codigo cada vez que necesitemos insertar un jugador nuevo por ejemplo.

Dejemoslo por acá... Esperen la 2° Parte :D.

(0) Comments    Read More   
Posted on 29-06-2008
Filed Under (Curiosidades, Humor, Personal) by Programlocura

Vuelvo para recomendarles un BLOG excelente con el que me topé en una de tantas busquedas.

Logólogos es un blog donde tratan de llegar a un logo determinado mediante operaciones matematicas con ciertos elementos.

Evo - Logólogos

Son simplemente increibles :P.

Incluso hay "concursos" (No, no regalan nada :P) donde uno tiene que determinar la "X".

Un blog que siempre visito y que siempre me desprende una sonrisa.

Logologos Blog

(0) Comments    Read More   
Posted on 25-06-2008
Filed Under (Curiosidades) by Programlocura

Un perro que dice la palabra "ama" ... Por favor, ya no saben que hacer... Pobres animales :( :P

Via Flabber > Webmaníacos

(1) Comment    Read More   
Posted on 18-06-2008
Filed Under (Desarrollo, PHP) by Programlocura

Estoy con muy poco tiempo ultimamente, por eso no he posteado nada.

Hoy fué mi primer dia como profesor en el "Circulo Informatico", estoy bastante conforme aunque todavia me quedaron unas cosas que repasar y dar en clase, supongo que todo se organizará a medida que me vaya acostumbrando.

Por otra parte con la oficina nos mudamos y tambien estamos en tramites de organización... Asi que estoy en un clima de "cambios".

A partir de hoy voy a comenzar a crear el "Cursos de PHP" que voy dando en clase y lo voy a ir colocando aqui para que pueda ser utilizado por cualquiera que desee.

Sitio oficial del Circulo Informatico

(0) Comments    Read More   
Posted on 12-06-2008
Filed Under (Curiosidades, Humor) by Programlocura

O_O Para aquellos que creen (y que no creen) a continuación podemos ver una imagen que nos dejó paralizados en la oficina (No tiene photoshop -Excepto las Flechas y colores xD-).

Fantasma en Thumbnail
(Hagan click para verla más grande)

Solo queda decir a nuestra favor que: Refrescamos los archivos con CTRL + F5, volvimos a entrar a la carpeta, cuestionamos sobre la perdida de calidad y el resize en donde se pudiese perder la persona (cosa que veo como imposible debido al tamaño de la misma en la foto), y lo probamos en otras PC's (Y mostraba a esta mujer en ambas fotografias, tanto en el Thumb como en la original)...

Es acaso esto brujeria ? Estará mi compañera Gina (Quien tiene esto en su PC) poseida ? O peor aún, estará su PC poseida ? (Tiene Windows xD Todo puede pasar).

Los dejo a su criterio, si conocen más este tipo de situaciones me las envian al mail, o las comentan :D.

Si quieren ver "curiosidades" (Easter eggs) les dejo una pagina para que prueben con fenomenos "explicables" ( Y que alguien me explique este por dios xD)

Sitio: The Easter Egg Archive

P.D: Tengo miedo :S

(1) Comment    Read More