# Oefeningen H1

{% hint style="danger" %}
Vergeet IntelliCode niet uit te schakelen ([hoe?](https://ap.cloud.panopto.eu/Panopto/Pages/Viewer.aspx?id=5b062697-fc35-44ee-8f2e-af1c013b47d7))!
{% endhint %}

{% hint style="info" %}
Kijk pas naar de oplossing als je 100% klaar bent. En zelfs dan, wees erg kritisch over jouw oplossing tegenover de modeloplossing. Vraag hulp aan de lector bij de minste twijfel die je hebt wanneer je jouw oplossing vergelijkt me de modeloplossing!
{% endhint %}

{% hint style="warning" %}
Maak telkens een volledig nieuwe solution aan per oefening (enkel de oefening "Stad kleuren" doe je in de bestaande "Wie ben ik" oplossing). Zo kan je later makkelijk terugkeren naar een specifieke oefening.
{% endhint %}

## Wie ben ik (*Essential*)

Schrijf een applicatie dat onder elkaar volgende informatie op het scherm toont gebruik makende van `WriteLine()`:

* Je voornaam en achternaam.
* De stad waar je woont.
* Je leeftijd.

Voorbeeld van de output:

```
Vincent Van Camp
Boom
38
```

## Visitekaart (*Essential*)

## Fake GPT (*Essential*)

## Stad kleuren (*Essential*)

## Rommel zin (*Essential*) (Dodona beschikbaar)

Schrijf een applicatie met behulp van `ReadLine()` en `WriteLine()`-methoden waarbij de computer aan de gebruiker om zijn of haar favoriete kleur, eten, auto en boek vraagt. Het programma gaat echter de gebruiker plagen en de ingelezen informatie op de verkeerde manier aan de gebruiker tonen. Het programma zal de antwoorden namelijk door elkaar halen waardoor de computer vervolgens toont:

```
Je favoriete kleur is [eten]. Je eet graag [auto]. Je lievelingsfilm is [boek] en je favoriete boek is [kleur].
```

Waarbij tussen de rechte haakjes steeds de invoer komt die de gebruiker eerder opgaf voor de bijhorende vraag.

Voorbeeld (tekst die start met > is input van de gebruiker):

```
Geef je favoriete kleur:
>rood
Geef je favoriete eten:
>lasagne
Geef je favoriete auto:
>mazda
Geef je favoriete boek:
>Het oneindige verhaal

Je favoriete kleur is lasagne. Je eet graag mazda. Je lievelingsfilm is Het oneindige verhaal en je favoriete boek is rood.
```

## Woordenslinger (*Essential*)

Maak een applicatie die volgende woorden na elkaar in twee zinnen toont, waarbij de letters van het woord de kleur van het woord zelf hebben:

```
blauwgroenrood
geelroodblauw
```

De output moet er als volgt uitzien:

![](https://4148059946-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MG5D2YWFmrSNveq_UIB%2Fuploads%2Fgit-blob-4f4724231095ae59417f446562b94fcdc7498ec7%2Fslinger.png?alt=media)

## Tekening

Kan je volgende afbeeldingen namaken in de console?

![](https://4148059946-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MG5D2YWFmrSNveq_UIB%2Fuploads%2Fgit-blob-872609f8a6f8c2c46ae4426f7008a2299692fe2b%2Fexbol.jpg?alt=media)

Volgende tekening toont een schematische weergave:

![](https://4148059946-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MG5D2YWFmrSNveq_UIB%2Fuploads%2Fgit-blob-89f9a25696c6467421296f246676513b2aa3a2f1%2Fkleur.jpg?alt=media)

{% hint style="info" %}
Je kan een gekleurd vakje 'tekenen' door de `BackGroundColor` van de console in te stellen en dan een **spatie** naar het scherm te sturen.
{% endhint %}

## Muziek (*Extra'tjes*)

{% hint style="info" %}
Extra'tjes oefeningen gebruiken zaken die niet bij de leerstof horen, maar die eenvoudig genoeg zijn om eens te bekijken. Meestal zijn ze ook nog eens leuk om te maken, wat mooi is meegenomen.
{% endhint %}

Met de `Console.Beep()` methode kan je muziek maken. Volgende voorbeeld toont bijvoorbeeld hoe je do-re-mi-fa-sol-la-si-do afspeelt:

```csharp
Console.Beep(264, 1000);
Console.Beep(297, 1000);
Console.Beep(330, 1000);
Console.Beep(352, 1000);
Console.Beep(396, 1000);
Console.Beep(440, 1000);
Console.Beep(495, 1000);
Console.Beep(528, 1000);
```

Je geeft aan `Beep` 2 getallen mee (*argumenten*):

1. De frequentie van de toon die moet afgespeeld worden. Bijvoorbeeld 264 (in Hertz, hz).
2. De duur dat de toon moet afgespeeld worden in milliseconden. Als je dus 1000 meegeeft zal de toon gedurende 1000 ms, oftewel 1 seconde, afgespeeld worden.

Open 1 van de eerder gemaakte oefeningen en zorg ervoor dat bij het opstarten ervan er een kort, door jezelf gecomponeerd, introliedje wordt afgespeeld.

## Regenboog Ticket (*Final Essentials*)

{% hint style="info" %}
Een *Final Essentials* oefening is een opgave waarin zoveel mogelijk leerstof van de voorbije oefeningen aan bod komt. Je zal voor deze oefeningen vaak wat meer tijd nodig hebben en dus mogelijk niet in het labo kunnen maken.
{% endhint %}

Maak een nieuwe applicatie "RegenboogTicket". Deze applicatie vraagt de gebruiker om 3 zaken:

1. De titel van een film.
2. De prijs van een ticket.
3. De naam van de bezoeker.

Vervolgens toon je een 'ticket' op het scherm.

* De boven- en onderkant van het ticket zijn lijnen (bijvoorbeeld `--------------------`) met een **Witte** achtergrond en **Zwarte** voorgrondkleur.
* De filmtitel toon je in tussenliggende regel in het **Rood**.
* De prijs toon je in een volgende regel in het **Groen**.
* De naam van de bezoeker toon je in de laatste regel in het **Blauw**.

Zorg ervoor dat je na het tonen van het ticket de kleuren terugzet naar de standaardwaarden van de console (`Console.ResetColor()`), anders blijft alles gekleurd!

Voorbeeld interactie: (tekst die start met `>` is input van de gebruiker\`. Je hoeft dit teken niet te tonen.)

```
Geef de filmtitel:
>Titanic
Geef de prijs:
>12 euro
Geef je naam:
>Leonardo

-------------------- (wit met zwarte tekst)
Titanic              (rood)
12 euro              (groen)
Leonardo             (blauw)
-------------------- (wit met zwarte tekst)
```
