PROGRAM Infographie; (* Auteurs: Peyrard Fabrice & Pianelo Patrice *) BEGIN Pref Mouse Block VAR h,v,p,lg,b,vitd,vith : Integer, l,r,z : Boolean, cour,debut: Cub; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί/////////////////////// CUB \\\\\\\\\\\\\\\\\\\\\\ Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) Unit Cub : Class; Var x,y : Real, suiv : Cub; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί/////////////////////// DROITE \\\\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) Unit Droite : Coroutine; Var dif,dif1,b : Integer; Begin Return; Do dif1 := 640; cour := debut; Do b := Calcul_b (cour.x,cour.y); dif := (b - y) - (x+lg+lg Div 3); If ((dif < dif1) AND (dif > 0)) Then dif1 := dif; Fi; If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; Call Cube (x,y,0); If (dif1 < vith) Then x := x + dif1; Else x := x + vith; Fi; Call Cube (x,y,15); Call Setwindow (x,x+(lg+lg Div 3),y,y+lg); Detach; Od; End Droite; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί/////////////////////// GAUCHE \\\\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) Unit Gauche: Coroutine; Var dif,dif1,b : Integer; Begin Return; Do dif1 := 640; cour := debut; Do b := Calcul_b (cour.x+lg+lg Div 3,cour.y); dif := x-(b - y); If ((dif < dif1) AND (dif > 0)) Then dif1 := dif; Fi; If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; Call Cube (x,y,0); If (dif1 < vith) Then x := x - dif1; Else x := x - vith; Fi; Call Cube (x,y,15); Call Setwindow (x,x+(lg+lg Div 3),y,y+lg); Detach; Od; End Gauche; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί/////////////////////// HAUT \\\\\\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) Unit Haut: Coroutine; Var dif,dif1: Integer; Begin Return; Do dif1 := 640; cour := debut; Do dif := y-(lg Div 2) - cour.y; If ((dif < dif1) AND (dif > 0)) Then dif1 := dif; Fi; If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; Call Cube (x,y,0); If (dif1 < vitd) Then y := y - dif1; x := x + dif1; Else y := y - vitd; x := x + vitd; Fi; Call Cube (x,y,15); Call Setwindow (x,x+(lg+lg Div 3),y,y+lg); Detach; Od; End Haut; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί//////////////////////// BAS \\\\\\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) Unit Bas: Coroutine; Var dif,dif1: Integer; Begin Return; Do dif1 := 640; cour := debut; Do dif := cour.y-(lg Div 2) - y; If ((dif < dif1) AND (dif > 0)) Then dif1 := dif; Fi; If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; Call Cube (x,y,0); If (dif1 < vitd) Then y := y + dif1; x := x - dif1; Else y := y + vitd; x := x - vitd; Fi; Call Cube (x,y,15); Call Setwindow (x,x+(lg+lg Div 3),y,y+lg); Detach; Od; End Bas; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί/////////////////////// CUBE \\\\\\\\\\\\\\\\\\\\\ Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) Unit Cube: IIUWGraph Procedure (x,y,c : Integer); Begin Call Color (c); Call Move (x,y); Call Draw (x + lg + lg Div 3,y); Call Draw (x + lg + lg Div 2 + lg Div 3,y - lg Div 2); Call Draw (x + lg Div 2,y - lg Div 2); Call Draw (x,y); Call Draw (x,y + lg); Call Draw (x + lg + lg Div 3,y + lg); Call Draw (x + lg + lg Div 3,y); Call Move (x + lg + lg Div 3,y + lg); Call Draw (x + lg + lg Div 2 + lg Div 3,y + lg Div 2); Call Draw (x + lg + lg Div 2 + lg Div 3,y - lg Div 2); End Cube; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί/////////////////////// NOIR \\\\\\\\\\\\\\\\\\\\\ Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) Unit Noir: IIUWGraph Procedure (x,y,c : Integer); Var i : Integer; Begin Call Color (c); For i:= x + 1 To x + (lg+lg Div 3) - 1 Do Call Move (i,y+1); Call Draw (i,y+lg-1); Od; For i := y To y + lg-2 Do Call Move (x+(lg+lg Div 3)+1,i); Call Draw (x+(lg+lg Div 2+lg Div 3)-1,i-(lg Div 2)+2); Od; For i:= x + 2 To x + (lg+lg Div 3) Do Call Move (i,y-1); Call Draw (i+(lg Div 2)-2,y-(lg Div 2)+1); Od; End Noir; Unit Calcul_b: Function (vx,vy:Integer):Integer; Begin result := vx + vy; End Calcul_b; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί////////////////////// DEPLACE \\\\\\\\\\\\\\\\\\\ Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) UNIT Deplace: IIUWGraph Procedure; Var i : Integer, err : Boolean, Ba : Bas, Ha : Haut, Ga : Gauche, Dr : Droite, c1 : Cub; Begin Ba := New Bas; Ha := New Haut; Ga := New Gauche; Dr := New Droite; Call Setposition (x+(4*lg) Div 6,y+lg Div 2); Call Hidecursor; Do i := Inkey; Call Status (h,v,l,r,z); (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί/////////////////////// DROITE \\\\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) If ((i = -77) OR (h>=x+(lg+lg Div 3))) Then If (x+lg+lg Div 3 < 595-vith) Then err := False; cour := debut; Do b := Calcul_b (cour.x,cour.y); If (y = -(x+lg+lg Div 3) + b) Then If ((y-lg Div 2 < cour.y) AND (y > cour.y-lg Div 2)) Then err := True; Exit; Fi; Fi; If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; If Not err Then Attach (Dr); Fi; cour := debut; Do Call Cube (cour.x,cour.y,2); If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; Fi; Fi; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί/////////////////////// GAUCHE \\\\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) If ((i = -75) OR (h<=x)) Then If (x > vith) Then err := False; cour := debut; Do b := Calcul_b (cour.x+lg+lg Div 3,cour.y); If (y = -x+b) Then If ((y-lg Div 2 < cour.y) AND (y > cour.y-lg Div 2)) Then err := True; Exit; Fi; Fi; If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; If Not err Then Attach (Ga); Fi; cour := debut; Do Call Cube (cour.x,cour.y,2); If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; Fi; Fi; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί//////////////////////// BAS \\\\\\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) If ((i = -80) OR (v>=y+lg)) Then If (y+lg < 300-vitd) AND (x > vith) Then err := False; cour := debut; Do If (y = cour.y-(lg Div 2)) Then If ((x <= cour.x+(lg+lg Div 2+lg Div 3)) AND (x >= cour.x-(lg Div 2+lg Div 3))) Then err := True; Exit; Fi; Fi; If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; If Not err Then Attach (Ba); Fi; cour := debut; Do Call Cube (cour.x,cour.y,2); If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; Fi; Fi; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί/////////////////////// HAUT \\\\\\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) If ((i = -72) OR (v<=y)) Then If (y-lg Div 2 > vitd) AND (x+lg+lg Div 3 < 595-vith) Then err := False; cour := debut; Do If (y-(lg Div 2) = cour.y) Then If ((x+(lg + lg Div 2 + lg Div 3) >= cour.x) AND (x+(lg Div 2) <= cour.x+(lg + lg Div 3))) Then err := True; Exit; FI; Fi; If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; If Not err Then Attach (Ha); Fi; cour := debut; Do Call Cube (cour.x,cour.y,2); If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; Fi; Fi; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί///////////////////// VALIDATION \\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) If ((i = 27) OR l) Then cour := debut; C1 := new Cub; C1.x := x; C1.y := y; Do b := Calcul_b (debut.x+lg+lg Div 3,debut.y); If ((y-lg Div 2) < debut.y) AND (x < (b-y)) OR ((y) < (debut.y-lg Div 2) AND (x >= (b-y))) Then C1.suiv := debut; debut := C1; Exit; Fi; If (cour.suiv = NONE) Then cour.suiv := C1; C1.suiv := NONE; Exit; Fi; b := Calcul_b (cour.suiv.x+lg+lg Div 3,cour.suiv.y); If ((y-lg Div 2) < cour.suiv.y) AND (x < (b-y)) OR ((y) < (cour.suiv.y-lg Div 2) AND (x >= (b-y))) Then C1.suiv := cour.suiv; cour.suiv := C1; Exit; Fi; cour := cour.suiv; Od; cour := debut; Do Call Cube (cour.x,cour.y,2); Call Noir (cour.x,cour.y,0); If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; Od; Exit; Fi; Od; Kill (Ba); Kill (Ha); Kill (Ga); Kill (Dr); End Deplace; End Cub; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί///////////////////// RECTANGLE \\\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) Unit Rectangle: IIUWGraph Procedure (x1,y1,x2,y2,c : Integer); Begin Call Color (c); Call Move (x1,y1); Call Draw (x2,y1); Call Draw (x2,y2); Call Draw (x1,y2); Call Draw (x1,y1); Call Move (x1+1,y1+1); Call Draw (x2-1,y1+1); Call Draw (x2-1,y2-1); Call Draw (x1+1,y2-1); Call Draw (x1+1,y1+1); End Rectangle; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί////////////////////// EFFACE \\\\\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) Unit Efface: IIUWGraph Procedure (x1,y1,x2,y2,c : Integer); Var i : Integer; Begin Call Color (c); For i:=y1 To y2 Do Call Move (x1,i); Call Draw (x2,i); Od; End Efface; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί////////////////////// TEXTE \\\\\\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) Unit Texte: IIUWGraph Procedure (x,y : Integer,ch:String); Begin Call Color (9); Call Move (x,y); Call Outstring (ch); End Texte; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί///////////////////// OPTIONS \\\\\\\\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) Unit Options: IIUWGraph Procedure; Var cc: Cub, i: Integer; Begin lg := 30; cc := New Cub; Call cc.Cube (290,50,15); Call cc.Noir (290,50,1); Call cc.Cube (235,40,15); Call cc.Noir (235,40,2); Call cc.Cube (360,35,15); Call cc.Noir (360,35,3); Call cc.Cube (200,70,15); Call cc.Noir (200,70,4); Call cc.Cube (260,80,15); Call cc.Noir (260,80,5); Call cc.Cube (320,75,15); Call cc.Noir (320,75,6); Call Color (2); Call Move (260,135); Call Outstring ("OPTIONS"); Call Color (15); Call Move (100,150); Call Outstring ("Vitesse"); Call Move (410,150); Call Outstring ("Taille"); Call Rectangle (150,170,165,185,9); Call Rectangle (150,200,165,215,9); Call Rectangle (150,230,165,245,9); Call Color (15); Call Move (180,178); Call Outstring ("Lent"); Call Move (180,208); Call Outstring ("Moyen"); Call Move (180,238); Call Outstring ("Rapide"); Call Rectangle (450,170,465,185,9); Call Rectangle (450,200,465,215,9); Call Rectangle (450,230,465,245,9); Call Color (15); Call Move (480,178); Call Outstring ("Petit"); Call Move (480,208); Call Outstring ("Moyen"); Call Move (480,238); Call Outstring ("Gros"); Call Rectangle (250,300,350,330,14); Call Texte (265,310,"Continuer"); Call Efface (152,202,163,213,7); Call Efface (452,202,463,213,7); lg := 60; vitd := 4; vith := 6; z := Init (i); Call Setwindow (0,630,0,330); Call Showcursor; Do Call Status (h,v,l,r,z); If (l) Then Call Hidecursor; If ((h >= 250) AND (h <= 350)) AND ((v >= 300) AND (v <= 330)) Then Exit; Fi; If ((h >= 150) AND (h <= 165)) AND ((v >= 170) AND (v <= 185)) Then Case (vitd) When 2: Call Efface (152,172,163,183,0); When 4: Call Efface (152,202,163,213,0); When 10: Call Efface (152,232,163,243,0); Esac; Call Efface (152,172,163,183,7); vitd := 2; vith := 4; Fi; If ((h >= 150) AND (h <= 165)) AND ((v >= 200) AND (v <= 215)) Then Case (vitd) When 2: Call Efface (152,172,163,183,0); When 4: Call Efface (152,202,163,213,0); When 10: Call Efface (152,232,163,243,0); Esac; Call Efface (152,202,163,213,7); vitd := 4; vith := 6; Fi; If ((h >= 150) AND (h <= 165)) AND ((v >= 230) AND (v <= 245)) Then Case (vitd) When 2: Call Efface (152,172,163,183,0); When 4: Call Efface (152,202,163,213,0); When 10: Call Efface (152,232,163,243,0); Esac; Call Efface (152,232,163,243,7); vitd := 10; vith := 12; Fi; If ((h >= 450) AND (h <= 465)) AND ((v >= 170) AND (v <= 185)) Then Case (lg) When 30: Call Efface (452,172,463,183,0); When 60: Call Efface (452,202,463,213,0); When 80: Call Efface (452,232,463,243,0); Esac; Call Efface (452,172,463,183,7); lg := 30; Fi; If ((h >= 450) AND (h <= 465)) AND ((v >= 200) AND (v <= 215)) Then Case (lg) When 30: Call Efface (452,172,463,183,0); When 60: Call Efface (452,202,463,213,0); When 80: Call Efface (452,232,463,243,0); Esac; Call Efface (452,202,463,213,7); lg := 60; Fi; If ((h >= 450) AND (h <= 465)) AND ((v >= 230) AND (v <= 245)) Then Case (lg) When 30: Call Efface (452,172,463,183,0); When 60: Call Efface (452,202,463,213,0); When 80: Call Efface (452,232,463,243,0); Esac; Call Efface (452,232,463,243,7); lg := 80 Fi; Call Showcursor; Fi; Od; Call Efface (0,0,640,350,0); Kill (cc); End Options; (*ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»*) (*Ί/////////////// PROGRAMME PRINCIPAL \\\\\\\\\\\\\\\Ί*) (*ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ*) BEGIN Pref IIUWGraph Block VAR i,j,nb : Integer, C : Cub; Begin nb := 13; z := Init (j); Call Gron (nocard); Call Border (5); Call Options; Call Color (3); Call Move (0,300); Call Draw (605,300); Call Draw (605,310); Call Draw (0,310); Call Move (605,300); Call Draw (638,267); Call Move (605,310); Call Draw (638,277); Call Move (0,320); Call Color (15); C := New Cub; C.x := 200; C.y := 150; Call C.Cube (C.x,C.y,2); debut := C; For i:=1 to nb Do Call Rectangle (520,315,600,345,14); Call Texte (535,325,"Quitter"); Call Rectangle (420,315,500,345,14); Call Texte (435,325,"Suivant"); z := Init (j); Call Setwindow (0,630,0,330); Call Showcursor; Do Call Status (h,v,l,r,z); If (l) Then If ((h >= 520) AND (h <= 600)) AND ((v >= 315) AND (v <= 345)) Then Call Hidecursor; Call Efface (520,315,600,345,0); Call Efface (420,315,500,345,0); Exit Exit; Fi; If ((h >= 420) AND (h <= 500)) AND ((v >= 315) AND (v <= 345)) Then Exit; Fi; Fi; Od; Call Hidecursor; Call Efface (520,315,600,345,0); Call Efface (420,315,500,345,0); Call Color (15); Call Move (10,320); Call Outstring ("D‚placez le cube, et fixez"); Call Outstring (" le en cliquant sur le bouton de GAUCHE."); C := New Cub; C.x := 595-lg-lg Div 3; C.y := 290-lg; Call C.Cube (C.x,C.y,15); z := Init (j); Call C.Deplace; Call Move (10,320); Call Outstring (" "); Call Outstring (" "); Od; Call Move (0,320); Call Color (15); Call Outstring ("Cliquez sur le bouton de DROITE"); Call Outstring (" pour obtenir une figure en couleurs. "); Do Call Status (h,v,l,r,z); If (r) Then i := 1; cour := debut; Do Call C.Cube (cour.x,cour.y,15); Call C.Noir (cour.x,cour.y,i); If (cour.suiv = NONE) Then Exit; Else cour := cour.suiv; Fi; i := i + 1; Od; Exit; Fi; Od; Call Move (0,320); Call Color (15); Call Outstring ("Cliquez sur le bouton de GAUCHE"); Call Outstring (" pour sortir ... "); Do Call Status (h,v,l,r,z); If (l) Then Exit; Fi; Od; Call Groff; End; End; END Infographie.