Ķeršos uzreiz vērsim pie ragiem. Man ir programma(konsolē), kas realizē simbola kustību pa diogonāli un nonākot ''sadursmē'' ar ''sienu'', simbols atsitās un turpina kustību citā virzienā. Tas itkā strādā, bet vēlētos panākt to, lai būtu iespējams jebkurā brīdī, nospiežot konkrētu taustiņu, mainīt simbola virzienu.(Tā lai viņš neapstājas pie vietas kodā, kad tiek prasīts ievads no lietotāja.) To vietu, kur itkā jābūt lietotāja ievadam es izņēmu, lai strādātu šī kustība. Kods rakstīts PASCAL valodā.
Code: Select all
program xmove2;
{$mode objfpc}{$H+}
uses
crt,sysutils,
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
{$R *.res}
var
a,b:integer;
x,y,xz,yz:integer;
poga:char;
begin
x:=40; y:=12; //sakuma pozicija
randomize;
a:=random(100); // Izšķir kā sāksies kustība pa x asi
if a>=50 then xz:=1
else xz:=-1;
b:=random(100); // Izšķir kā sāksies kustība pa y asi
if b>=50 then yz:=1
else yz:=-1;
clrscr;
gotoxy(30,3); write('Press any key to start!');
gotoxy(x,y); write('X');
poga:=readkey;
while not (poga=#75) or (poga=#77) or (poga=#72) or (poga=#80) do
begin
if y=25 then yz:=yz*-1 // Veic Parbaudi
else if y=1 then yz:=yz*-1 // Vai Ir robežā
else if x=80 then xz:=xz*-1 // ,ja ir uz robežas-
else if x=1 then xz:=xz*-1; // ''sadursme'' un atsitiens ( *-1)
x:=x+xz; y:=y+yz; //KUSTĪBA pa x un y
clrscr;
gotoxy(x,y); write('X',chr(8));
sleep(200);
end; // beidzās while cikls
end.