![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Код:
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 Show;
var
i,n: integer;
begin
ClrScr;
for i:=1 to 22 do
for n:=1 to 80 do write(m[i,n]);
end;
var
i,n,t1,tng1,tt1,ttt: integer;
sbi: TConsoleScreenBufferInfo;
sw:string;
key: char;
p1:COORD;
p2:COORD;
go1: boolean;
begin
go1:=false;
{ 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;
p2.x:=3;
p2.y:=20;
p1.x:=77;
p1.y:=20;
m[p2.y,p2.x]:='2';
m[p1.y,p1.x]:='1';
for i:=1 to 80 do m[22,i]:='0';
Show;
t1:=9;
tng1:=0;
ttt:=0;
While key<>#121 do
begin
if go1 then
begin
inc(tng1);
if (tt1=t1) then
begin
if(tng1>10) then
begin
go1:=false;
t1:=9;
tng1:=0;
end;
end
else
tt1:=t1;
end;
key:=readkey;
//Writeln(key,' ',ord(key));
case ord(key) of
37:
begin
go1:=true;
inc(t1);
if t1=10 then t1:=0;
tt1:=t1;
if t1<>0 then continue;
WriteChrXY(p1.x,p1.y,' ');
//m[p.x,p1.y]:=' ';
p1.x:=p1.x-1;
//m[p.y,p.x]:='1';
WriteChrXY(p1.x,p1.y,'1');
GotoXY(1,23);
// ClrEol;
end;
38:
begin
WriteChrXY(p1.x,p1.y,' ');
//m[p.x,p.y]:=' ';
p1.y:=p1.y-1;
//m[p.y,p.x]:='1';
WriteChrXY(p1.x,p1.y,'1');
GotoXY(1,23);
// ClrEol;
end;
39:
begin
WriteChrXY(p1.x,p1.y,' ');
//m[p.x,p.y]:=' ';
p1.x:=p1.x+1;
//m[p.y,p.x]:='1';
WriteChrXY(p1.x,p1.y,'1');
GotoXY(1,23);
// ClrEol;
end;
40:
begin
WriteChrXY(p1.x,p1.y,' ');
//m[p.x,p.y]:=' ';
p1.y:=p1.y+1;
//m[p.y,p.x]:='1';
WriteChrXY(p1.x,p1.y,'1');
GotoXY(1,23);
// ClrEol;
end;
65:
begin
WriteChrXY(p2.x,p2.y,' ');
//m[p.x,p1.y]:=' ';
p2.x:=p2.x-1;
//m[p.y,p.x]:='1';
WriteChrXY(p2.x,p2.y,'2');
GotoXY(1,23);
// ClrEol;
end;
87:
begin
WriteChrXY(p2.x,p2.y,' ');
//m[p.x,p.y]:=' ';
p2.y:=p2.y-1;
//m[p.y,p.x]:='1';
WriteChrXY(p2.x,p2.y,'2');
GotoXY(1,23);
// ClrEol;
end;
68:
begin
WriteChrXY(p2.x,p2.y,' ');
//m[p.x,p.y]:=' ';
p2.x:=p2.x+1;
//m[p.y,p.x]:='1';
WriteChrXY(p2.x,p2.y,'2');
GotoXY(1,23);
// ClrEol;
end;
83:
begin
WriteChrXY(p2.x,p2.y,' ');
//m[p.x,p.y]:=' ';
p2.y:=p2.y+1;
//m[p.y,p.x]:='1';
WriteChrXY(p2.x,p2.y,'2');
GotoXY(1,23);
// ClrEol;
end;
end;
end;
end.не могу понять почему после нажатия он ожидает следующий ввод с клавиатуры и только тогда выполняет один раз цикл, и опять ждет CRT32 http://rghost.ru/43226992 |
|
#2
|
|||
|
|||
|
зацени, эксклюзив
Последний раз редактировалось my33oh, 22.01.2013 в 17:58. |
|
#3
|
||||
|
||||
|
Заценил, но работает как то не корректно write он почему то как writeln делает например...
|
|
#4
|
|||
|
|||
|
Цитата:
|
|
#5
|
||||
|
||||
|
Да эт какой то сомнительный эксклюзив был)
Там еще косяков уйма модуль я обычный оставил, а для клавиш нашел лучше альтернативу GetAsyncKeyState() отслеживает к тому же все нажатые а вот нельзя ли в консольке убрать нижнее подчеркивание которое мигает? Последний раз редактировалось ALexandr555, 22.01.2013 в 17:46. |
|
#6
|
|||
|
|||
|
Цитата:
|
|
#7
|
||||
|
||||
|
Код:
ConHandle := GetStdHandle(STD_OUTPUT_HANDLE); CCI.dwSize:=1; SetConsoleCursorInfo(ConHandle, CCI); CCI.bVisible:=false; почему то не хотел работать |
|
#8
|
|||
|
|||
|
Цитата:
|
|
#9
|
||||
|
||||
|
задавал с нулем, а вобще по умолчанию думал он true стоит
|
|
#10
|
|||
|
|||
|
Цитата:
вобщем когда сайз 1-100 (это процент размера ячейки символа который заполняет курсор) то и визибл работает иначе "давай досвидания!" |