IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Фигурки
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Народ, может у когото есть программка такого плана: "Вводишь любые фигурки(круги, квадраты, треугольники), затем нажимаешь какието клавиши и на экране мигают определенные фигуры(либо только квадраты, либо круги, либо треугольники)"
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


Можешь пояснить, что значит вводишь? Какие именно клавиши?


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Зацени демоверсию smile.gif
Код

program treugg;
uses graph,crt;
var
i:integer;
tr,gd,ge:integer;
key:char;
procedure treug;
begin
repeat
tr:=-tr;
if tr>0 then setcolor(15) else setcolor(0);
line(200,10,100,100);
line(100,100,200,210);
line(200,210,200,10);
delay(50000);
until keypressed;
end;
procedure rec;
begin
  repeat
   tr:=-tr;
    if tr>0 then setcolor(15) else setcolor(0);
   rectangle(300,50,500,150);
   delay(50000);
  until keypressed;
end;
procedure krug;
begin
  repeat
   tr:=-tr;
    if tr>0 then setcolor(15) else setcolor(0);
   circle(200,300,70);
   delay(50000);
  until keypressed;
end;
begin
Gd:=Detect;
InitGraph(Gd, Ge, 'd:\kod');
  If GraphResult <> grOk Then Halt(1);
tr:=-1;
gotoxy(200,200);
outtextxy(10,460,'Esk-quit');
outtextxy(10,444,'k-krug');
outtextxy(10,428,'p-priamougolnik');
outtextxy(10,412,'t-treugolnik');
repeat
if keypressed then
begin
  key:=readkey;
  delay(10000);
  if key='t' then treug;
  if key='p' then rec;
  if key='k' then krug;
end;
until key=#27;
end.

скажи что конкретно надо и сделаем
(тоб откампелировать надо в InitGraph(Gd, Ge, 'd:\kod');) вместо д:\код написать путь к graph.tpu
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
Зацени демоверсию

На когда запланирован релиз? Надеюсь opensource?
Цитата
вместо д:\код написать путь к graph.tpu

Только не к graph.tpu, а к графическому драйверу, обычно EGAVGA.BGI

Еще, откуда такие задержки, скорее всего у тебя глючный crt и по-этому delay(50000) кажется нормально, хотя на самом деле это 50000 миллисекунд = 50 секунд.

И у тебя незадействованная переменная i.


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
скажи что конкретно надо и сделаем
Вот в следующий раз с этого и начинай: СНАЧАЛА дождись ответа автора, а ПОТОМ - пиши программы!!! А то ты пришел, потусовался здесь неделю, и потом тебя - ищи-свищи, а люди так и будут сюда ходить, как на форум телепатов. А здесь немного другая специализация... Намек ясен, или объяснить по-другому?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Извените шо не отвечал. Просто доступ к нету не повсевременный. Ввод фигур, можно сделать любым, все зависит от фантазии, клавиши любые, можно например "1"-треугольники, "2"-круги а 0 типа конец, ну эт по разному
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
можно сделать любым, все зависит от фантазии

А поточнее нельзя?

Тебе подходит та прога или нет?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Пример не плохой, только тут они по одной фигурке, а задача в том чтоб например в верху выведен ряд разных фигурок штук 10, и потом нажимаешь "t" мигают треугольники ну и т.д.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Компилятор важен ? Если нет, накидал тут пример с использованием классов, если хочешь могу показать, но придется тебе тогда устанавливать FreePascal, возможно позже переделаю под TP.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Надо сделать на Turbo Pascal

Сообщение отредактировано: MagicPRO -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Ну че как там с кодом?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Вот не оптимизированный вариант, заниматься этим сейчас к сожалению времени нет

С - окружности
R - прямоугольники
T - треугольники

uses crt, graph;

type

TFigure = object
constructor Create;
destructor Done;
procedure Show; virtual;
procedure Refresh;
enabled: Boolean;
end;

PTCircle = ^TCircle;

TCircle = object(TFigure)
constructor Create(centrX, centrY, radius: Word);
procedure Show; virtual;
cx, cy, r: Word;
end;


PTRectangle = ^TRectangle;

TRectangle = object(TFigure)
constructor Create(leftX, leftY, rightX, rightY: Word);
procedure Show; virtual;
lx, ly, rx, ry: Word;
end;

PTTriangle = ^TTriangle;

TTriangle = object(TFigure)
constructor Create(centrX, centrY, volume: Word);
procedure Show; virtual;
cx, cy, v: Word;
end;

constructor TFigure.Create;
begin end;

destructor TFigure.Done;
begin end;

procedure TFigure.Show;
begin end;

procedure TFigure.Refresh;
begin enabled := not(enabled);
end;

