program kresleni; uses crt; const kurzor = #220; vypln = #219; type TBod = record x,y: byte; end; var poz: TBod; barvy: array [1..80,1..25] of byte; c: char; procedure Init; begin clrscr; poz.x := 1; poz.y := 1; textcolor(white); write(kurzor); end; procedure Done; begin textcolor(lightgray); clrscr; end; procedure Nahoru; begin if (poz.y > 1) then begin gotoxy(poz.x, poz.y); textcolor(barvy[poz.x, poz.y]); write(vypln); dec(poz.y); gotoxy(poz.x, poz.y); textcolor(white); write(kurzor); end; end; procedure Dolu; begin with poz do { prikaz with umoznuje jednoduse pracovat se zaznamy } if (y < 25) then begin { srovnej s predchozi procedurou } gotoxy(x,y); textcolor(barvy[x,y]); write(vypln); inc(y); gotoxy(x,y); textcolor(white); write(kurzor); end; end; procedure Doprava; begin with poz do if (x < 80) then begin gotoxy(x,y); textcolor(barvy[x,y]); write(vypln); inc(x); gotoxy(x,y); textcolor(white); write(kurzor); end; end; procedure Doleva; begin with poz do if (x > 1) then begin gotoxy(x,y); textcolor(barvy[x,y]); write(vypln); dec(x); gotoxy(x,y); textcolor(white); write(kurzor); end; end; procedure ZmenBarvu(barva: byte); begin barvy[poz.x, poz.y] := barva; end; begin Init; repeat c := readkey; case c of #27: break; '0'..'9': ZmenBarvu(ord(c) - ord('0')); 'a'..'f': ZmenBarvu(ord(c) + 10 - ord('a')); 'A'..'F': ZmenBarvu(ord(c) + 10 - ord('A')); #0: begin c := readkey; case ord(c) of 72: Nahoru; 80: Dolu; 77: Doprava; 75: Doleva; end; end; end; until false; Done; end.