2017-02-21 5 views
0

今日私は学校の仕事から始めようとしていました。私はいくつかの小さなグラフィック、特にメニュー付きで始まりました。キーアップとキーダウンで2つの間を移動します。主な問題は、あなたがすばやく動いているときに、それを描くのに十分速くないので、私はそれを「ちらつき」と呼ぶことがわかります。これの主な考え方は何ですか?彼らはそれを持っているので私はそれを持っていたいと思います。無料PascalでIDE..pictureは パスカル - CMDの2つの「ボタン」間を移動するときに「ちらつき」

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 何かアドバイスをありがとう

をdown`。

答えて

0

テキストモードIDEは、Video Abstraction用のビデオユニットを使用するFree Visionフレームワークを使用します。ビデオユニットは仮想スクリーンを維持し、変更されたパーツのみを画面に書き込む。 FVとビデオユニットの両方にFPCが付属しています。

ユニットビデオを直接使用する方法を示すFPCデモで、Listerデモを見てみましょう。

関連する問題