Track
/
C#
C#
/
Esercizi
/
Resoconti delle partite di calcio
Resoconti delle partite di calcio

Resoconti delle partite di calcio

Esercizio di apprendimento

Introduzione

Istruzioni switch

Wikipedia descrive un'istruzione switch come «un tipo di meccanismo di controllo di selezione che permette al valore di una variabile o di un'espressione di modificare il flusso di controllo del programma».

Il meccanismo coinvolge le seguenti parole chiave: switch, case, break e default.

Nella loro forma più semplice, verificano un'espressione primitiva o una stringa e prendono una decisione in base al suo valore. Per esempio:

string direction = GetDirection();
switch (direction)
{
    case "left":
        GoLeft();
        break;
    case "right":
        GoRight();
        break;
    default:
        MarkTime();
        break;
}

Nella loro forma più sofisticata, introducono il down casting case <Type> <variable>: e le guardie (when).

Animal animal = GetAnimal();

switch (animal)
{
    case Dog canine:
    case Coyote canine:
        canine.Bark();
        break;
    case Cat cat when cat.HasOnly8Lives():
        cat.IsCareful();
        cat.Meow();
        break;
    case Cat cat:
        cat.Meow();
        break;
}

Istruzioni

Stai sviluppando un sistema per aiutare lo staff del sito web di un club di calcio a fare report sulle partite. Questo sistema è in grado di analizzare diversi aspetti della partita, sia in campo che fuori, e li converte in un flusso di eventi.

1. Genera le descrizioni dei giocatori in base al loro numero di maglia

La squadra gioca sempre con il modulo 4-3-3 e non ha mai accettato il cambiamento delle regole del 1965 che permette le sostituzioni, per non parlare delle rose più numerose.

Le descrizioni dei giocatori sono le seguenti:

1 -> "goalie"
2 -> "left back"
3 & 4 -> "center back"
5 -> "right back"
6, 7 & 8 -> "midfielder"
9 -> "left wing"
10 -> "striker"
11 -> "right wing"

Implementa il metodo statico PlayAnalyzer.AnalyzeOnField() per restituire la descrizione di un giocatore in base al suo numero di maglia.

PlayAnalyzer.AnalyzeOnField(10);
// => "striker"

2. Gestisci i numeri di maglia sconosciuti

Modifica il metodo PlayAnalyzer.AnalyzeOnField() per restituire UNKNOWN quando viene elaborato un numero di maglia fuori dall'intervallo 1-11.

3. Estendi la copertura alle attività fuori dal campo

Implementa il metodo PlayAnalyzer.AnalyzeOffField() per restituire descrizioni delle attività e dei personaggi intorno al campo di gioco. Questo metodo riceve diversi tipi di dati che vanno analizzati e convertiti in un testo appropriato per aiutare i giornalisti.

Per iniziare, tratteremo i dati relativi allo stadio:

  • Il numero attuale di spettatori nello stadio (qualsiasi int)
  • Gli annunci diffusi dall'impianto di diffusione sonora dello stadio (qualsiasi string)

I tipi di dati sconosciuti non devono essere elaborati: se il metodo riceve dati di un tipo diverso, deve restituire una stringa vuota.

PlayAnalyzer.AnalyzeOffField(5000);
// => "There are 5000 supporters at the match."

PlayAnalyzer.AnalyzeOffField("5 minutes to go!");
// => "5 minutes to go!"

PlayAnalyzer.AnalyzeOffField(0.5);
// => ""

4. Fai un resoconto sugli episodi durante la partita

Modifica il metodo PlayAnalyzer.AnalyzeOffField() per restituire descrizioni degli episodi che accadono durante la partita.

Gli episodi possono essere qualsiasi sottoclasse del tipo Incident e contengono una descrizione dell'episodio. Gli infortuni sono un tipo speciale di episodio, perché causano una sospensione della partita, e vanno quindi trattati in modo diverso.

PlayAnalyzer.AnalyzeOffField(new Foul());
// => "The referee deemed a foul."

PlayAnalyzer.AnalyzeOffField(new Injury(8));
// => "Oh no! Player 8 is injured. Medics are on the field."

5. Fai un resoconto sugli allenatori dei club

Modifica il metodo PlayAnalyzer.AnalyzeOffField() per menzionare gli allenatori dei club presenti durante la partita.

Gli allenatori sono istanze del tipo Manager e hanno un nome e il nome del club che allenano. Il club dell'allenatore può essere sconosciuto, nel qual caso sarà impostato su null. Se il club di un allenatore non è noto, non deve far parte della descrizione.

PlayAnalyzer.AnalyzeOffField(new Manager("José Mário dos Santos Mourinho Félix", null));
// => "José Mário dos Santos Mourinho Félix"

PlayAnalyzer.AnalyzeOffField(new Manager("Jürgen Klopp", "Liverpool"));
// => "Jürgen Klopp (Liverpool)"
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
C# Exercism

Vuoi iniziare Resoconti delle partite di calcio?

Iscriviti a Exercism per imparare e padroneggiare C# con 62 concetti178 esercizi e il mentoring di persone reali, tutto gratis.