Skip to content

Dart

Intro

Write a function that returns the earned points in a single toss of a Darts game.

Darts is a game where players throw darts to a target.

In our particular instance of the game, the target rewards with 4 different amounts of points, depending on where the dart lands:

If the dart lands outside the target, player earns no points (0 points). If the dart lands in the outer circle of the target, player earns 1 point. If the dart lands in the middle circle of the target, player earns 5 points. If the dart lands in the inner circle of the target, player earns 10 points. The outer circle has a radius of 10 units (This is equivalent to the total radius for the entire target), the middle circle a radius of 5 units, and the inner circle a radius of 1. Of course, they are all centered to the same point (That is, the circles are concentric) defined by the coordinates (0, 0).

Task

Write a function that given a point in the target (defined by its real cartesian coordinates x and y), returns the correct amount earned by a dart landing in that point.

The Code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#ifndef DARTS_H
#define DARTS_H

typedef 
struct coordinate{
    double x;
    double y;
}coordinate_t;

int score(coordinate_t test);

#endif
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "darts.h"
#include <math.h>

int score(coordinate_t test)
{
    float var01 = 0;
    var01 = pow(test.x, 2) + pow(test.y, 2);
    var01 = sqrt(var01);

    if (var01 <= 1.0)
    {
        return 10;
    }
    else if (var01 >= 1.1 && var01 <= 5.0)
    {
        return 5;
    }else if(var01 <= 10.0 && var01 >= 5.1){
        return 1;
    }

    return 0;
}

Last update: January 22, 2021

Comments