Rutas
/
C#
C#
/
Ejercicios
/
Need for Speed
Need for Speed

Need for Speed

Ejercicio de aprendizaje

Introducción

Constructores

Para crear una instancia de una clase se llama a su constructor mediante el operador new. Un constructor es un tipo especial de método cuyo objetivo es inicializar una instancia recién creada. Los constructores se parecen a los métodos normales, pero no tienen tipo de retorno y su nombre coincide con el de la clase.

class Library
{
    private int books;

    public Library()
    {
        // Initialize the books field
        this.books = 10;
    }
}

// This will call the constructor
var library = new Library();

Igual que los métodos normales, los constructores pueden tener parámetros. Los parámetros de un constructor normalmente se guardan como campos (privados) para poder acceder a ellos más tarde, o bien se usan en algún cálculo puntual. Se pueden pasar argumentos a un constructor igual que se pasan argumentos a métodos normales.

class Building
{
    private int numberOfStories;
    private int totalHeight;

    public Building(int numberOfStories, double storyHeight)
    {
        this.numberOfStories = numberOfStories;
        this.totalHeight = numberOfStories * storyHeight;
    }
}

// Call a constructor with two arguments
var largeBuilding = new Building(55, 6.2)

Instrucciones

En este ejercicio vas a organizar carreras entre varios tipos de coches teledirigidos. Cada coche tiene sus propias características de velocidad y consumo de batería.

Los coches empiezan con la batería llena (100 %). Cada vez que conduces el coche con el mando a distancia, avanza tantos metros como indique la velocidad del coche y reduce el porcentaje de batería restante en una cantidad igual a su consumo de batería.

Si la batería de un coche está por debajo de su porcentaje de consumo de batería, ya no puedes conducirlo.

Cada pista de carreras tiene su propia distancia. Los coches se ponen a prueba comprobando si pueden terminar la pista sin quedarse sin batería.

Tienes seis tareas y cada una de ellas trabajará con instancias del coche teledirigido.

1. Crear un coche teledirigido

Permite crear un coche teledirigido definiendo un constructor para la clase RemoteControlCar que recibe la velocidad del coche en metros y el porcentaje de consumo de batería como sus dos parámetros (ambos de tipo int):

int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);

2. Crear una pista de carreras

Permite crear una pista de carreras definiendo un constructor para la clase RaceTrack que recibe la distancia de la pista en metros como su único parámetro (que es de tipo int):

int distance = 800;
var raceTrack = new RaceTrack(distance);

3. Conducir el coche

Implementa el método RemoteControlCar.Drive(), que actualiza el número de metros recorridos en función de la velocidad del coche. Implementa también el método RemoteControlCar.DistanceDriven() para devolver el número de metros recorridos por el coche:

int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
car.Drive();

car.DistanceDriven();
// => 5

4. Comprobar si la batería está agotada

Actualiza el método RemoteControlCar.Drive() para que consuma batería según el consumo de batería del coche. Implementa también el método RemoteControlCar.BatteryDrained(), que indica si la batería está agotada:

int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
car.Drive();

car.BatteryDrained();
// => false

5. Crear el coche teledirigido Nitro

El coche teledirigido más vendido es el Nitro, que tiene una impresionante velocidad punta de 50 metros con un consumo de batería del 4 %. Implementa el método (estático) RemoteControlCar.Nitro() para devolver este tipo de coche:

var car = RemoteControlCar.Nitro();
car.Drive();
car.DistanceDriven();
// => 50

6. Comprobar si un coche teledirigido puede terminar una carrera

Para terminar una pista de carreras, un coche tiene que ser capaz de recorrer la distancia de la pista. Esto significa no agotar su batería antes de cruzar la línea de meta. Implementa el método RaceTrack.TryFinishTrack(), que recibe una instancia de RemoteControlCar como parámetro y devuelve true si el coche puede terminar la pista de carreras; en caso contrario, devuelve false:

int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);

int distance = 100;
var raceTrack = new RaceTrack(distance);

raceTrack.TryFinishTrack(car);
// => true
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
C# Exercism

¿Listo para empezar Need for Speed?

Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.