Topic F: S3

Aushim
Master in de forumwetenschappen
Master in de forumwetenschappen
Berichten: 2628
Lid geworden op: 23 nov 2007, 23:02
Locatie: Haren
Contacteer:

Topic F: S3

Berichtdoor Aushim » 13 dec 2007, 20:17

Hieronder vinden jullie een van de oplossingen van S3: Vierkanten & Sterretjes (met uitleg tussen haakjes).

Code: Selecteer alles

MODULE S3;
<* NOOPTIMIZE + *>  (* For the Debugger *)
  FROM IO IMPORT WrStr, WrLn, RdKey,KeyPressed, WrCard, RdLn, RdCard;
  FROM Lib IMPORT Delay; (* Delay: let the program wait a little time *)
   (* de graphics library vind je onder C:/Bin/Xds/Def/Ts/Graph.def *)
  FROM Graph IMPORT Init, Rectangle, Circle,Polygon, Disc,Line, Plot;
  FROM Graph IMPORT _clrBLACK, _clrBLUE, _clrGREEN, _clrCYAN, _clrRED, _clrMAGENTA;
  FROM Graph IMPORT _clrBROWN, _clrWHITE, _clrGRAY, _clrLIGHTBLUE, _clrLIGHTGREEN;
  FROM Graph IMPORT _clrLIGHTCYAN, _clrLIGHTRED, _clrLIGHTMAGENTA, _clrLIGHTYELLOW, _clrBRIGHTWHITE;
                 (* deze 16 kleuren zijn constantes gaande van 0 tot 15 *)

PROCEDURE Vierk(a1, a2, r, c:CARDINAL);
BEGIN
Line(a1-r, a2-r,a1-r, a2+r,c);
Line(a1-r, a2-r,a1+r, a2-r,c);
Line(a1+r, a2-r,a1+r, a2+r,c);
Line(a1+r, a2+r,a1-r, a2+r,c);
END Vierk;

PROCEDURE ster(a1,a2,s,c,c2:CARDINAL);
CONST ARRAY_SIZE = 4;
VAR
    px: ARRAY[1..ARRAY_SIZE] OF CARDINAL;
    py: ARRAY[1..ARRAY_SIZE] OF CARDINAL;
BEGIN
    px[1]:=a1-(43*s/100);
    px[2]:=a1;
    px[3]:=a1+(43*s/100);
    px[4]:=px[1];
    py[1]:=a2+s/4;
    py[2]:=a2-s/2;
    py[3]:=a2+s/4;
    py[4]:=py[1];
    Polygon(4, px, py, c, TRUE);                  (*tekenen van een driehoek*)
    py[1]:=a2-s/4;
    py[2]:=a2+s/2;
    py[3]:=a2-s/4;
    py[4]:=py[1];
    Polygon(4, px, py, c2, TRUE);                 (*tekenen van de tweede driehoek*)
END ster;

VAR x1,y1,x2,y2,r,c,s,k,k2:CARDINAL;
t:CHAR;
BEGIN

  (* Initialise graphics *)
  IF NOT Init(1, 1 , 520, 520) THEN  (* creates a drawing window of 500 by 500 *)
    WrStr("Sorry, graphics doesn't work");WrLn;
    RETURN;
  END;

WrStr("Geef mij de x coordinaat van het middelpunt van het vierkant");
x1:= RdCard();
WrLn;
WrStr("Geef mij de y coordinaat van het middelpunt het vierkant");
y1:= RdCard();
WrLn;
WrStr("Geef mij de straal van het vierkant");
r:= RdCard();
WrLn;
WrStr("Geef mij de kleur van het vierkant");
c:= RdCard();
WrLn;
WrStr("Geef mij de x coordinaat van het middelpunt van de driehoek");
x2:= RdCard();
WrLn;
WrStr("Geef mij de y coordinaat van het middelpunt van de driehoek");
y2:= RdCard();
WrLn;
WrStr("Geef mij de grootte van de ster");
s:= RdCard();
WrLn;
WrStr("Geef mij de kleur van de ster");
k:= RdCard();
WrLn;
WrStr("Geef mij de tweede kleur van de ster");
k2:= RdCard();
WrLn;

Vierk(x1,y1,r,c);                                        (*Oproepen van de procedure om een vierkant te tekenen*)
ster(x2,y2,s,k,k2);                                      (*Oproepen van de procedure om een ster te tekenen*)

  (* Show graphics until user presses a key *)
  WrStr("Press any key to finish the program");
  t := RdKey();  WrLn;  WrLn;
END S3.

Terug naar “Oefeningen gemaakt in de klas”

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast

cron