Vale, pues como recordarán los asistentes a la sesión del sábado 19, hicimos un juego a base de Windows Forms, por si alguien quiere replicarlo, aquí les dejo lo que hicimos:
1.- Se crea un proyecto tipo Windows Forms, y se agregan 2 botones, un radiobutton y un timer, a continuación, se procede a poner en blanco las propiedades “Text” de los botones y del radiobutton. Se ajusta la propiedad de anchor para los botones, para el botón 1 que el anchor sea solo a la izquierda, y para el botón derecho, solo a la derecha. Se marca la propiedad “Checked” del RadioButton en True. Asignamos el valor 20, para la propiedad “Interval” del Timer. Finalmente se ajustan los elementos visualmente para dar la apariencia del juego :
Ahora, falta crear la funcionalidad del game, esto se hace con el siguiente código:
Public Class Form1
‘Se definen las coordenadas
Private dx As Integer = 1, dy As Integer = 1Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
RadioButton1.Left += dx
RadioButton1.Top += dy
‘Se hacen las respectivas comparaciones para checar donde se encuentra la pelota, así se determina hacia donde tiene que ir la pelota
dx = IIf(RadioButton1.Location.X >= Me.ClientSize.Width – RadioButton1.Width, -1, dx)
dx = IIf(RadioButton1.Location.X = 0, 1, dx)
dy = IIf(RadioButton1.Location.Y >= Me.ClientSize.Height – RadioButton1.Height, -1, dy)
dy = IIf(RadioButton1.Location.Y = 0, 1, dy)
End SubPrivate Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
‘Se hace la comparación de las teclas presionadas, si es Q, el botón 1 irá para arriba, si es Z, para abajo
Button1.Top -= IIf(Char.ToUpper(e.KeyChar) = “Q”, 5, 0)
‘Esta expressión iif, equivale a:
‘If (Char.ToUpper(e.KeyChar)) = “Q” Then
‘ Button1.Top = 5
‘Else
‘ Button1.Top = 0
‘End If
‘Lo mismo ocurre con todas las demás expresiones
Button1.Top += IIf(Char.ToUpper(e.KeyChar) = “Z”, 5, 0)
End SubPrivate Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
‘Se asigna el valor de las coordenadas del mouse al alto del botón
Button2.Top = e.Y
End SubPrivate Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
‘Se activa timer cuando el botón del mouse izquierdo es presionado
Timer1.Enabled = e.Button = Windows.Forms.MouseButtons.Left
End Sub
End Class
Vale, pues ese es el código, si quieren aumentar en dado momento el grado de dificultad, deben de aumentar el valor de interval, para que la pelotita vaya mas rápido.
Ahora bien, debe considerarse que aún no se detectan las colisiones, así que eso os queda de tarea para que practiquéis un poco. Espero que les haya gustado, hasta la próxima, y cualquier cosa no duden en escribir.
El proyecto completo lo encuentran aquí:
Salu2
Héctor Pérez

Bueno excelente, me gusta tu blog, la unica observacion que tengo o mas bien dificultad es que el codigo siguiente no funciona, espero que puedas solucionarlo, gracias.
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
‘Se hace la comparación de las teclas presionadas, si es Q, el botón 1 irá para arriba, si es Z, para abajo
Button1.Top -= IIf(Char.ToUpper(e.KeyChar) = “Q”, 5, 0)
Button1.Top += IIf(Char.ToUpper(e.KeyChar) = “Z”, 5, 0)
End Sub
Hey hola cheguillen,
grcias por el comentario, ya lo he checado, y tienes razón, eso sucede porque ha faltado cambiar una propiedad en la Form, la cual es “KeyPreview”, esta se tiene que cambiar a true para que funcione, ya lo he corregido ya demás he agregado la versión para C#
Salu2