constructor TCircle.Create(centrX, centrY, radius: Word);
begin
inherited Create;
cx := centrX;
cy := centrY;
r := radius;
enabled := false;
end;

procedure TCircle.Show;
begin
if enabled then SetColor(Red) else SetColor(White);
Circle(cx, cy, r);
end;

constructor TRectangle.Create(leftX, leftY, rightX, rightY: Word);
begin
inherited Create;
lx := leftX;
ly := leftY;
rx := rightX;
ry := rightY;
end;

procedure TRectangle.Show;
begin
if enabled then SetColor(Red) else SetColor(White);
Rectangle(lx, ly, rx, ry);
end;

constructor TTriangle.Create(centrX, centrY, volume: Word);
begin
inherited Create;
cx := centrX;
cy := centrY;
v := volume;
end;

procedure TTriangle.Show;
begin
if enabled then SetColor(Red) else SetColor(White);
Line(cx - v, cy - v, cx + v, cy - v); // top
Line(cx + v, cy - v, cx, cy + v); // left
Line(cx - v, cy - v, cx, cy + v); // right
end;

procedure OpenGraph;
var
gd, gm: smallint;
begin

gd := detect;
InitGraph(gd, gm, '');
if GraphResult <> grOk then Halt(1);
end;

var
F: array [1..6] of ^TFigure;
i: Integer;
ch: char;
begin

OpenGraph;

F[1] := new(PTTriangle, Create(200, 200, 50));
F[2] := new(PTcircle, Create(20, 20, 20));
F[3] := new(PTRectangle, Create(300, 300, 350, 350));
F[4] := new(PTRectangle, Create(500, 500, 550, 550));
F[5] := new(PTCircle, Create(300, 100, 40));
F[6] := new(PTTriangle, Create(110, 500, 100));

ch := #0;

repeat
while keypressed do ch := readkey;
case ch of
'T', 't': for i := 1 to 6 do begin if (typeof(F[i]^) = typeof(TTriangle)) then F[i]^.Refresh; end;
'R', 'r': for i := 1 to 6 do begin if (typeof(F[i]^) = typeof(TRectangle)) then F[i]^.Refresh; end;
'C', 'c': for i := 1 to 6 do begin if (typeof(F[i]^) = typeof(TCircle)) then F[i]^.Refresh; end;
end;
for i := 1 to 6 do F[i]^.Show;
Delay(100);
until ch = #27;
end.




--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


А что тут надо доделать скажи, я уже там сам покавыряюсь
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Ну я думаю можно сократить вот эту часть :

  repeat
while keypressed do ch := readkey;
case ch of
'T', 't': for i := 1 to 6 do begin if (typeof(F[i]^) = typeof(TTriangle)) then F[i]^.Refresh; end;
'R', 'r': for i := 1 to 6 do begin if (typeof(F[i]^) = typeof(TRectangle)) then F[i]^.Refresh; end;
'C', 'c': for i := 1 to 6 do begin if (typeof(F[i]^) = typeof(TCircle)) then F[i]^.Refresh; end;
end;
for i := 1 to 6 do F[i]^.Show;
Delay(100);
until ch = #27;


ну и сделать так чтобы после того как была смены типа мигающей фигуры, фигуры старой группы принимали исходный цвет, скажем белый.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


а у тебя компилит на TP, у меня выводится ошибка на
Код

enabled: Boolean;//типа здесь ожидается END
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


может, так?
  TFigure = object
enabled: Boolean;
constructor Create;
destructor Done;
procedure Show; virtual;
procedure Refresh;
end;


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Вроде прошло, там еще много ошибок такого рода, ща все передалаю итогда напишу результат smile.gif

а ты можешь сделать в этой программе так чтобы пользователь вводил фигуры любыми там клавишами, потом ему выводило сообщение: мол нажмите "О"- круг, "Т"-трекгольник, "К"-квадрат. при нажатии фигуры мерцают.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


S.O.S. пользователь вводит фигуры любыми там клавишами, потом ему выводило сообщение: мол нажмите "О"- круг, "Т"-трекгольник, "К"-квадрат. при нажатии фигуры мерцают. Фигуры можно расположить в ряд по средине штук 10.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гость






Так?
Прикрепленный файл  f.pas ( 3.4 килобайт ) Кол-во скачиваний: 445


(жми любые клавиши, пока не появится надпись - тогда будут работать только перечисленные)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


ногами не пинать.. самый простой вариант smile.gif, хотя если не ошибаюсь - меньше памяти жрет. может пригодится, делает все то же

Сообщение отредактировано: Sundery -


Прикрепленные файлы
Прикрепленный файл  FIGURES.PAS ( 1.83 килобайт ) Кол-во скачиваний: 247
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.05.2021 16:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name