Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2020, 10:16   #1
SerobGrigoryan
Пользователь
 
Регистрация: 09.10.2020
Сообщений: 16
По умолчанию Доработать окраску

Программа берет строки матрицы в которых только положительные элементы и опускает их вниз выстроивая друг за другом как один массив( все это делает с анимацией и каждый элемент опускается по отдельности и поочередно)

Помогите доработать так , чтобы когда берется элемент который должен переместится вниз его цвет поменялся на белый , а на его месте чтобы остался тот же элемент только уже выделенным красным цветом . То есть , как бы сосдается иллюзия того , что берется элемент а в этом месте остается ее тень.

program kursayin;
uses
crt;
const n = 5; m = 7;
var f: file of integer;
A: array[1..50] of integer;
function NRM(var f:file of integer):boolean;
var i,j:integer;
begin
rewrite(f);

for i:=1 to n do
for j:=1 to m do
write(f,random(-1,9));

NRM:=TRUE;
end;

function ART(var f:file of integer):boolean;
var i, j, k, x, l, y:integer;
s:string;
begin
reset(f);

textcolor (10);
y:=2;
for i:=1 to n do
begin
k:=2;
for j:=1 to m do
begin
read(f,x);
str(x,s);
l:= length(s);
if x >= 0 then
begin
gotoxy(k+1, y);
end
else
begin
gotoxy(k, y);
end;
delay(150);
write(x);
k+=3;
end;
y+=2
end;

ART:= True;
end;

function moveY(var e, y1, y2, x:integer):boolean;
var i, j, l:integer;
s:string;
begin
str(e, s);
l:= length(s);

textcolor (4);
if y1 < y2 then
begin
while y1 < y2 do
begin
gotoxy(x, y2);
delay(50);
write(' '*l);
y2-=1;x-=1;
gotoxy(x, y2);
delay(50);
write(e)
end;
end
else
begin
while y1 > y2 do
begin
gotoxy(x, y2);
delay(50);
write(' '*l);
y2+=1;
gotoxy(x, y2);
delay(50);
write(e)
end;
end;
moveY:=TRUE;
end;

function moveX(var e, x1, x2, y:integer):boolean;
var i, j, l:integer;
b:boolean;
s:string;
begin
str(e, s);
l:= length(s) - 1;

textcolor (4);
if x1 < x2 then
begin
while x1 < x2 do
begin
gotoxy(x2, y);
delay(50);
write(' '*(l+1));
x2-=1;
gotoxy(x2, y);
delay(50);
write(e)
end;
end
else
begin
if x1 <> x2 then
begin
x1-=2;
b:=true;
end;

while x1+2 > x2 do
begin
gotoxy(x2, y);
delay(50);
write(' '*(l+1));
x2+=1;
gotoxy(x2, y);
delay(50);
write(e)
end;

if b then
x1+=2;
end;
moveX:=TRUE;
end;

function move(e1, p1, c:integer):boolean;
var x1, y1, y2:integer;
begin

x1:= p1 mod m;
if x1 = 0 then
x1:=m;
x1:= (x1-1)*3 + 3;

y1:= p1 div m;
if (p1 mod m) <> 0 then
y1+=1;
y1:= (y1-1)*2 + 2;
y2:= 12;

textcolor (4);
gotoxy(x1, y1);
delay(150);
write(' ');
y1-=1;
gotoxy(x1, y1);
delay(150);
write(e1);

moveX(e1, c, x1, y1);
moveY(e1, y2, y1, c);

move:=TRUE;
end;

function TXP(var f:file of integer; var p1,c:integer):boolean;
var i, e, l, x1:integer;
b:boolean;
begin

l := p1 mod m;
x1:= l;
p1-=l;

for i:=1 to m do
begin
seek(f,p1);
read(f,e);
A[i]:= e;
move(e, p1+1, c);
c+= 3;
p1+=1;
end;

TXP:=TRUE;
end;

function LGA(var f:file of integer):boolean;
var i, j, x, p1, c:integer;
b:boolean;
begin
reset(f);
b:= True;
c:= 1;

for i:=1 to n do
begin
b:= True;
p1:= FilePos(f);
for j:=1 to m do
begin
read(f,x);
if x < 0 then
begin
b:=false
end;
end;
if b then
begin
TXP(f, p1, c);
end;
end;

LGA:=TRUE;
end;

begin
assign (f, 'file.int');
NRM(f);
ART(f);
LGA(f);
close (f);

gotoxy(1,15);
end.
SerobGrigoryan вне форума Ответить с цитированием
Старый 03.12.2020, 12:27   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

почему-то у меня не верно (не с той позиции началося перемещение, дважды одну позицию) и не до конца отработал код, но то другой вопрос

В функции (?) move изменил
Код:
y1 := (y1 - 1) * 2 + 2;
  y2 := 12;

  textcolor(8);
  gotoxy(x1, y1);
  write(e1);

 { textcolor(4);
  gotoxy(x1, y1);
  delay(150);
  write(' ');
 }
Изображения
Тип файла: jpg att.jpg (30.6 Кб, 15 просмотров)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 03.12.2020, 15:28   #3
SerobGrigoryan
Пользователь
 
Регистрация: 09.10.2020
Сообщений: 16
По умолчанию

Кажется у меня все точно работает , спасибо большое.
SerobGrigoryan вне форума Ответить с цитированием
Старый 03.12.2020, 15:57   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

В чем суть задачи: работа с типизированным файлом, анимацией, массивамы, функции?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 03.12.2020, 16:10   #5
SerobGrigoryan
Пользователь
 
Регистрация: 09.10.2020
Сообщений: 16
По умолчанию

В основном в анимации
SerobGrigoryan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простая (или не очень) задача про окраску канареек Demius Помощь студентам 17 11.05.2015 16:16
Доработать прошивку eret Фриланс 5 19.09.2012 07:14
доработать программу ehanjaki Помощь студентам 1 12.07.2012 14:37
Доработать программу на С++ sol1tary Фриланс 3 20.07.2011 10:15