Błąd czyszczenia ekranu po powrocie z trybu graficznego

0

Witam po uruchomieniu programu i zakończeniu trybu graficznego nie czyści mi konsoli i wypisuje szczątkowy tekst.(mimo użycia clrscr)

program pfa;
uses    graph, crt;
var     sterownik, tryb:integer;
        opcja:char;
begin

repeat
clrscr;

writeln('Witaj w grze wybierz opcj© z menu');
writeln('');
writeln('1 - Gra');
writeln('2 - Zasady gry');
writeln('0 - Wyjcie');

opcja:=readkey;

if opcja ='1' then


        begin

        detectgraph(sterownik,tryb);
        initgraph(sterownik,tryb,'');

        //readkey;
        closegraph;
        end;

until ord(opcja) = 27;

readkey;
end.
 
0

Pewnie dlatego, że konsola jest czyszczona na starcie, a nie końcu? :P

0

clrscr jest w pętli repeat więc konsola powinna być ciągle czyszczona po każdym wyjściu z trybu graficznego ?!

0

A, fakt - nie zauważyłem.
Beznadziejne formatowanie kodu :F

0

a mógłby ktoś przez to przebrnąć lub z własnej wiedzy powiedzieć, co w tym konkretnym przypadku robię źle (po polsku najlepiej).

0

Źle robisz, że wykorzystujesz archaiczne metody. Spoko też przez to przechodziłem ale jak napiszesz coś większego i się okaże że masz 1/10 FPS to sam sięgniesz po ogl.

0

no rozumiem, ale czy znajdzie ktoś tu błąd albo powie jak to inaczej zrobić

0

podałem Ci linki do stron które pomogą Ci to inaczej zrobić.

0

nie ogarnę tego po angielsku

1

Niestety bez znajomości angielskiego w stopniu pozwalającym rozumieć dokumentację, żaden programista czy osoba, która chce cokolwiek samodzielnie programować nie zajdzie daleko. Może i jest jakaś polska dokumentacja albo tutoriale. Jedna pewnie będą to rzeczy szczątkowe w porównaniu do oficjalnej. A zawsze można probować skorzystać z translatora, ale wiele to nie pomoże i dokładnie sensu nie przetłumaczy.

0
pucio19 napisał(a):

clrscr jest w pętli repeat więc konsola powinna być ciągle czyszczona po każdym wyjściu z trybu graficznego ?!

Patryk27 dobrze Ci powiedział
to że clrscr jest w pętli niczego nie zmienia, bo w ostatnim jej przebiegu program wyjdzie bez czyszczenia ekranu
daj clrscr dodatkowo PO pętli i tyle

0

to będzie raczej jedyny mój skomplikowany program we free pascalu - dlatego potrzebuje rozwiązania tego problemu bez przerabiania całego języka więc czekam na odpowiedź

0

dostałeś odpowiedź powyżej. Nie umiesz dopisać jednej instrukcji w programie?

0

Dopisałem 5 razy tą instrukcję w różnych logicznych miejscach (nawet po pętli, po której nie jest mi potrzebna) i dalej nie działa. Może ktoś odpali ten program i sam zobaczy co się dzieje i nie czyści konsoli jak należy.

0

Tak też nie działa?

uses graph, crt;
var sterownik, tryb: Integer;
    opcja: Char;
begin
 repeat
  clrscr;
  
  writeln('Witaj w grze wybierz opcję z menu');
  writeln('');
  writeln('1 - Gra');
  writeln('2 - Zasady gry');
  writeln('0 - Wyjcie');
   
  opcja := readkey;
  
  if (opcja = '1') then
  begin
   detectgraph(sterownik,tryb);
   initgraph(sterownik,tryb,'');
  
   closegraph;
   clrscr;
  end;
 until (opcja = #27);
end.
0
Patryk27 napisał(a):

Tak też nie działa?

albo jeśli tak nie działa to może po prostu te funkcje jednak nie są do końca dopracowane i karta graficzna nie zdąża jeszcze wyjść z trybu graficznego a już dostaje prośbę o wyczyszczenie ekranu i nie robi tego poprawnie
w takim przypadku powinno pomóc wywołanie clrscr PRZED WEJŚCIEM w tryb graficzny - dla usera to bez różnicy a po wyjściu z trybu graficznego ekran powinien być pusty
ewentualnie daj mały delay między closegraph a clrscr

0

dałem wiele clrscr i delay - i myślałem, że faktycznie pauzy pomogą, ale niestety dalej nie czyści ekranu. Da się wyczyścić konsolę w inny sposób?

1 użytkowników online, w tym zalogowanych: 0, gości: 1