Recreando el juego del Ping Pong con Windows Forms(VB y C#)

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  :

Pingpong1

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 = 1

    Private 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 Sub

    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)
        ‘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 Sub

    Private 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 Sub

    Private 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í:

Descargar

Salu2

Héctor Pérez

16 comentarios sobre “Recreando el juego del Ping Pong con Windows Forms(VB y C#)

  1. 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

  2. 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

  3. 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

  4. 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

  5. Hola interesante post y grax por las explicaiones pero el juego de spacewars meparece muy interesante pero me pide Pass el y el pass quediste anterior mente no es correcto. podrias poner un pass que sirva de antemano graxias……..

  6. Bro… el proyecto de Ping Pong me sirvio de mucha ayuda… Y el proyecto de Space wars quisiera verlo pero la clave no me funciona no se si podrias postear otra clave. o el mismo proyecto sin clave de ante mano grax…..

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s