Сегодня я пытаюсь начать с моей школьной работы, я начал с небольшой графики, особенно с меню, где есть 7 названий, и вы можете переместитесь между 2 из них с помощью Key-Up и Key-Down. Основная проблема заключается в том, когда вы двигаетесь быстро, вы можете видеть, что я бы назвал это «мерцающим», потому что он недостаточно быстрый, чтобы перерисовать его. Вот основная идея этого. Как я могу это решить? Я хотел бы иметь его, как есть. в Free Pascal IDE..picture down`Pascal - «мерцание» при перемещении между 2 «кнопками» в CMD
procedure nakresliHviezdy(str:string;surX,surY:byte;backgroundCol:byte);
var i,j:byte;
sirkaRamcek,vyskaRamcek:byte;
dlzkaSlova:byte;
begin
TextBackground(backgroundCol);
sirkaRamcek:=40;
vyskaRamcek:=3;
dlzkaSlova:=length(str);
for i:=1 to sirkaRamcek do begin
for j:=1 to vyskaRamcek do begin
gotoxy(i+surX,j+surY);
if ((i=sirkaRamcek) or (i=1) or (j=1) or (j=vyskaRamcek)) then write(' ');
if ((j=2) and ((i<(sirkaRamcek-dlzkaSlova) DIV 2 +1)) or (i>(sirkaRamcek-dlzkaSlova) DIV 2 + dlzkaSlova)) then write(' ');
if ((i=(sirkaRamcek-dlzkaSlova) DIV 2 +1) and (j=2)) then writeln(str) ;
end;
end;
end;
procedure menu;
var pocitadlo:integer;
klavesa:char;
farba1,farba2,farba3,farba4,farba5,farba6,farba7:byte;
suradnicaX,suradnicaY:byte;
begin
pocitadlo:=1;
cursoroff;
TextColor(yellow);
suradnicaX:=40;
suradnicaY:=1;
nakresliHviezdy('1.Vlozit vozidlo do evidencie STK',40,1,4);
nakresliHviezdy('2.Najst vozidlo v evidencii STK',40,5,1);
nakresliHviezdy('3.Opravit udaje o vozidle',40,9,1);
nakresliHviezdy('4.Vymazat vozidlo z evidencie',40,13,1);
nakresliHviezdy('5.Zoznam vsetkych vozidiel',40,17,1);
nakresliHviezdy('6.Zoznam nesposobilych vozidiel',40,21,1);
nakresliHviezdy('7.Koniec programu',40,25,1);
while True do begin
klavesa:=ReadKey;
if klavesa=#72 then dec(pocitadlo);
if klavesa=#80 then inc (pocitadlo);
if (pocitadlo=0) then pocitadlo:=1;
if (pocitadlo=8) then pocitadlo:=7;
if ((klavesa=#13) and (pocitadlo=7)) then exit;
case pocitadlo of
1:begin nakresliHviezdy('1.Vlozit vozidlo do evidencie STK',40,1,4);nakresliHviezdy('2.Najst vozidlo v evidencii STK',40,5,1); end;
2:begin nakresliHviezdy('1.Vlozit vozidlo do evidencie STK',40,1,1);nakresliHviezdy('2.Najst vozidlo v evidencii STK',40,5,4); nakresliHviezdy('3.Opravit udaje o vozidle',40,9,1); end;
3:begin nakresliHviezdy('2.Najst vozidlo v evidencii STK',40,5,1);nakresliHviezdy('3.Opravit udaje o vozidle',40,9,4);nakresliHviezdy('4.Vymazat vozidlo z evidencie',40,13,1); end;
4:begin nakresliHviezdy('3.Opravit udaje o vozidle',40,9,1);nakresliHviezdy('5.Zoznam vsetkych vozidiel',40,17,1); nakresliHviezdy('4.Vymazat vozidlo z evidencie',40,13,4); end;
5:begin nakresliHviezdy('4.Vymazat vozidlo z evidencie',40,13,1); nakresliHviezdy('6.Zoznam nesposobilych vozidiel',40,21,1);nakresliHviezdy('5.Zoznam vsetkych vozidiel',40,17,4); end;
6:begin nakresliHviezdy('5.Zoznam vsetkych vozidiel',40,17,1); nakresliHviezdy('7.Koniec programu',40,25,1); nakresliHviezdy('6.Zoznam nesposobilych vozidiel',40,21,4); end;
7:begin nakresliHviezdy('6.Zoznam nesposobilych vozidiel',40,21,1); nakresliHviezdy('7.Koniec programu',40,25,4); end;
end;
end;
end;`
Here you can see how my program looks like
Free Pascal IDE Спасибо за любые советы.