|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.12.2020, 10:16 | #1 |
Пользователь
Регистрация: 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. |
03.12.2020, 12:27 | #2 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
почему-то у меня не верно (не с той позиции началося перемещение, дважды одну позицию) и не до конца отработал код, но то другой вопрос
В функции (?) move изменил Код:
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
03.12.2020, 15:28 | #3 |
Пользователь
Регистрация: 09.10.2020
Сообщений: 16
|
Кажется у меня все точно работает , спасибо большое.
|
03.12.2020, 15:57 | #4 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
В чем суть задачи: работа с типизированным файлом, анимацией, массивамы, функции?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
03.12.2020, 16:10 | #5 |
Пользователь
Регистрация: 09.10.2020
Сообщений: 16
|
В основном в анимации
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Простая (или не очень) задача про окраску канареек | 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 |