Foros del Web » Programación para mayores de 30 ;) » .NET »

Juego de viborita con letras en C#[Avanzado]

Estas en el tema de Juego de viborita con letras en C#[Avanzado] en el foro de .NET en Foros del Web. ¡Hola de nuevo! En esta semana he estado publicando algo sobre un juego de la viborita en C# y ahora que le he avanzado a ...
  #1 (permalink)  
Antiguo 30/01/2016, 20:04
Avatar de OPMUANRK  
Fecha de Ingreso: diciembre-2014
Mensajes: 52
Antigüedad: 9 años, 4 meses
Puntos: 1
Pregunta Juego de viborita con letras en C#[Avanzado]

¡Hola de nuevo!
En esta semana he estado publicando algo sobre un juego de la viborita en C# y ahora que le he avanzado a lo que quería (dejaré el código abajo), me he atorado con algo nuevo:
Ya tengo las letras separadas una por una, pero quiero que una siga a otra, como en una fila. Lo que tengo ahorita es una palabra moviéndose en las direcciones, pero con las letras en un mismo lugar, "Hola" moviéndose arriba, abajo, izquierda y derecha en vez de:
H
O
L
A
Donde las letras siguen el camino de la "H" si va arriba, abajo, y en todas las direcciones.

Mi código (no incluye otros métodos):

