Triple Eye Industrieel Ingenieur Informatica Algemeen Intranet Tweede jaar INWE Programmeren van GUI's GUI's VB.NET Labo's

Drag and Drop en Custom/User Controls

Opgave 1: A knight's tour

Schrijf een programma dat een gebruiker toelaat om met een paard een schaakbord te bewandelen. Het paard bevindt zich bij aanvang van de applicatie op positie (0,4). Het uiteindelijke doel van de gebruiker bestaat erin ieder vakje van het schaakbord eenmalig te bezoeken.

Opmerkingen

  • De gebruiker kan slechts een vakje aanklikken wanneer dit vakje nog niet werd bezocht en indien dit in overeenstemming is met de beweging van een schaakpaard.
  • Een bezocht vakje wordt gemarkeerd met de letter X.
  • Wanneer de gebruiker het paard naar een vakje sleept en er nadien geen bewegingsmogelijkheden meer overblijven moet er een passende boodschap aan de gebruiker verschijnen. Het programma zal na het bevestigen van de boodschap stoppen.
  • Wanneer de gebruiker ieder vakje heeft bezocht, wordt dit aan de gebruiker via een dialoogvenster medegedeeld en stopt het programma.
  • Het formulier is in de breedte en hoogte herschaalbaar. Ook bij het klikken op de maximize knop van het venster wordt het formulier in grootte aangepast.

Eisen

  • Maak zo weinig mogelijk gebruik van de designer bij het maken van de GUI.
  • Maak gebruik van een TableLayoutPanel-Control voor het bijhouden van alle labels.
  • Maak gebruik van een eigen component MyLabel die je afleidt van de klasse Label.
  • Alle gebeurtenissen die betrekking hebben op een object van het type MyLabel moeten worden afgehandeld binnen het object zelf en niet zoals gebruikelijk binnen het formulier. Hier kunnen de Resize en de FontChanged event door het object zelf worden afgehandeld.
  • Alle events die te maken hebben met het draggen en droppen worden afgehandeld binnen het formulier.
  • Voeg het icoontje toe aan de project-resources. Hierdoor moet je niet steeds het png-bestand in dezelfde directory plaatsen als het uitvoerbaar bestand. Het icoon maak dus integraal deel uit van het project.

Het icoontje voor het paard kan je hier ophalen.

Een uitvoerbare versie vind je hier .

Opgave 2: Een custom User Control

Onderwerp van dit labo is het maken van een schuifpuzzel. De complete puzzel wordt als een custom/user control geimplementeerd en via een dll ter beschikking gesteld.

Maak van dit project gebruik om je dll uit te testen. In de debug directory vind je tevens een uitvoerbare versie.

Opgave

Het idee van een schuifpuzzel is vrij simpel en behoeft op zich weinig uitleg. Een aantal stukken van een puzzel van gelijke afmetingen worden kriskras door elkaar gehaald. Daarna wordt 1 stuk (doorgaans het laatste) weggenomen. De bedoeling van het spel is de puzzel terug te herstellen door het verschuiven van stukken. Je kunt dus telkens (alleen) een horizontaal of verticaal aangrenzend stuk verschuiven naar de lege plaats.

De Interface

De vereisten zijn:

  • Als het programma start, verschijnen er 8 knoppen in willekeurige volgorde, waarbij de knoppen genummerd zijn van 1 tot en met 8. Er zijn 3 rijen van 3 knoppen (op de lege plaats staat echter geen knop). De knoppen hebben een begingrootte van 40 op 40 pixels.
  • De gebruiker kan de grootte van het venster aanpassen. Het formulier heeft wel een minimumgrootte van 160 bij 160 pixels.
  • Na het verschijnen van het formulier kan de speler beginnen puzzelen. Het verschuiven zelf kan heel eenvoudig door op een knop te klikken. Een knop die kan verschoven worden naar de lege plaats, wordt verplaatst. Wordt er echter op een volledig ingesloten knop geklikt, dan reageert de puzzel niet.
  • Op het ogenblik dat de puzzel gemaakt is en alle knoppen dus weer in volgorde staan, wordt de lege plaats ingevuld door een knop met opschrift 9. Bovendien wordt aan de gebruiker een passende boodschap getoond waarna het formulier wordt gesloten.

Opmerking

Om alle knoppen door elkaar te halen, gebruik je niet zomaar een randomfunctie om de plaats van de knoppen te kiezen. De kans bestaat er dan immers in dat je puzzel geen oplossing kent. Wat je wel doet is het programma zelf een (groot) aantal verschuivingen laten uitvoeren. De verschuivingen kan je genereren door random een knop te selecteren en indien mogelijk de knop te verschuiven.


W. Van De Breen 23/03/2010

Welkom | Hogeschool Gent | INWE | Studentenserver | Docentenserver | Intranet