Crea una nueva aplicación de Windows en Sharp Develop, agrega los controles necesarios para conformar la interfaz y que resulte similar a la que se muestra en la figura y sustituye el código del MainForm por el que se muestra a continuación. En concreto, la pelota se simula con un RadioButton y las palas con dos Buttons sin texto. Habrá un menú sencillo (ToolStrip) desde el que se puede iniciar una nueva partida, mostrar una pequeña ventana de ayuda con las teclas que permiten deslizar las palas y una opción de salida (ToolStripLabels). Asimismo se reproducirá un sonido WAV cada vez que la pelota toque las palas. No olvides vincular cada delegado con el método del código que atenderá cada evento. Por otra parte, se necesita un componente Timer para generar el movimiento de la pelota. NOTA: Para mejorar la corrección y legibilidad del código sustituye la codificación
1 -> Derecha -1 -> Izquierda 1 -> Abajo -1 -> Arriba 'u' (up) -> arriba 'd' (down) -> abajopor enumerados.
DESCARGA EL CÓDIGO AQUÍ
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace Pong { public partial class MainForm : Form { // 1 -> Derecha -1 -> Izquierda // 1 -> Abajo -1 -> Arriba private int dx = -1, dy = 1; // Variables q contiene la ultima tecla pulsada por cierta pala // para q el rebote se efectue en una o otra direcion // 'u' (up) -> arriba 'd' (down) -> abajo private char d1, d2; public MainForm() { InitializeComponent(); } void reproducirSonido() { System.Media.SoundPlayer player = new System.Media.SoundPlayer(); player.SoundLocation = @"C:\WINDOWS\Media\ding.wav"; player.Play(); } void Timer1Tick(object sender, EventArgs e) { // Movemos la "pelota" pelota.Left += dx; pelota.Top += dy; // Para el movimiento de la pelota //dx = pelota.Location.X >= this.ClientSize.Width ? -1 : dx; //dx = pelota.Location.X == 0 ? 1 : dx; if (pelota.Location.X + 18 >= this.ClientSize.Width) { Timer1.Enabled = false; MessageBox.Show("Gana el jugador 1", "Felicidades"); } if (pelota.Location.X == 0) { Timer1.Enabled = false; MessageBox.Show("Gana el jugador 2", "Felicidades"); } // Si choca contra la parte inferior o el menú dy = pelota.Location.Y + 50 >= this.ClientSize.Width ? -1 : dy; dy = pelota.Location.Y == 25 ? 1 : dy; // Si choca contra la pala1 if (pelota.Left == pala1.Left + pala1.Width) { reproducirSonido(); if (pelota.Top > pala1.Top && pelota.Top < dx =" 1;" dy =" d1" left ="="> pala2.Top && pelota.Top < dx =" -1;" dy =" d2" a =" arriba," z =" abajo" k =" arriba," m =" abajo" top =" 25;" d1 =" 'u';">= this.ClientSize.Height) pala1.Top = this.ClientSize.Height - pala1.Height; d1 = 'd'; break; case 'K': //La pala2 pala2.Top -= 10; if (pala2.Top < top =" 25;" d2 =" 'u';">= this.ClientSize.Height) pala2.Top = this.ClientSize.Height - pala2.Height; d2 = 'd'; break; } } // Las opciones del menú void NuevoToolStripMenuItemClick(object sender, EventArgs e) { Timer1.Enabled = true; pelota.Left = 154; pelota.Top = 134; } void ControlesToolStripMenuItemClick(object sender, EventArgs e) { MessageBox.Show ("Pulsar las teclas A y K para subir y las teclas Z y M para bajar las respectivas paletas de los jugadores 1 y 2", "Controles"); } void SalirToolStripMenuItemClick(object sender, EventArgs e) { Application.Exit(); } } }
Saludos. Quisiera saber si puedes volver a subir el link para descargar el codigo.
ResponderEliminarGracias de antemano
buenas, podrías subir el proyecto completo de nuevo? Gracias
ResponderEliminarDe vez en cuando Dropbox inhabilita el enlace por seguridad. Gracias por avisar. He actualizado el enlace; ya pueden volver a descargarlo.
ResponderEliminarHola amigo estamos en el año 2016 y el link sigue roto, podrias reparar el link, codigo, del juego PONG
ResponderEliminargracias. :)
Este comentario ha sido eliminado por el autor.
Eliminar