Cursussen/Courses Codesnippets     Top 
Small Basic - Gebeurtenissen


1. Gebeurtenissen

Een aantal objecten kunnen beïnvloed worden door met de muis te klikken of te slepen of door een toets of toets-combinatie op het toetsenbord in te drukken. Voor deze gebeurtenissen (events) kunnen in het programma instructies opgenomen worden.

De gebeurtenis "MouseDown" van het object "GraphicsWindow" wordt ingesteld op de subroutine "muisklik".

In deze subroutine vind je de instructies terug die moeten uitgevoerd worden als de gebruiker in het grafisch venster klikt.

De eigenschappen "MouseX" en "MouseY" bevatten respectievelijk de x en y coördinaten van de pixel waarop geklikt werd.

Je kunt dit programma uitbreiden met een subroutine die een willekeurige toetsaanslag afhandelt.

Een toetsaanslag zal een vierkant tekenen met een willekeurige grootte en randkleur. De muisklik werkt ook nog zoals je ziet.

Bij een tekenprogramma houdt de gebruiker de linker-knop van de muis ingedrukt om iets te tekenen.

De subroutine "muisgeklikt" bewaart de coördinaten van de pixel waarop geklikt werd. Als na het klikken de muis wordt bewogen en de gebruiker houdt de linker-knop ingedrukt dan wordt er een lijntje van de vorige coördinaten naar de nieuwe pixel coördinaten getekend.

De gebeurtenis "muisbeweging" wordt herhaald zolang de gebruiker de linker-knop ingedrukt houdt en de muis beweegt.

Met gebeurtenissen kan je objecten in het grafische venster laten bewegen. In het onderstaande voorbeeld wordt een palet van links naar rechts bewogen als je op de linker of rechter pijltjes toets drukt.

Door de x-coördinaat te wijzigen kan het palet naar links ("Left") of rechts ("Right") verplaatst worden.

Bij een botsing tegen de linker of rechter rand wordt de x-coördinaat vastgezet op 1 (links) of de breedte van het grafische venster min de breedte van het palet (rechts).

Je kunt het palet ook naar boven ("Up") en naar beneden ("Down") laten bewegen als je de nodige voorwaarden voorziet en de y-coördinaat wijzigt.

Met de knop "Importeren" in de werkbalk kan je een programma importeren. Geef je "tetris" in dan kan je dat spelletje gaan spelen.

Met de pijltjes toetsen kan je de blokjes verplaatsen, draaien of laten vallen. Met de "ESC" toets beëindig je het programma.

In dit programma kan je zien hoe een eigen gemaakte vorm (shape) wordt geprogrammeerd. De vorm (s) wordt samengesteld uit de nodige vierkantjes met de bewerking "AddRectangle" van het object "Shapes".



2. Oefeningen

1. Schrijf een programma om vlot lijnstukken te kunnen tekenen. In een grafisch venster van 700 op 500 pixels teken je eerst een raster van 500 op 500 met vakjes van 20 pixels en een pen dikte van 0.1. Telkens de gebruiker in het venster op het raster klikt wordt een cirkeltje van 2 pixels getoond op die coördinaten. Na een volgende klik worden de twee punten verbonden met een lijn. De x en y coördinaten van die lijn worden bijgehouden in een array. In het witte rechtergedeelte worden de coördinaten van de lijnen getoond. Onderaan het witte gedeelte voorzie je een invul vak en een knop. Als een lijnnummer wordt ingegeven en op de knop "Verwijderen" wordt geklikt wordt die lijn gewist.

Tip 1: voor het raster gebruik je 2 "For" lussen met als stapgrootte 20. Tip 2: je kunt 2 dimensies gebruiken in de array bvb. lijnen[lijnnr]["x1"] = x1-coördinaat,… Tip 3: de lijst zet je best op het scherm telkens een lijn wordt getekend met "DrawText". Tip 4: om een lijn te verwijderen haal je de coördinaten uit de array met het ingegeven lijnnummer en zet je tijdelijk de pen kleur op wit. Tip 5: invul vak => Controls.AddTextBox,"Verwijder"-knop => Controls.AddButton. (programma naam: tekenblok)

2. Schrijf een programma om het spelletje "breakout" te spelen. Bovenaan in het grafische venster teken je een muur. Onderaan teken je een palet. Je laat een balletje schuin van onder naar boven bewegen. Als het balletje tegen een steen van de muur botst moet die steen weggenomen worden. Het balletje kaatst dan naar beneden en moet opgevangen worden door het palet dat je met de pijltjes toetsen kan bewegen. Als het balletje niet botst op het palet dan stopt het programma. (programma naam: breakout)

Tip 1: je kunt de nodige programmaregels bij mekaar brengen in dit programma: de vakjes van het schaakbord, het balletje uit het programma "stuiterbal" (derde oefening in Small Basic – graphics) en het palet uit de voorbeeldcode in deze tekst. Schrijf dan de instructies voor de gebeurtenis waarbij het palet bewogen wordt. Als het balletje botst (tegen de randen, tegen een steen of tegen het palet) moet je de nodige instructies uitvoeren. Tip 2: met de bewerking "Program.Delay(milliseconden)" kan je de snelheid van de verplaatsing van het balletje beïnvloeden (groter dan 100 milliseconden = traag).