[ Foro de C# ]

Pueden ayudarme con un codigo? (Ruleta de la suerte)

22-Dec-2015 18:21
Marcos Herrera
4 Respuestas

Hola buenas, empeze tarde en un curso de programacion y voy un poco atrasado... El caso es que tengo que entregar pronto una practica . La practica consiste en hacer mediante el programa la ruleta de la suerte (si, la de la television xD) y a pesar de que estaba un poco animado porque iba bien la cosa de pronto parece que no iba a ser tan facil... a ver si alguien me puede ayudar por favor

Este es el codigo:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int Lpanel=0;
            char[]panel=new char[9];
            for (int i=0; i<9;i++)
            {
                Console.WriteLine(Lpanel);
            }
            Console.ReadLine();
            Console.WriteLine("La pista es: Tu tienes el primer puesto porque...");
            do
            {
                Console.WriteLine("1 Resolver, 2 Girar la ruleta");
                dec.Parse(Console.ReadLine());
                if (dec=1)
                {
                    Console.WriteLine("Resuelva el panel");
                    pan.Parse(Console.ReadLane());
                    if (pan=hasganado)
                    {
                        Console.WriteLine("Acertaste, Enhorabuena!!");
                        dina1=dina1+din1;
                        Console.WriteLine("Desea jugar otra ronda? S o N");
                        jugar.Parse(Console.ReadLine());
                        if jugar = S
                        {

                    else
                        Console.WriteLine("Respuesta incorrecta, pierdes el turno");
                    }
                else (dec=2)
                {
                    Random r=new Random();
                    int ale=r.Next(0, 20);
                    switch (r)
                    {
                        case r>=1:
                            Console.WriteLine("Diga letra");
                            nletra.Parse(Console.ReadLine());
                            din1=din1+(r*nletra);
                            break;
                        default:
                            Console.WriteLine("Quiebra, pierdes turno y dinero");
                            din1=0;
                            break;
                    }
                }
            }

        }
    }
}


Aun no esta terminado obviamente pero tengo la impresion de que no voy bien encaminado...


23-Dec-2015 21:43
Nacho Cabanes (+84)

No deberías intentar hacer un programa como ese "de una sentada", o es muy fácil que salga mal.

En tu fuente hay cosas que no van a funcionar (y que en ocasiones te van a dar muchos problemas), como:

Console.ReadLane()
if jugar = S  { else
else (dec=2)
case r>=1:
...

Las llaves sin cerrar van a ser especialmente problemáticas, porque dan mensajes de error un tanto ambiguos y puedes acabar no sabiendo qué zonas son las que están sin cerrar.


Deberías volver a empezar casi desde cero. La forma más razonable de atacar un programa "no muy pequeño" (pero tampoco muy grande) es:

1. Escribe una descripción de lo que va a hacer tu programa

2. Relee esa descripción, corrige las cosas que sean confusas y, finalmente, estructúrala un poco en forma de pseudocódigo;


puntos = 0
OBTENER frase al AZAR
GENERAR fraseoculta A PARTIR DE frase
MOSTRAR fraseoculta
REPETIR:
    ESCRIBIR "Girar o resolver?"
    PEDIR opcion AL USUARIO
    SI opcion = girar ENTONCES
        GENERAR casilla AL AZAR
        MOSTRAR valor DE casilla
        PEDIR letra
        SI letra EN frase ENTONCES SUMAR valor A puntos
        SI NO,  ¿¿¿turno del siguiente jugador ???
    ...


3. Convierte ese pseudocódigo en comentarios (añadiendo // antes de cada línea) y ve rellenando debajo de cada comentario su código correspondiente, así:


// puntos = 0
int puntos = 0;

// OBTENER frase al AZAR
Random generador=new Random();
int posicionAzar = generador.Next(0, cantidadFrases);
...


4. Prueba cada poco, para asegurarte de que cada nuevo fragmento de código que has añadido no tiene problemas aparentes.

Si haces eso de forma ordenada, es fácil que el resultado sea rápido y bueno. Si empiezas a teclear cosas de forma desorganizada, un programa como este puede convertirse en una tarea muy muy larga.


23-Dec-2015 22:30
Marcos Herrera

Muchas gracias por la respuesta, voy a hacerlo por paso y primero en pseudocodigo como has dicho, muchas gracias por la contestacion :D


23-Dec-2015 22:56
Marcos Herrera

El problema que tengo tambien es que estoy muy liado y lo que es el codigo lo entiendo bien, en lo que me lio es en la funcion principal y sus subfunciones para resolver la principal. No se que subfunciones hacer exactamente, no entiendo que variables deben ser devueltas con return y todo eso...


23-Dec-2015 23:13
Nacho Cabanes (+84)

Si estás empezando, no deberías preocuparte por las funciones aún.

Un programa como ese se puede hacer sin necesidades de funciones. A medida que avances con él, si ves algún fragmento repetitivo de código, será un candidato claro a convertirse en función. Incluso fragmentos del programa podrían convertirse en funciones si quieres que el "cuerpo" del programa (Main) sea más compacto y más legible... pero insisto, en una segunda pasada si estás empezando.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)