轨道
/
C#
C#
/
练习
/
Need for Speed
Need for Speed

Need for Speed

学习练习

简介

构造函数

创建类的实例,需要通过new运算符调用它的构造函数。构造函数是一种特殊的方法,用于初始化新创建的实例。它的写法和普通方法一样,但没有返回类型,而且名称与类名相同。

class Library
{
    private int books;

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

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

和普通方法一样,构造函数也可以有形参。构造函数的形参通常会存储为(私有)字段,以便之后访问,或者用在一次性的计算中。就像向普通方法传递实参那样,也可以向构造函数传递实参。

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)

说明

在这个练习中,你将组织各种遥控车之间的比赛。每辆车都有自己的速度和电池耗电特性。

车一开始的电池电量是满的(100%)。每次用遥控器驾驶车辆时,车会前进相当于其速度的距离(以米为单位),剩余电量百分比则减少它的电池耗电量。

如果一辆车的电池电量低于它的电池耗电百分比,就不能再驾驶这辆车了。

每条赛道都有自己的距离。测试车辆的方式,是检查它们能否在电量耗尽之前跑完赛道。

一共有六个任务,每个任务都会用到遥控车实例。

1. 创建一辆遥控车

为RemoteControlCar类定义一个构造函数,接收车辆的速度(以米为单位)和电池耗电百分比作为它的两个形参(类型都是int),这样就可以创建一辆遥控车:

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

2. 创建一条赛道

为RaceTrack类定义一个构造函数,接收赛道的距离(以米为单位)作为它唯一的形参(类型是int),这样就可以创建一条赛道:

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

3. 驾驶车辆

实现RemoteControlCar.Drive()方法,让它根据车辆的速度更新已行驶的米数。同时实现RemoteControlCar.DistanceDriven()方法,返回车辆已行驶的米数:

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

car.DistanceDriven();
// => 5

4. 检查电池是否耗尽

更新RemoteControlCar.Drive()方法,让它根据车辆的电池耗电量消耗电量。同时实现RemoteControlCar.BatteryDrained()方法,用来表示电池是否已经耗尽:

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

car.BatteryDrained();
// => false

5. 创建 Nitro 遥控车

最畅销的遥控车是 Nitro,它的最高速度高达 50 米,电池耗电量为 4%。实现(static)RemoteControlCar.Nitro()方法,返回这种类型的车:

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

6. 检查遥控车能否跑完比赛

要想跑完一条赛道,车辆必须能够行驶赛道的距离。也就是说,它不能在冲过终点线之前耗尽电量。实现RaceTrack.TryFinishTrack()方法,它接收一个RemoteControlCar实例作为形参,如果这辆车能跑完赛道就返回true,否则返回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
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
C# Exercism

准备好开始 Need for Speed 了吗?

注册 Exercism,借助 62 个概念178 个练习 和真人导师指导,学习并掌握 C#,全部免费。