Opgave 1 (2019)
{% hint style="info" %} Volgende opgave kwam uit de vaardigheidsproef module 4 van dit vak juni 2019.
{% hint style="info" %} Volgende opgave kwam uit de vaardigheidsproef module 4 van dit vak juni 2019.
Maak een digitale console-versie van het klassieke kinderspel hamertje Tik
In dit spel heeft het kind een hele hoop kleurige blokjes ter beschikking waarmee hij op een kurken bord eender welke ‘tekening’ kan maken door de blokjes in de kurk met een nagel te kloppen.
Het project bestaat uit enkele delen.
We gaan volgende klasse-structuur in de volgende stappen maken:

Maak een abstracte klasse Vorm die z’n locatie (via x,y coördinaten als autoprops) op het scherm kan bijhouden alsook een abstracte methode TekenVorm. Voeg voorts een virtual property Kleur toe van het type ConsoleColor. Deze property is read-only en geeft ConsoleColor.Red terug.
De klasse Vorm heeft een overloaded constructor die steeds de x,y coördinaten verwacht als parameters vervolgens instelt in de bijhorende autoprops.
De Vorm heeft géén default constructor.
De locatie van de vormen die we hierna zullen definiëren is steeds het punt linksboven indien we een rechthoek omheen de vorm zouden tekenen. Het voorbeeld hier toont deze plek bij het vliegtuig van stap 3:

Maak twee klassen die allebei een Vorm zijn:
RechthoekLijnZorg ervoor dat beide vormen via TekenVorm zichzelf op het scherm kunnen tonen in hun eigen kleur.
Lijn:
ConsoleColor.Green * * *
Rechthoek:
ConsoleColor.Yellow * *
* *
* *
* *
Maak een klasse Vliegtuig dat ook een Vorm is. Een vliegtuig bestaat (compositie!) uit 1 Rechthoek en 2 Lijn-objecten en ziet er altijd hetzelfde uit, namelijk
* *
* *
* * * * * * * *
* *
* *
Een Vliegtuig heeft een constructor die de x,y locatie vraagt (zie tekening vorige pagina i.v.m. coördinaten) en zal in de constructor de 3 vormen (2 lijnen en 1 rechthoek) aanmaken.
Merk op dat dus dat het lichaam (de Rechthoek) geel zal zijn, en de twee vleugels groen (van de lijnen).
Maak een klasse Vloot dat ook een Vorm is. Een vloot bestaat uit 1 of meerdere vliegtuigen. Je kan via de constructor instellen hoeveel vliegtuigen er moeten zijn in 1 Vloot, alsook de x,y coördinaten (linksboven).De nodige vliegtuigen worden in de constructor aangemaakt en in een lijst bijgehouden in het Vloot-object zelf.
Houdt via een lijst in de klasse de vliegtuigen bij. Een vloot vliegtuigen dat getekend wordt tekent gewoon alle vliegtuigen onder mekaar.
Een vloot van 3 vliegtuigen zal er als volgt uitzien op het scherm:
* *
* *
* * * * * * * *
* *
* *
* *
* *
* * * * * * * *
* *
* *
* *
* *
* * * * * * * *
* *
* *
Merk op dat de vliegtuigen hun originele kleuren behouden uit de vorige stap.
Maak een interface IBeweegbaar, bestaande uit 1 methode Beweeg. Deze geeft niets terug en heeft 1 parameter van het type Richting.
Richting is een enum-type dat 4 mogelijke waarden heeft: Links, Rechts, Boven, Beneden.
Pas de interface toe op Vliegtuig en Vloot. Deze methode zal de Locatie van het object 1 plekje opschuiven in de richting die in de parameter werd meegegeven. Als dus vervolgens het object opnieuw wordt getekend zal het object 1 plek naar rechts opgeschoven zijn.
Vormen verplaatsen is gewoon een kwestie van de X,Y coördinaten aan te passen. Meer is niet nodig.
Maak nu een hammertje tik programma: een console-programma dat de gebruiker steeds volgende vragen stelt en vervolgens de gevraagde vormen toevoegt aan het scherm. Op de duur zal de gebruiker grote, complexe tekeningen kunnen maken door meerdere vormen en types te combineren. Iedere vorm die wordt toegevoegd zal in een lijst worden bijgehouden.
Een loop zal steeds volgende stappen uitvoeren tot de gebruiker het programma afsluit.
De vragen die gesteld kunnen
Voeg een nieuw menu-item toe namelijk Vergroot vloot. Wanneer de gebruiker deze optie kiest zullen alle Vloot-objecten in de lijst 1 extra vliegtuig bijkrijgen. Je zal hiervoor een extra methode VergrootVloot aan de Vloot-klasse moeten toevoegen.
Voeg een nieuw menu-item Sorteer toe, indien de gebruiker dit kiest dan worden alle Vormen gesorteerd op hun x-locatie, hoe kleiner x, hoe eerder in de lijst. Bij gelijke x wordt gekeken naar de y-locatie waar degene met de laagste y voor die met hogere komt.
Vervolgens worden de objecten met een loop op het scherm beschreven als volgt: VormType, x, y
Dus bijvoorbeeld:
Rechthoek, 3, 5
Rechthoek, 3,6
Vliegtuig, 5,2