• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Программа на Паскале

  • Автор темы Автор темы Live4Fun
  • Дата начала Дата начала

Live4Fun

Ученик
Регистрация
4 Фев 2017
Сообщения
3
Реакции
0
Баллы
0
Программа на Паскале

Задача звучала так. Сделать фигуру. и потом с помощью клавиш WASD ee сдвигать. Фигуру сделал , а вот как сделать передвижение с помощью клавиш без понятия(
Помогите пожалуйста:jazik:


const
N=5;
var
b,c,i,j,s,k:integer;
A:array[1..N,1..N] of integer;
begin
writeln;
for i:=1 to N do
begin
for j:=1 to N do
begin
if(j>1) and (i>1) and (i<N)and (j<N) then
A[i,j]:=0
else
A[i,j]:=1;
if A[i,j]=1 then write ('*')
else write (' ');
end;
writeln;
end;
end.
 
Задача звучала так. Сделать фигуру. и потом с помощью клавиш WASD ee сдвигать. Фигуру сделал , а вот как сделать передвижение с помощью клавиш без понятия( Помогите пожалуйста
Сдается мне, не то Вы сделали, сударь. Вы нарисовали фигуру (прямоугольник) в ТЕКСТОВОМ режиме. Можно, в принципе, заставить двигаться такие фигуры с помощью команд модуля CRT, но трудновато. Мне кажется, это задача на графику. Освоить графику в Паскале, конечно, дело муторное и долгое, но зато программировать движение фигур много проще, чем в текстовой моде.
И в том, и в другом (текстовом и графическом) случаях программирование "движения" сводится к следующему алгоритму:
1. Считывание нажатой клавиши (команда ReadKey модуля CRT);
2. Смена цвета на цвет фона (черный или белый);
3. Повторное рисование фигуры в текущих координатах. При этом она (фигура), естественно, исчезнет, слившись с фоном.
4. Восстановление исходного цвета.
5. Повторное рисование фигуры относительно новой точки привязки, определяемой считанной буквой.
Всё это, естественно, должно быть зациклено, причем нужно предусмотреть выход из цикла (например, путём связывания его с какой-нибудь пятой буквой).
И да, укажите, о каком Паскале идёт речь. Turbo? Free? ABC?
 
Тут модуль CRT нужен в обязательном порядке, и легко сделать передвижение, я сделал при помощи клавиш 1, 2, 3 и 4. На нужные клавиши - переделай сам. Расширение txt поменять на pas, там есть две лишние команды. я их использовал для настройки. На работу они не повлияют, но желательно их удалить.
uses crt;
const N=5;
Label 1;
var
c,i,j,k,s,x:integer;
b:string;
A:array[1..N,1..N] of string;
begin

textcolor (0);textbackground(15); clrscr;

writeln;
for i:=1 to N do
begin
for j:=1 to N do
begin
if(j=1) or (i=1) or (i=N)or (j=N) then
A[i,j]:='*'
else
A[i,j]:='+';
Write(a[i,j]);
end;
writeln;
end;
C:=0; s:=0;
1:
clrscr;
For k:=1 to c do

Writeln;
For i:=1 to N do
Begin
For x:=1 to s do
Write(' ');
For j:=1 to N do
begin

Write(a[i,j]);
end;
Writeln;


end;

b:=readkey;



If b='1' then
begin
C:=C+1;
Goto 1;
end;

If b='2' then
begin
If c>0 then
C:=C-1;
Goto 1;
end;

If b='3' then
begin
s:=s+1;
Goto 1;
end;
If b='4' then
begin
If s>0 then
s:=s-1;
Goto 1;
end;
end.
 
Последнее редактирование:
А лучше использовать команду window, ее можно легко двигать, я когда то подобное делал. и под клавиши управления курсором.


вот текст под клавиши wasd.
{Квадрат управляется wasd клавишами}
uses crt;
const N=5; {размер квадрата}
Label 1;
var
c,i,j,k,s,x:integer;
b:string;
A:array[1..N,1..N] of string;
begin

textcolor (0);textbackground(15); clrscr;{Белый фон черные буквы очистить экран}
{символы квадрата вводим в матрицу}
for i:=1 to N do
begin
for j:=1 to N do
begin
if(j=1) or (i=1) or (i=N)or (j=N) then
A[i,j]:='*' {Символ стенки квадрата}
else
A[i,j]:='+'; { Cимвол тела квадрата}
end;
{------------}
end;
C:=0; s:=0;
1: {метка возврата после нажатия клавиши}
{-----------}
clrscr; {Очистим старую фигуру}
{------------}
For k:=1 to c do {Количество раз}
Writeln; {подвинули квадрат вниз}
For i:=1 to N do
{Рисуем фигуру на новом месте}
Begin
For x:=1 to s do {количество раз }
Write(' '); {подвинули вправо}
For j:=1 to N do
begin

Write(a[i,j]);
end;
Writeln;


end;

b:=readkey; { Нажимаем клавишу}
{-----------}
If b='s' then {Вниз}
begin
C:=C+1;
Goto 1;
end;
{------------}
If b='w' then {вверх}
begin
If c>0 then
C:=C-1;
Goto 1;
{----------}
end;

If b='d' then
begin {вправо}
s:=s+1;
Goto 1;
end;
If b='a' then {влево}
begin
If s>0 then
s:=s-1;
Goto 1;
end;
end.
 

Вложения

  • 1.PNG.webp
    1.PNG.webp
    56.9 KB · Просмотры: 127
Последнее редактирование:
Спасибо Большое!)
 
Назад
Сверху