Statnio wcisniety klawisz w petli

0

Czesc wszystkim, potrzebuje zrobic w programie petle, w ktorej bedzie sprawdzany wcisniety klawisz, ale jak nie zostanie wcisniety zaden petla tez sie wykona. Chodzi o to, ze w petli wykonywane jest wyswietlanie znaku X w kazdym przejsciu, a jak sie wcisnie klawisz to znak X zmienia sie na ten wcisniety, jezeli nic nie zostalo wcisniete to wyswietla sie ostatni podany znak, w jak sie wcisnie to znak sie zmienia i zostaje wyswietlony. Niestety nie wiem jak zrobic to tak, zeby jak sie nic nie wcisnie to petla tez sie wykonywala;

Program mam napisac do szkoly (technikum informatyczne) w jezyku pascal i kompilatorze Turbo Pascal 7. Myslalam nad takim czyms:

program znaki;
var
  znak: char;
begin
  clrscr;
  znak := 'X'

  repeat
    Delay(500);
    znak := upcase(readkey); //tutaj czeka na wcisniecie klawisza a ma nie czekac
    write(znak);
  until znak = #27;
end.

ale petla czeka na podanie znaku, a ma dzialac caly czas bez wzgledu na to, czy wcisnieto klawisz czy nie. Jak wcisnieto to ma zmienic znak na ten wcisniety i wypisac go, jak nic nie wcisnieto to tylko wypisac znak.

Jak zrobic, zeby bylo sprawdzane w petli czy wcisnieto przycisk na klawiaturze i jak go wcisnieto zmienic znak na podany i go wyswietlic, a jak nic nie wcisnieto to tylko go wyswietlic? Petla ma sie caly czas wykonywac az do wcisniecia klawisza escape.

Bardzo prosze o pomoc...

0

Spróbuj dodać jeszcze jedną zmieną w której przechowasz klawisz z ostatniej pętli jeżeli nienaciśnięto żadnego to podstawiaj ten w innym wypadku aktualnie wciśnięty?

0

Ale jakiej instrukcji uzyc zeby program nie czekal na wcisniecie klawisza, tylko sprawdzal czy cos wcisnieto, jezeli tak to rozroznial klawisz i wyswietlal go, a jezeli nic nie wcisnieto to nie czekal na jego wcisniecie tylko wypisywal stary znak?

Zrobilam takie cos:

program znaki;
uses crt;
var
  znak: char;
begin
  repeat
    write('X');
    Delay(500);
  until keypressed;
end;

ale nie wiem jak to przerobic na sprawdzanie klawisza. Tutaj petla dziala caly czas, a jak wcisnieto klawisz to dopiero przerywa dzialanie petli. Ale w tej petli nie jest pobierany klawisz tylko sprawdzane czy w ogole cos wcisnieto. A ja potrzebuje zrobic to samo, tyle ze w petli sprawdzane jest czy wcisnieto, jezeli tak to znak jest podmieniany i wyswietlany, a jezeli nie to program nie czeka na podanie nowego znaku tylko wyswietla stary i petla dziala dalej. Jak to zrobic...

0
program znaki;
uses crt;
var
  znak: char;
begin
  znak:= 'X';
  repeat
    if keypressed then begin
      znak:= readkey;
      write(znak);
    end
    else write('X');
    Delay(5000);
  until znak = #27;
end.

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