MODULE Jumpman; FROM IO IMPORT WrStr, WrLn, RdKey, KeyPressed; FROM Lib IMPORT Delay, Speaker; FROM Graph IMPORT Init,Rectangle,Disc,Ellipse,Line,RawOutText; FROM Graph IMPORT _clrBLACK,_clrBLUE,_clrGREEN,_clrCYAN,_clrRED,_clrWHITE,_clrLIGHTGREEN,_clrLIGHTMAGENTA; CONST PLATEAU_SPRONGEN = 4; PLATEAU_SPRONGEN2 = 5; KOGELSPRONG = 4; KOGELSTRAAL = 3; MAX_X = 780; MIN_X = 20; BODEMNIVEAU = 600; VOOR = 1; ACHTER = -1; AFGROND1LINKERX = 150; AFGRONDLENGTE = 40; AFGRONDDIEPTE = 50; AFSTANDAFGRONDEN = 200; AANTALPLATEAUS = 12; SPATIE = 15; LETTER_DIKTE = 30; LETTER_LENGTE = 80; AFSTAND_LINKS = 60; HOOGTE_LIJN = 400; TUSSENTIJD_LETTERS = 550; VAR voetenman, hoogteman, voetenvijand, hoogtevijand, sprongteller: INTEGER; n: CHAR; richtingkogel, plateaureeks1_in_use, eindespel: BOOLEAN; p: ARRAY[1..AANTALPLATEAUS] OF RECORD xp,hp: INTEGER; END; (*------------------------------------------INTRO------------------------------------------*) (*PROCEDURE TITEL: 'JUMPMAN'*) PROCEDURE IntroTitel(); BEGIN (*J*) Disc(AFSTAND_LINKS+LETTER_DIKTE,HOOGTE_LIJN-LETTER_DIKTE,LETTER_DIKTE,_clrRED); Rectangle(AFSTAND_LINKS,HOOGTE_LIJN-LETTER_DIKTE,AFSTAND_LINKS+2*LETTER_DIKTE,HOOGTE_LIJN-2*LETTER_DIKTE,_clrBLACK,TRUE); Rectangle(AFSTAND_LINKS+LETTER_DIKTE,HOOGTE_LIJN-LETTER_DIKTE,AFSTAND_LINKS+2*LETTER_DIKTE,HOOGTE_LIJN-LETTER_LENGTE,_clrRED,TRUE); Delay(TUSSENTIJD_LETTERS); (*N*) Rectangle(AFSTAND_LINKS+13*LETTER_DIKTE+8*SPATIE,HOOGTE_LIJN,AFSTAND_LINKS+14*LETTER_DIKTE+8*SPATIE,HOOGTE_LIJN-LETTER_LENGTE,_clrRED,TRUE); Rectangle(AFSTAND_LINKS+15*LETTER_DIKTE+8*SPATIE,HOOGTE_LIJN,AFSTAND_LINKS+16*LETTER_DIKTE+8*SPATIE,HOOGTE_LIJN-LETTER_LENGTE,_clrRED,TRUE); Line(AFSTAND_LINKS+14*LETTER_DIKTE+8*SPATIE,HOOGTE_LIJN-LETTER_LENGTE,AFSTAND_LINKS+15*LETTER_DIKTE+8*SPATIE,HOOGTE_LIJN-LETTER_LENGTE+LETTER_DIKTE/2,_clrRED); Delay(TUSSENTIJD_LETTERS); (*U*) Disc(AFSTAND_LINKS+3*LETTER_DIKTE+SPATIE,HOOGTE_LIJN-LETTER_DIKTE,LETTER_DIKTE,_clrRED); Rectangle(AFSTAND_LINKS+2*LETTER_DIKTE+SPATIE,HOOGTE_LIJN-LETTER_DIKTE,AFSTAND_LINKS+4*LETTER_DIKTE+SPATIE,HOOGTE_LIJN-LETTER_LENGTE,_clrRED,TRUE); Line(AFSTAND_LINKS+3*LETTER_DIKTE+SPATIE,HOOGTE_LIJN-LETTER_DIKTE,AFSTAND_LINKS+3*LETTER_DIKTE+SPATIE,HOOGTE_LIJN-LETTER_LENGTE,_clrBLACK); Delay(TUSSENTIJD_LETTERS); (*A*) Rectangle(AFSTAND_LINKS+11*LETTER_DIKTE+7*SPATIE,HOOGTE_LIJN,AFSTAND_LINKS+13*LETTER_DIKTE+7*SPATIE,HOOGTE_LIJN-LETTER_LENGTE+LETTER_DIKTE,_clrRED,TRUE); Disc(AFSTAND_LINKS+12*LETTER_DIKTE+7*SPATIE,HOOGTE_LIJN-LETTER_LENGTE+LETTER_DIKTE,LETTER_DIKTE,_clrRED); Line(AFSTAND_LINKS+12*LETTER_DIKTE+7*SPATIE,HOOGTE_LIJN,AFSTAND_LINKS+12*LETTER_DIKTE+7*SPATIE,HOOGTE_LIJN-LETTER_LENGTE+LETTER_DIKTE,_clrBLACK); Delay(TUSSENTIJD_LETTERS); (*M*) Rectangle(AFSTAND_LINKS+4*LETTER_DIKTE+2*SPATIE,HOOGTE_LIJN,AFSTAND_LINKS+5*LETTER_DIKTE+2*SPATIE,HOOGTE_LIJN-LETTER_LENGTE,_clrRED,TRUE); Rectangle(AFSTAND_LINKS+6*LETTER_DIKTE+2*SPATIE,HOOGTE_LIJN,AFSTAND_LINKS+7*LETTER_DIKTE+2*SPATIE,HOOGTE_LIJN-LETTER_LENGTE,_clrRED,TRUE); Line(AFSTAND_LINKS+5*LETTER_DIKTE+2*SPATIE,HOOGTE_LIJN-LETTER_LENGTE,AFSTAND_LINKS+11*LETTER_DIKTE/2+2*SPATIE,HOOGTE_LIJN-LETTER_LENGTE+LETTER_DIKTE/2,_clrRED); Line(AFSTAND_LINKS+11*LETTER_DIKTE/2+2*SPATIE,HOOGTE_LIJN-LETTER_LENGTE+LETTER_DIKTE/2,AFSTAND_LINKS+6*LETTER_DIKTE+2*SPATIE,HOOGTE_LIJN-LETTER_LENGTE,_clrRED); Delay(TUSSENTIJD_LETTERS); (*M*) Rectangle(AFSTAND_LINKS+8*LETTER_DIKTE+6*SPATIE,HOOGTE_LIJN,AFSTAND_LINKS+9*LETTER_DIKTE+6*SPATIE,HOOGTE_LIJN-LETTER_LENGTE,_clrRED,TRUE); Rectangle(AFSTAND_LINKS+10*LETTER_DIKTE+6*SPATIE,HOOGTE_LIJN,AFSTAND_LINKS+11*LETTER_DIKTE+6*SPATIE,HOOGTE_LIJN-LETTER_LENGTE,_clrRED,TRUE); Line(AFSTAND_LINKS+9*LETTER_DIKTE+6*SPATIE,HOOGTE_LIJN-LETTER_LENGTE,AFSTAND_LINKS+19*LETTER_DIKTE/2+6*SPATIE,HOOGTE_LIJN-LETTER_LENGTE+LETTER_DIKTE/2,_clrRED); Line(AFSTAND_LINKS+19*LETTER_DIKTE/2+6*SPATIE,HOOGTE_LIJN-LETTER_LENGTE+LETTER_DIKTE/2,AFSTAND_LINKS+10*LETTER_DIKTE+6*SPATIE,HOOGTE_LIJN-LETTER_LENGTE,_clrRED); Delay(TUSSENTIJD_LETTERS); (*P*) Disc(AFSTAND_LINKS+8*LETTER_DIKTE+3*SPATIE,HOOGTE_LIJN-LETTER_LENGTE+LETTER_DIKTE,LETTER_DIKTE,_clrRED); Rectangle(AFSTAND_LINKS+7*LETTER_DIKTE+3*SPATIE,HOOGTE_LIJN,AFSTAND_LINKS+8*LETTER_DIKTE+3*SPATIE,HOOGTE_LIJN-LETTER_LENGTE,_clrRED,TRUE); Delay(TUSSENTIJD_LETTERS); Delay(600); END IntroTitel; (*PROCEDURE VOOR DE TOETSEN*) PROCEDURE IntroToetsen(); VAR i: CARDINAL; BEGIN Rectangle(1,1,900,700,_clrBLACK,TRUE); RawOutText(20,300,_clrWHITE,'Use: p to go to right'); Delay(500); RawOutText(20,320,_clrWHITE,' i to go to left'); Delay(500); RawOutText(20,340,_clrWHITE,' a to jump to left'); Delay(500); RawOutText(20,360,_clrWHITE,' z to jump to right'); Delay(500); RawOutText(20,380,_clrWHITE,' o to shoot'); Delay(500); RawOutText(20,400,_clrWHITE,' Space to quit'); Delay(500); FOR i:= 1 TO 400 DO RawOutText(i-1,420,_clrBLACK,' '); RawOutText(i,420,_clrLIGHTMAGENTA,'You ready? Lets get it on! Just touch a key'); END; RawOutText(20,440,_clrBLACK,'Dit doe ik omdat het systeem de laatste opdracht ni uitvoert'); n:= RdKey(); END IntroToetsen; (*PROCEDURE INTRO*) PROCEDURE Intro; BEGIN IntroTitel(); IntroToetsen(); RETURN; END Intro; (*----------------------------------------END INTRO----------------------------------------*) (*------------------------------------------EXTRO------------------------------------------*) (*PROCEDURE GAME OVER*) PROCEDURE Extro1; VAR i:CARDINAL;n:CHAR; BEGIN Rectangle(1,1,900,700,_clrBLACK,TRUE); FOR i := 5 TO 7 DO RawOutText(100,50,i,'THIS'); Delay(350); RawOutText(100,50,_clrBLACK,'THIS'); Delay(200); RawOutText(500,150,i+5,'GAME'); Delay(350); RawOutText(500,150,_clrBLACK,'GAME'); Delay(200); RawOutText(200,250,i+6,'IS'); Delay(350); RawOutText(200,250,_clrBLACK,'IS'); Delay(200); RawOutText(400,350,i+8,'OVER!!!'); Delay(350); RawOutText(400,350,_clrBLACK,'OVER!!!'); Delay(200); END; RawOutText(20,250,_clrWHITE,'You can allways try again :)'); n:= RdKey(); RETURN; END Extro1; (*PROCEDURE QUIT*) PROCEDURE Extro2; VAR n: CHAR; BEGIN Rectangle(1,1,900,700,_clrBLACK,TRUE); RawOutText(20,300,_clrWHITE,'You sure you wanna quit? We hope it was not THAT boring. See you next time...'); RawOutText(20,420,_clrBLACK,'Dit doe ik omdat het systeem de laatste opdracht ni uitvoert'); n:= RdKey(); RETURN; END Extro2; (*PROCEDURE END*) PROCEDURE ExtroAanvulling; VAR n:CHAR; i:INTEGER; BEGIN Rectangle(1,1,900,700,_clrBLACK,TRUE); FOR i:=0 TO 250 DO RawOutText(i,100,_clrRED,'OSMANOVIC MIRZA'); Delay(5); END; FOR i:= 0 TO 172 DO RawOutText(i,100,_clrCYAN,'KOSE FATIH'); Delay(5); END; FOR i:= 250 TO 430 DO RawOutText(i,100,_clrRED,'OSMANOVIC MIRZA'); Delay(5); END; FOR i := 0 TO 21 DO RawOutText(i,100,_clrGREEN,'KOUMAR AUPOURBAU'); Delay(5) END; FOR i:= 172 TO 352 DO RawOutText(i,100,_clrCYAN,'KOSE FATIH'); Delay(5); END; FOR i:=430 TO 650 DO RawOutText(i,100,_clrRED,'OSMANOVIC MIRZA'); Delay(5); END; n:= RdKey(); RETURN; END ExtroAanvulling; (*PROCEDURE EXTRO*) PROCEDURE Extro(); BEGIN IF (VAL(CARDINAL,n)=032) THEN Extro2(); ELSE Extro1(); END; ExtroAanvulling(); END Extro; (*----------------------------------------END EXTRO----------------------------------------*) (*-----------------------------------------CONTOUR-----------------------------------------*) (*PROCEDURE SOL*) PROCEDURE Bodem; BEGIN Rectangle(20,BODEMNIVEAU + 3,MAX_X,BODEMNIVEAU + 400,_clrRED,TRUE); END Bodem; (*BODEMNIVEAU + 3 anders wordt bodemopp. weggeveegd tijdens stappen*) (*PROCEDURE TROU SOL*) PROCEDURE Afgrond(q:INTEGER); BEGIN Rectangle(AFGROND1LINKERX+0*q,BODEMNIVEAU,AFGROND1LINKERX+AFGRONDLENGTE+0*q,BODEMNIVEAU+AFGRONDDIEPTE,_clrBLACK,TRUE); Rectangle(AFGROND1LINKERX+1*q,BODEMNIVEAU,AFGROND1LINKERX+AFGRONDLENGTE+1*q,BODEMNIVEAU+AFGRONDDIEPTE,_clrBLACK,TRUE); Rectangle(AFGROND1LINKERX+2*q,BODEMNIVEAU,AFGROND1LINKERX+AFGRONDLENGTE+2*q,BODEMNIVEAU+AFGRONDDIEPTE,_clrBLACK,TRUE); END Afgrond; (*PROCEDURE TEKENING PLATEAU*) PROCEDURE Plateau(x,l,h,d,c:INTEGER); (*x: linker x-coord. van plateau*) BEGIN Rectangle(x,BODEMNIVEAU-h,x+l,BODEMNIVEAU-h-d,c,TRUE); END Plateau; (*PROCEDURE VAN DE COORD. VOOR PLATEAUS 1*) PROCEDURE PlateauReeks1(); BEGIN plateaureeks1_in_use:= TRUE; (*code 1 in gebruik*) p[1].xp:=250; p[1].hp:=330; p[2].xp:=250; p[2].hp:=160; p[3].xp:=120; p[3].hp:=300; p[4].xp:=200; p[4].hp:=240; p[5].xp:=590; p[5].hp:=310; p[6].xp:=320; p[6].hp:=330; p[7].xp:=520; p[7].hp:=200; p[8].xp:=400; p[8].hp:=250; p[9].xp:=400; p[9].hp:=150; p[10].xp:=130; p[10].hp:=150; p[11].xp:=600; p[11].hp:=180; p[12].xp:=50; p[12].hp:=220; END PlateauReeks1; (*PROCEDURE VAN DE COORD. VOOR PLATEAUS 2*) PROCEDURE PlateauReeks2(); BEGIN plateaureeks1_in_use:=FALSE;(*code 2 in gebruik*) p[1].xp:=270; p[1].hp:=160; p[2].xp:=300; p[2].hp:=280; p[3].xp:=200; p[3].hp:=240; p[4].xp:=600; p[4].hp:=310; p[5].xp:=320; p[5].hp:=350; p[6].xp:=500; p[6].hp:=200; p[7].xp:=500; p[7].hp:=370; p[8].xp:=200; p[8].hp:=350; p[9].xp:=410; p[9].hp:=160; p[10].xp:=460; p[10].hp:=310; p[11].xp:=590; p[11].hp:=200; p[12].xp:=690; p[12].hp:=200; END PlateauReeks2; (*PROCEDURE VAN DE COORD. VOOR PLATEAUS 3*) PROCEDURE PlateauReeks3(); BEGIN plateaureeks1_in_use:=TRUE;(*code 3 in gebruik*) p[1].xp:=120; p[1].hp:=150; p[2].xp:=280; p[2].hp:=150; p[3].xp:=380; p[3].hp:=150; p[4].xp:=550; p[4].hp:=150; p[5].xp:=650; p[5].hp:=100; p[6].xp:=200; p[6].hp:=250; p[7].xp:=460; p[7].hp:=250; p[8].xp:=600; p[8].hp:=250; p[9].xp:=120; p[9].hp:=350; p[10].xp:=270; p[10].hp:=350; p[11].xp:=400; p[11].hp:=350; p[12].xp:=490; p[12].hp:=410; END PlateauReeks3; (*PROCEDURE VAN DE COORD. VOOR PLATEAUS 4*) PROCEDURE PlateauReeks4(); BEGIN plateaureeks1_in_use:=FALSE;(*code 4 in gebruik*) p[1].xp:=150; p[1].hp:=150; p[2].xp:=260; p[2].hp:=150; p[3].xp:=400; p[3].hp:=150; p[4].xp:=550; p[4].hp:=150; p[5].xp:=100; p[5].hp:=250; p[6].xp:=200; p[6].hp:=250; p[7].xp:=310; p[7].hp:=250; p[8].xp:=460; p[8].hp:=250; p[9].xp:=150; p[9].hp:=350; p[10].xp:=260; p[10].hp:=350; p[11].xp:=400; p[11].hp:=350; p[12].xp:=580; p[12].hp:=350; END PlateauReeks4; (*PROCEDURE CHANGEMENT DES PLATEAUX 1*) PROCEDURE VeranderPlateau1(); VAR i:INTEGER; BEGIN FOR i:=1 TO AANTALPLATEAUS DO (*vorige balkjes wegvegen*) Plateau(p[i].xp,40,p[i].hp,9,_clrBLACK); END; IF plateaureeks1_in_use = TRUE THEN PlateauReeks2(); FOR i:=1 TO AANTALPLATEAUS DO Plateau(p[i].xp,40,p[i].hp,9,_clrRED); END; ELSIF plateaureeks1_in_use=FALSE THEN PlateauReeks1(); FOR i:=1 TO AANTALPLATEAUS DO Plateau(p[i].xp,40,p[i].hp,9,_clrRED); END; END; END VeranderPlateau1; (*PROCEDURE CHANGEMENT DES PLATEAUX 2*) PROCEDURE VeranderPlateau2(); VAR i:INTEGER; BEGIN FOR i:=1 TO AANTALPLATEAUS DO (*vorige balkjes wegvegen*) Plateau(p[i].xp,40,p[i].hp,9,_clrBLACK); END; IF plateaureeks1_in_use = TRUE THEN PlateauReeks4(); FOR i:=1 TO AANTALPLATEAUS DO Plateau(p[i].xp,40,p[i].hp,9,_clrRED); END; ELSIF plateaureeks1_in_use=FALSE THEN PlateauReeks3(); FOR i:=1 TO AANTALPLATEAUS DO Plateau(p[i].xp,40,p[i].hp,9,_clrRED); END; END; END VeranderPlateau2; (*---------------------------------------END CONTOUR---------------------------------------*) (*-------------------------------------------MAN-------------------------------------------*) PROCEDURE BotsMuur(voetenman,hoogteman:INTEGER): BOOLEAN; VAR t: BOOLEAN; BEGIN IF (voetenman + 11 > MAX_X) OR (voetenman - 13 < MIN_X) OR (hoogteman - 29 <= 0) THEN t:= TRUE; (*voor plafond*) ELSE t:= FALSE; END; RETURN t; END BotsMuur; (*PROCEDURE TEKENING VAN DE MAN*) PROCEDURE TekenMan(voetenman,hoogteman,richtingman,c1,c2,c3: INTEGER); BEGIN (*hoofd*) Disc(voetenman,hoogteman-25,5,c1); (*romp*) Ellipse (voetenman,hoogteman-11,8,8,c2,TRUE); Ellipse (voetenman,hoogteman-10,8,8,c2,TRUE); (*helm*) Rectangle(voetenman,hoogteman-24,voetenman+5*richtingman,hoogteman-28,_clrBLACK,TRUE); (*arm*) Rectangle(voetenman-3*richtingman,hoogteman-12,voetenman+11*richtingman,hoogteman-16,c3,TRUE); (*voeten*) Rectangle(voetenman-6,hoogteman+2,voetenman-1,hoogteman-2,c3,TRUE); Rectangle(voetenman+1,hoogteman+2,voetenman+6,hoogteman-2,c3,TRUE); END TekenMan; (*PROCEDURE TIRER*) PROCEDURE Schiet(voetenman, hoogteman: INTEGER; richtingkogel: BOOLEAN); VAR i:INTEGER; c:CHAR; BEGIN Speaker(350,60); IF richtingkogel = TRUE THEN FOR i:= (voetenman-16 ) TO (MIN_X+2*KOGELSTRAAL) BY (-KOGELSPRONG) DO Disc(i-KOGELSTRAAL,hoogteman-14,KOGELSTRAAL,_clrRED); Delay(4); Disc(i-KOGELSTRAAL,hoogteman-14,KOGELSTRAAL,_clrBLACK); WHILE KeyPressed() = TRUE DO (*buffer*) c:= RdKey(); END; END; ELSE FOR i:= (voetenman+16 ) TO (MAX_X-2*KOGELSTRAAL) BY KOGELSPRONG DO Disc(i+KOGELSTRAAL,hoogteman-14,KOGELSTRAAL,_clrRED); Delay(4); Disc(i+KOGELSTRAAL,hoogteman-14,KOGELSTRAAL,_clrBLACK); WHILE KeyPressed() = TRUE DO (*buffer*) c:= RdKey(); END; END; IF (hoogteman = hoogtevijand) THEN TekenMan(voetenvijand,hoogtevijand,-1,_clrBLACK,_clrBLACK,_clrBLACK); eindespel:= TRUE END; END; END Schiet; PROCEDURE StaPlateau():BOOLEAN; VAR u:BOOLEAN; i:INTEGER; BEGIN IF (voetenman+5>460) AND (voetenman-5<500) AND (hoogteman=BODEMNIVEAU-70) THEN u:= TRUE; ELSIF (voetenman+5>200) AND (voetenman-5<240) AND (hoogteman=BODEMNIVEAU-70) THEN (*constante plateaus*) u:= TRUE; ELSIF (voetenman+5>660) AND (voetenman-5<780) AND (hoogteman=BODEMNIVEAU-420) THEN u:= TRUE; ELSE u:= FALSE; END; FOR i:= 1 TO AANTALPLATEAUS DO IF ((voetenman+5) >= p[i].xp) AND (voetenman-5<=p[i].xp+40) AND (hoogteman=BODEMNIVEAU-p[i].hp-10) THEN u:=TRUE; (*10 = 9(=plateaubreedte)+1(=om vloer ni te vegen)*) END; END; RETURN u; END StaPlateau; PROCEDURE VerticVal(richtingman: INTEGER); BEGIN TekenMan(voetenman-2*richtingman,hoogteman,richtingman,_clrBLACK,_clrBLACK,_clrBLACK); TekenMan(voetenman-2*richtingman,hoogteman,-richtingman,_clrBLACK,_clrBLACK,_clrBLACK); REPEAT TekenMan(voetenman,hoogteman,richtingman,_clrBLACK,_clrBLACK,_clrBLACK); IF BotsMuur(voetenman+richtingman*15,hoogteman) = FALSE THEN voetenman:=voetenman+richtingman; END; hoogteman:=hoogteman+10; TekenMan(voetenman,hoogteman,richtingman,_clrLIGHTGREEN,_clrGREEN,_clrCYAN); Delay(30); UNTIL (StaPlateau() = TRUE) OR (hoogteman = BODEMNIVEAU); END VerticVal; (*PROCEDURE onder plateau naar boven springen ... niet door plateau gaan*) PROCEDURE PlateauOnder(): BOOLEAN; VAR v:BOOLEAN; i:INTEGER; BEGIN (*constante plateaus*) IF (voetenman+11>=200) AND (voetenman-5<=240) AND (hoogteman-30=BODEMNIVEAU-60) THEN v:=TRUE; ELSIF (voetenman+11>=660) AND (voetenman-5<=780) AND (hoogteman-30=BODEMNIVEAU-410) THEN v:=TRUE; ELSIF (voetenman+11>=460) AND (voetenman-5<=500) AND (hoogteman-30=BODEMNIVEAU-60) THEN v:=TRUE; ELSE v:=FALSE; END; FOR i:=1 TO AANTALPLATEAUS DO IF ((voetenman+11)>=p[i].xp) AND (voetenman-5<=p[i].xp+40) AND (hoogteman-30=BODEMNIVEAU-p[i].hp) THEN v:=TRUE; END; END; RETURN v; END PlateauOnder; PROCEDURE Spring(richtingman: INTEGER); VAR j,i: INTEGER; t: BOOLEAN; c: CHAR; BEGIN j:=1; sprongteller:= sprongteller + 1; IF sprongteller MOD PLATEAU_SPRONGEN = 0 THEN VeranderPlateau1(); END; IF sprongteller MOD PLATEAU_SPRONGEN2 = 0 THEN VeranderPlateau2(); END; t:=BotsMuur(voetenman+richtingman*3,hoogteman-10); Speaker(600,50);Speaker(750,5);Speaker(900,50); IF t=FALSE THEN REPEAT j:=j+1; TekenMan(voetenman,hoogteman,richtingman,_clrBLACK,_clrBLACK,_clrBLACK); TekenMan(voetenman,hoogteman,-richtingman,_clrBLACK,_clrBLACK,_clrBLACK); voetenman:=voetenman+richtingman*3; hoogteman:=hoogteman-10; t:=BotsMuur(voetenman+richtingman*3,hoogteman-10); TekenMan(voetenman,hoogteman,richtingman,_clrLIGHTGREEN,_clrGREEN,_clrCYAN); Delay(10); Plateau(200,40,60,9,_clrRED); Plateau(460,40,60,9,_clrRED); Plateau(660,120,410,9,_clrRED); FOR i:=1 TO AANTALPLATEAUS DO Plateau(p[i].xp,40,p[i].hp,9,_clrRED); END; Delay(40); WHILE KeyPressed() = TRUE DO (*buffer*) c:= RdKey(); END; UNTIL (PlateauOnder() = TRUE) OR (j = 14) OR (t = TRUE); END; t:=BotsMuur(voetenman+richtingman*3,hoogteman-10); IF (t=TRUE) AND (hoogteman=BODEMNIVEAU) THEN REPEAT TekenMan(voetenman,hoogteman,richtingman,_clrBLACK,_clrBLACK,_clrBLACK); TekenMan(voetenman,hoogteman,-richtingman,_clrBLACK,_clrBLACK,_clrBLACK); hoogteman := hoogteman-10; TekenMan(voetenman,hoogteman,richtingman,_clrLIGHTGREEN,_clrGREEN,_clrCYAN); Delay(30); j := j+1; WHILE KeyPressed() = TRUE DO (*buffer*) c:= RdKey(); END; UNTIL (j=14); REPEAT TekenMan(voetenman,hoogteman,richtingman,_clrBLACK,_clrBLACK,_clrBLACK); TekenMan(voetenman,hoogteman,-richtingman,_clrBLACK,_clrBLACK,_clrBLACK); hoogteman:= hoogteman+10; TekenMan(voetenman,hoogteman,richtingman,_clrLIGHTGREEN,_clrGREEN,_clrCYAN); Delay(30); WHILE KeyPressed() = TRUE DO (*buffer*) c:= RdKey(); END; UNTIL hoogteman = BODEMNIVEAU; END; t:=BotsMuur(voetenman+richtingman*3,hoogteman-10); (*terugvallen*) IF t=FALSE THEN REPEAT TekenMan(voetenman,hoogteman,richtingman,_clrBLACK,_clrBLACK,_clrBLACK); TekenMan(voetenman,hoogteman,-richtingman,_clrBLACK,_clrBLACK,_clrBLACK); hoogteman:= hoogteman+10; voetenman:= voetenman+richtingman*3; t:=BotsMuur(voetenman+richtingman*3,hoogteman-10); TekenMan(voetenman,hoogteman,richtingman,_clrLIGHTGREEN,_clrGREEN,_clrCYAN); Delay(30); Plateau(200,40,60,9,_clrRED); Plateau(460,40,60,9,_clrRED); Plateau(660,120,410,9,_clrRED); FOR i:=1 TO AANTALPLATEAUS DO Plateau(p[i].xp,40,p[i].hp,9,_clrRED); END; WHILE KeyPressed() = TRUE DO (*buffer*) c:= RdKey(); END; UNTIL (StaPlateau() = TRUE) OR (hoogteman = BODEMNIVEAU) OR (t = TRUE); END; t:=BotsMuur(voetenman+richtingman*15,hoogteman); IF (t=TRUE) AND (hoogteman#BODEMNIVEAU) THEN TekenMan(voetenman,hoogteman,richtingman,_clrBLACK,_clrBLACK,_clrBLACK); TekenMan(voetenman,hoogteman,-richtingman,_clrBLACK,_clrBLACK,_clrBLACK); VerticVal(richtingman); TekenMan(voetenman,hoogteman,richtingman,_clrLIGHTGREEN,_clrGREEN,_clrCYAN); END; END Spring; PROCEDURE ValAfgrond(richtingman: INTEGER); VAR i: INTEGER; BEGIN FOR i:= 0 TO (2*AFSTANDAFGRONDEN) BY AFSTANDAFGRONDEN DO IF (voetenman-5>AFGROND1LINKERX+i) AND (voetenman+5