
22.01.2013, 10:05
|
 |
Специалист
|
|
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
|
|
crt32
http://www.delphisources.ru/pages/fa..._unit_use.html
вот тут нашел для отлавливания нажатия клавиш
Код:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,crt32,windows;
type
coord = record
x: integer;
y: integer;
end;
var
m: array[1..22] of array[1..80] of char;
procedure ClearConsoleWindow;
var
ConsoleHandle:THandle;
ConsoleInfo: TConsoleScreenBufferInfo;
Coord:TCoord;
WrittenChars:DWORD;
begin
FillChar(ConsoleInfo,SizeOf(TConsoleScreenBufferInfo),0);
FillChar(Coord,SizeOf(TCoord),0);
ConsoleHandle:=GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(ConsoleHandle, ConsoleInfo);
FillConsoleOutputCharacter(ConsoleHandle,' ', ConsoleInfo.dwSize.X * ConsoleInfo.dwSize.Y, Coord, WrittenChars);
SetConsoleCursorPosition(ConsoleHandle,ConsoleInfo.dwCursorPosition)
end;
procedure Show;
var
i,n: integer;
begin
ClearConsoleWindow;
for i:=1 to 22 do
for n:=1 to 80 do write(m[i,n]);
end;
procedure WriteIn(x,y: byte; ch: char);
begin
OverWriteChrXY(x,y,'5');
GotoXY(1,23);
end;
var
i,n: integer;
sbi: TConsoleScreenBufferInfo;
sw:string;
key: char;
p:COORD;
begin
{ TODO -oUser -cConsole Main : Insert code here }
for i:=1 to 80 do m[1,i]:='0';
for i:=2 to 21 do
begin
m[i,1]:='0';
m[i,80]:='0';
end;
p.x:=3;
p.y:=20;
m[p.y,p.x]:='1';
for i:=1 to 80 do m[22,i]:='0';
Show;
While key<>#121 do
begin
if KeyPressed then
begin
key:=readkey;
writeln(key);
if Key=#38 then
begin
WriteIn(p.x,p.y,' ');
m[p.x,p.y]:=' ';
p.y:=p.y-1;
m[p.y,p.x]:='1';
WriteIn(p.x,p.y,'1');
end;
end;
end;
end.
накидал примитивную программку
а оно чего то не работает, ставил точку останова
после key:=readkey; отказывается выполняться модуль crt32
|