Другие языки программирования и технологии
модуль CRT паскаль 3
нужна программа заставляющая двигаться букву "О" по нажатию клавиш WASD. модуль CRT. Помогите разобраться с этим моделем. Я не понимаю по каким принципам идет имитация движения в этом модуле. Платное решение не предлагать,
Одно нажатие -- один шаг. Если зажать клавишу, то будет двигаться непрерывно.
uses
crt;
var
cx, cy, dx, dy: integer;
key: char;
nm: boolean;
begin
clrscr;
cx := 80 div 2;
cy := 25 div 2;
dx := 1;
dy := 0;
gotoxy(cx, cy);
write('O');
gotoxy(1, 1);
while true do begin
if keypressed then begin
key := readkey;
case key of
'a': begin dx := -1; dy := 0; nm := true; end;
'd': begin dx := 1; dy := 0; nm := true; end;
'w': begin dx := 0; dy := -1; nm := true; end;
's': begin dx := 0; dy := 1; nm := true; end;
'q': exit;
end;
end;
if nm then begin
nm := false;
gotoxy(cx, cy);
write(' ');
inc(cx, dx);
inc(cy, dy);
if cx = 81 then cx := 1;
if cy = 26 then cy := 1;
if cx = 0 then cx := 80;
if cy = 0 then cy := 25;
gotoxy(cx, cy);
write('O');
gotoxy(1, 1);
end;
end;
end.
Будет "модуль CRT паскаль 4"?
uses
crt;
var
cx, cy, dx, dy: integer;
key: char;
nm: boolean;
begin
clrscr;
cx := 80 div 2;
cy := 25 div 2;
dx := 1;
dy := 0;
gotoxy(cx, cy);
write('O');
gotoxy(1, 1);
while true do begin
if keypressed then begin
key := readkey;
case key of
'a': begin dx := -1; dy := 0; nm := true; end;
'd': begin dx := 1; dy := 0; nm := true; end;
'w': begin dx := 0; dy := -1; nm := true; end;
's': begin dx := 0; dy := 1; nm := true; end;
'q': exit;
end;
end;
if nm then begin
nm := false;
gotoxy(cx, cy);
write(' ');
inc(cx, dx);
inc(cy, dy);
if cx = 81 then cx := 1;
if cy = 26 then cy := 1;
if cx = 0 then cx := 80;
if cy = 0 then cy := 25;
gotoxy(cx, cy);
write('O');
gotoxy(1, 1);
end;
end;
end.
Будет "модуль CRT паскаль 4"?
Изучи как работают следующие функции модуля:
GoToXY
KeyPressed
ReadKey
больше тебе ничего не понадобится. Никакой "имитации движения в этом модуле" нет, придется все делать самой.
GoToXY
KeyPressed
ReadKey
больше тебе ничего не понадобится. Никакой "имитации движения в этом модуле" нет, придется все делать самой.
Попробуйте так:
program Project1;
uses crt;
var x,y,vx,vy:integer;
doIt: boolean;
begin
clrscr;
doIt:=True;
x:=10;
y:=10;
GoToXY(x,y);
write('O');
while doIt do
begin
if keypressed then
begin
case ReadKey of
'w': vx:=-1;
'a': vy:=-1;
's':vy:=1;
'd':vx:=1;
char(27):doIt:=false;
end;
x:=x+vx; y:=y+vy;
clrscr;
GotoXY(x,y);
write('O');
end;
end;
end.
И всё-таки переходите на лазавра. (На самом деле Lazarus читается "Лазарь", но там везде бегают леопарды...)
program Project1;
uses crt;
var x,y,vx,vy:integer;
doIt: boolean;
begin
clrscr;
doIt:=True;
x:=10;
y:=10;
GoToXY(x,y);
write('O');
while doIt do
begin
if keypressed then
begin
case ReadKey of
'w': vx:=-1;
'a': vy:=-1;
's':vy:=1;
'd':vx:=1;
char(27):doIt:=false;
end;
x:=x+vx; y:=y+vy;
clrscr;
GotoXY(x,y);
write('O');
end;
end;
end.
И всё-таки переходите на лазавра. (На самом деле Lazarus читается "Лазарь", но там везде бегают леопарды...)
uses crt;
var key:char;x,y:Integer;
begin
repeat
key:=ReadKey;
clrscr;
case key of
'w':dec(y);
's':inc(y);
'a':dec(x);
'd':inc(x);
end;
GotoXY(x,y);
write('O');
until key='1';
end.
var key:char;x,y:Integer;
begin
repeat
key:=ReadKey;
clrscr;
case key of
'w':dec(y);
's':inc(y);
'a':dec(x);
'd':inc(x);
end;
GotoXY(x,y);
write('O');
until key='1';
end.
Похожие вопросы
- Модули CRT и System.Windows.Forms в pascal не работают вместе, как решить?
- Pascal. Модуль CRT. Как считать символ с экрана, зная его координаты?
- помогите решить на паскале 3. Вычислить значение функции tg(x)/x2 на интервале от *-5, 5] c шагом h = 0.1.
- Модуль 'math' не найден Паскаль АБС подключаю модуль math а его не находит и програма не компилируется что делать?
- Паскаль АВС. Информатика 7 класс. ПОМОГИТЕ ПОЖАЛУЙСТА!!! ДО КОНЦА ОСАЛОСЬ 3.5 ЧАСА!
- Аналог ассоциативного массива в Паскале.
- Я внутри написал, что я знаю про паскаль не то что решать и все такое а так теоретический в общем, смысл проги, я прав?
- ПАСКАЛЬ и ГРАФИКА
- Товарищи программисты на Delphi и Pascal помогите девушке!!!)) вопрос глупый..насчет паскаля..
- Проблема с оператором random в паскале