Código C#:
Ver original
  1. namespace Viborita
  2. {
  3.     public partial class Form1 : Form
  4.     {
  5.         string nombre;
  6.         int Ancho;
  7.         int Alto;
  8.         //Cuerpo de la víbora
  9.         private List<Circulos>Viborita = new List<Circulos>();
  10.         //Formar comida
  11.         private Circulos comida = new Circulos();
  12.        
  13.         public Form1()
  14.         {
  15.             InitializeComponent();
  16.             //Cargar las configuraciones predeterminadas
  17.             new Config();
  18.             //Establecer la velocidad y empezar el temporizador
  19.             Tiempo.Interval = 1000 / Config.Velocidad;
  20.             Tiempo.Tick += Actualizar;
  21.             Tiempo.Start();
  22.             //Cuadro de diálogo para escribir tu nombre (Hacer referecia a Visual Basic para que funcione)
  23.             nombre = Microsoft.VisualBasic.Interaction.InputBox("Escribe tu nombre", "Bienvenido", "");
  24.             while (nombre == "")
  25.             {
  26.                 Microsoft.VisualBasic.Interaction.MsgBox("Ingresa un nombre por favor.");
  27.                 nombre = Microsoft.VisualBasic.Interaction.InputBox("Escribe tu nombre", "Bienvenido", "");
  28.                 lbNombre.Text = nombre;
  29.             }
  30.                 lbNombre.Text = nombre;
  31.                 //Empezar el juego
  32.                 EmpezarJuego();
  33.         }
  34.  
  35.         public void EmpezarJuego()
  36.         {
  37.             lbFinJuego.Visible = false;
  38.             //Cargar las configuraciones predeterminadas
  39.             lbrecord.Text = RecordFinal.ToString();
  40.             new Config();
  41.  
  42.             //Esto crea a la víbora y la pone en el juego
  43.             Viborita.Clear();
  44.             Circulos cabeza = new Circulos();
  45.             cabeza.X = 10;
  46.             cabeza.Y = 5;
  47.             Viborita.Add(cabeza);
  48.  
  49.             lbPuntos.Text = Config.Puntuacion.ToString();
  50.  
  51.             GenerarComida();
  52.         }
  53.         //Genera la comida aleatoriamente en la pantalla
  54.         private void GenerarComida()
  55.         {
  56.             int PosicionXmax = pbArea.Size.Width / Config.Ancho;
  57.             int PosicionYmax = pbArea.Size.Height / Config.Alto;
  58.  
  59.             Random aleatorio = new Random();
  60.             comida = new Circulos();
  61.             comida.X = aleatorio.Next(0, PosicionXmax);
  62.             comida.Y = aleatorio.Next(0, PosicionYmax);
  63.         }
  64.  
  65.         private void Actualizar (object sender, EventArgs e)
  66.         {
  67.             //Ver si el juego terminó
  68.             if (Config.FinJuego==true)
  69.             {
  70.                 //Verificar si la tecla Enter es presionada
  71.                 if (Entrada.KeyPressed(Keys.Enter))
  72.                 {
  73.                     EmpezarJuego();
  74.                     Viborita.Clear();
  75.                     string nom = lbNombre.Text;
  76.                     nombre = Microsoft.VisualBasic.Interaction.InputBox("Escribe tu nombre", "Bienvenido", "" + nom + "");
  77.                     while (nombre == "")
  78.                     {
  79.                         Microsoft.VisualBasic.Interaction.MsgBox("Ingresa un nombre por favor.");
  80.                         nombre = Microsoft.VisualBasic.Interaction.InputBox("Escribe tu nombre", "Bienvenido", "" + nom + "");
  81.                         lbNombre.Text = nombre;
  82.                         nom = nombre;
  83.                     }
  84.                     lbNombre.Text = nombre;
  85.                     nom = nombre;
  86.                     EmpezarJuego();
  87.                 }
  88.                
  89.             }
  90.             else
  91.             {
  92.                 if (Entrada.KeyPressed(Keys.Right) && Config.direccion != Direccion.Izq)
  93.                     Config.direccion = Direccion.Der;
  94.                 else if (Entrada.KeyPressed(Keys.Left) && Config.direccion != Direccion.Der)
  95.                     Config.direccion = Direccion.Izq;
  96.                 else if (Entrada.KeyPressed(Keys.Up) && Config.direccion != Direccion.Abajo)
  97.                     Config.direccion = Direccion.Arriba;
  98.                 else if (Entrada.KeyPressed(Keys.Down) && Config.direccion != Direccion.Arriba)
  99.                     Config.direccion = Direccion.Abajo;
  100.  
  101.                 Moverse();
  102.             }
  103.                 pbArea.Invalidate();
  104.         }
  105.         private void pbArea_Paint(object sender, PaintEventArgs e)
  106.         {
  107.             Graphics area = e.Graphics;
  108.  
  109.             if(!Config.FinJuego)
  110.             {
  111.                 //Establecer el color de la víbora
  112.                 Brush colorVib;
  113.  
  114.                 //Colores de la víbora
  115.                 for(int i=0; i< Viborita.Count; i++)
  116.                 {
  117.                     if (i == 0)
  118.                         colorVib = Brushes.Black; //Dibuja la cabeza
  119.                     else
  120.                         colorVib = Brushes.OrangeRed; //Dibuja el resto del cuerpo
  121.  
  122.                     //Dibujar la víbora
  123.                     Ancho = Viborita[i].X * Config.Ancho;
  124.                     Alto = Viborita[i].Y * Config.Alto;
  125.                     foreach (char c in nombre)
  126.                     {
  127.                             area.DrawString(c.ToString(), new Font(FontFamily.GenericSansSerif, 15, FontStyle.Regular),
  128.                 new SolidBrush(Color.Black), Ancho, Alto);
  129.                             Ancho += 14;
  130.                     }
  131.                     //Dibujar comida
  132.                     area.FillEllipse(Brushes.Green,
  133.                         new Rectangle(comida.X * Config.Ancho,
  134.                         comida.Y * Config.Alto, Config.Ancho, Config.Alto));
  135.  
  136.                 }
  137.             }
  138.             else
  139.             {
  140.                 string finjuego = "Fin del juego.\nTu puntuación final fue: " + Config.Puntuacion +
  141.                     "\n Presiona la tecla Enter para reintentar.";
  142.                 if (RecordFinal==0)
  143.                 {
  144.                     Record = Config.Puntuacion;
  145.                     RecordFinal = Record;
  146.                 }
  147.                 if(Config.Puntuacion>RecordFinal)
  148.                 {
  149.                     RecordFinal = Config.Puntuacion;
  150.                 }
  151.                 lbFinJuego.Text = finjuego;
  152.                 lbFinJuego.Visible = true;
  153.             }
  154.         }
  155.  
  156.         private void Moverse()
  157.         {
  158.             for(int i = Viborita.Count -1; i>=0; i--)
  159.             {
  160.                 //Mover cabeza
  161.                 if (i == 0)
  162.                 {
  163.                     switch (Config.direccion)
  164.                     {
  165.                         case Direccion.Der:
  166.                             Viborita[i].X++;
  167.                             break;
  168.                         case Direccion.Izq:
  169.                             Viborita[i].X--;
  170.                             break;
  171.                         case Direccion.Arriba:
  172.                             Viborita[i].Y--;
  173.                             break;
  174.                         case Direccion.Abajo:
  175.                             Viborita[i].Y++;
  176.                             break;
  177.                     }
  178.  
  179.                     //Obtener las posiciones máximas de X y Y
  180.                     int maxX = pbArea.Size.Width / Config.Ancho;
  181.                     int maxY = pbArea.Size.Height / Config.Alto;
  182.                     //Detectar la colisión en las paredes
  183.                     if (Viborita[i].X < 0 || Viborita[i].Y < 0
  184.                         || Viborita[i].X >= maxX || Viborita[i].Y >= maxY)
  185.                     {
  186.                         Muere();
  187.                     }
  188.                     //Detectar colisión con el cuerpo
  189.                     for(int j=1; j<Viborita.Count; j++)
  190.                     {
  191.                         if(Viborita[i].X == Viborita[j].X &&
  192.                             Viborita[i].Y == Viborita[j].Y)
  193.                         {
  194.                             Muere();
  195.                         }                
  196.                     }
  197.                     //Detectar colisión con la comida
  198.                     if(Viborita[0].X==comida.X && Viborita[0].Y == comida.Y)
  199.                     {
  200.                         Come();
  201.                     }
  202.                 }
  203.                 else
  204.                 {
  205.                     //Mover el cuerpo
  206.                     Viborita[i].X = Viborita[i - 1].X;
  207.                     Viborita[i].Y = Viborita[i - 1].Y;
  208.                 }
  209.             }
  210.         }
  211.         public void Come()
  212.         {
  213.             //Agregar un círculo a la víbora
  214.             Circulos comida = new Circulos();
  215.             comida.X = Viborita[Viborita.Count - 1].X;
  216.             comida.Y = Viborita[Viborita.Count - 1].Y;
  217.             Viborita.Add(comida);
  218.  
  219.             //Actualizar puntaje
  220.             Config.Puntuacion += Config.Puntos;
  221.             lbPuntos.Text = Config.Puntuacion.ToString();
  222.                        
  223.             GenerarComida();
  224.         }
  225.  
  226.         private void Muere()
  227.         {
  228.             Config.FinJuego = true;
  229.         }
  230.     }
  231. }

En la parte de " private void pbArea_Paint" es donde creo a la víbora de letras, específicamente en foreach(char c in nombre), muchas gracias por leer, espero que alguien me brinde su ayuda.

Etiquetas: c#, juego, letras
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:08.