Lopend manneke (Topic G S5)

Jaarvak op 7 studiepunten
Forumregels
Misschien werd je vraag al vorig jaar gesteld? Gebruik dus eerst de zoekoptie!

Er zijn formularia/samenvattingen aanwezig op de volgende link: viewtopic.php?f=19&t=93
dirk
Regelmatig forumgebruiker
Regelmatig forumgebruiker
Berichten: 76
Lid geworden op: 05 jan 2009, 13:20

Lopend manneke (Topic G S5)

Berichtdoor dirk » 23 jun 2009, 17:11

Hellow,

Een vriend stuurde mij deze oplossing door maar er zitten fouten in. De code lijkt mij ni verkeerd, dus daarom snap ik ook ni waar het precies mis loopt. Iemand die het ziet?

Code: Selecteer alles


FROM IO IMPORT WrStr, WrLn, RdCard, WrCard, RdInt, WrInt, RdKey, RdLn, WrFixReal;
FROM Graph IMPORT Init, Line, Ellipse, Disc, Circle, Rectangle, _clrBLACK, _clrBLUE, _clrGREEN, _clrCYAN, _clrRED, _clrMAGENTA;
FROM RealMath IMPORT cos, sin, pi;
FROM Lib IMPORT Delay; (* Wait n milliseconds *)

CONST SCREEN_SIZE = 600;

TYPE LedemaatRc = RECORD
                    x,y: CARDINAL;
                    lengte, lengteVoet: CARDINAL;
                    hoek: INTEGER; (* in graden *)
                    kleur: CARDINAL;
                  END;

PROCEDURE TekenLedemaat(ledemaat: LedemaatRc);
  VAR hoek_rad, x2, y2, x3, y3: REAL;
BEGIN
  hoek_rad := VAL(REAL, ledemaat.hoek) * pi / 180.0;
  x2 := VAL(REAL, ledemaat.x) + VAL(REAL, ledemaat.lengte) * sin(hoek_rad);
  y2 := VAL(REAL, ledemaat.y) + VAL(REAL, ledemaat.lengte) * cos(hoek_rad);
  Line(ledemaat.x, ledemaat.y, VAL(CARDINAL, x2), VAL(CARDINAL, y2), ledemaat.kleur);
  IF ledemaat.lengteVoet > 0 THEN
    x3 := x2 + VAL(REAL, ledemaat.lengteVoet) * cos(hoek_rad);
    y3 := y2 - VAL(REAL, ledemaat.lengteVoet) * sin(hoek_rad);
    Line(VAL(CARDINAL, x2), VAL(CARDINAL, y2), VAL(CARDINAL, x3), VAL(CARDINAL, y3), ledemaat.kleur);
  END;
END TekenLedemaat;

(*********************************************************************************)

PROCEDURE TekenMan(x0,y0,lengte:CARDINAL;hoek:INTEGER;kleur:CARDINAL);
  VAR  linkerbeen,rechterbeen,romp,linkerarm,rechterarm:LedemaatRc;hoek_rad:REAL;
BEGIN

  linkerbeen.x := x0;
  linkerbeen.y := y0;
  linkerbeen.lengte := lengte;
  linkerbeen.lengteVoet := 1/6*lengte;
  linkerbeen.hoek := hoek;
  linkerbeen.kleur := kleur;
  TekenLedemaat(linkerbeen);
  Delay(200);

  rechterbeen.x := x0;
  rechterbeen.y := y0;
  rechterbeen.lengte := lengte;
  rechterbeen.lengteVoet := 1/6*lengte;
  rechterbeen.hoek := -hoek;
  rechterbeen.kleur := kleur;
  TekenLedemaat(rechterbeen);
  Delay(200);

  romp.x := x0 ;
  romp.y := y0 - 2/6 * lengte;
  romp.lengte := 2/6 * lengte;
  romp.lengteVoet := 0;
  romp.hoek := 0;
  romp.kleur := kleur;
  TekenLedemaat(romp);
  Delay(200);

  linkerarm.x := x0;
  linkerarm.y := y0 - 2/6 * lengte;
  linkerarm.lengte := lengte/2;
  linkerarm.lengteVoet := 0;
  linkerarm.hoek := hoek;
  linkerarm.kleur := kleur;
  TekenLedemaat(linkerarm);
  Delay(200);

  rechterarm.x := x0;
  rechterarm.y := y0 - 2/6 * lengte;
  rechterarm.lengte := lengte/2;
  rechterarm.lengteVoet := 0;
  rechterarm.hoek := -hoek;
  rechterarm.kleur := kleur;
  TekenLedemaat(rechterarm);
  Delay(200);

  Disc(x0, y0 - 5/12 * lengte, lengte/4, kleur);



END TekenMan;

  VAR c: CHAR;
      linkerbeen,rechterbeen,linkerarm,rechterarm,romp,hoofd: LedemaatRc;
BEGIN
  WrLn;
  IF NOT Init(1, 1 , SCREEN_SIZE, SCREEN_SIZE) THEN
     WrStr("Sorry, graphics doesn't work");WrLn;
     RETURN;
    END;


  TekenMan(200,400,120,45,7);



  WrStr("Press any key to finish the program");
  c := RdKey();
  WrLn; RdLn;

END G_S5.

Beerend
IRW-FAN!
IRW-FAN!
Berichten: 313
Lid geworden op: 30 sep 2008, 18:15
Locatie: Mechelen
Contacteer:

Re: Lopend manneke (Topic G S5)

Berichtdoor Beerend » 23 jun 2009, 17:33

Er staat in het begin geen MODULE naam; [slecht]
JeroenV
Beginnend forumgebruiker
Beginnend forumgebruiker
Berichten: 40
Lid geworden op: 03 okt 2008, 20:47
Locatie: Grimbergen

Re: Lopend manneke (Topic G S5)

Berichtdoor JeroenV » 23 jun 2009, 17:49

ik denk dat het is omdat je je armen tekent bovenop u benen.

linkerarm.y := y0 - (lengte/4); (* of iets anders, dit komt vrij goed uit *)
linkerarm.hoek := hoek+65;

hiermee is er nog altijd een heel mottig manneke, maar de armen staan al bovenaan en in een "armerige" positie,
verder snap ik niet waarom je je romp definieert om er dan een schijf over te tekenen.

het is een begin, maar aangezien ik rotslecht ben in informatica hoop ik da ze mij snel zullen aanvullen.
dirk
Regelmatig forumgebruiker
Regelmatig forumgebruiker
Berichten: 76
Lid geworden op: 05 jan 2009, 13:20

Re: Lopend manneke (Topic G S5)

Berichtdoor dirk » 23 jun 2009, 18:23

Ja, het werkt ongeveer ...

Terug naar “Informatica”

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast

cron