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
megustaria conseguir tu version pero para c sharp por favor y gracias
Hola hans, en la descarga puedes encontrar ambas versiones.
Salu2!
que tendria que hacer para que el boton no sobrepasara la forma, es decir que tope en la orilla de mi juego ??
Eso sí lo hace, lo que no hace, es detectar la colisión, pero es algo faciísimo, haber si lo publico uno de estos días.
Salu2
Descargue el juego y me pareció muy interesante gracias ^^
Si me pudras guiar o facilitarme tutoriales realmente basicos te lo agradecería
hasta ahora estoy aprendiendo
Jeje, con mi comunidad, hice un juego llamado space wars, puedes checarlo aquí:
http://cid-2c11b62be5eb284d.office.live.com/self.aspx/Changing%20the%20World/Space%20Wars.zip
Cualquier pregunta, no dudes en preguntarme
Salu2
hola pero el programa en si funciona?? por que si levanta pero no veo ninguna accion!!
En esta parte sólo se comprueba que el radiobutton no salga del formulario, pronto daré una explicación para detectar colisiones, salu2
Hola que tal me parecen muy interesantes tus publicaciones de echo logre terminar de programar el ping pong en c sharp gracias a las explicaciones… quisiera conocer mas del juego space wars que creaste le di clic al link q colocaste y descargue.. pero me pide clave
me puedes ayudar
Claro que sí, el pass del juego es hotc@kes
, espero que te sirva.
Bro.. no si podria poner para que detecte la colision recien estoy aprendiendo y quisiera saber como se hace?
te agradeceria mucho tu ayuda
Claro que sí, en cuanto pueda haré un pequeño post sobre ello, vale? =)