Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 08.04.2011, 11:29   #1 (permalink)
omik
Новичок
 
Регистрация: 08.04.2011
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите с графикой, очень надо

Создайте программу, которая повинуясь нажатиям разных клавиш клавиатуры, будет рисовать фигуры(прямоугольник или круг), увеличивала, уменьшала, перемещала, заливала цветом. Предусмотрите подсказку для пользователя.
omik вне форума   Ответить с цитированием

Старый 08.04.2011, 11:29
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Отправляю вам топики, которые по содержанию напоминают ваш

Хочу MP3 установить на скутер, а к MP3 надо сделать колонки
Помогите с Паскалем
Java очень надо

Старый 08.04.2011, 11:35   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Господи, как это надоело - каждого второго пытать! Ладно, займусь привычным делом.

А не сообщите ли Вы, любезный друг, на каком-таком языке программирования задание сие выполнено быть должно? Делфи? Паскаль? А если Паскаль, то какой: АВС или Борланд?
А то наши экстрасенсы опять в загуле, а без них... сами понимаете...
Vladimir_S вне форума   Ответить с цитированием
Старый 08.04.2011, 11:59   #3 (permalink)
omik
Новичок
 
Регистрация: 08.04.2011
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Извиняюсь что сразу не написал. Нужно в Турбо Паскале 7.0
omik вне форума   Ответить с цитированием
Старый 08.04.2011, 12:07   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от omik Посмотреть сообщение
Извиняюсь что сразу не написал. Нужно в Турбо Паскале 7.0
Ладно, но скоро - не обещаю. С графикой всегда очень много писанины.
Vladimir_S вне форума   Ответить с цитированием
Старый 10.04.2011, 12:38   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну вот Вам Ваша игрушка, как обещал:
Код:
uses CRT, graph;
VAR
 X,Y:Integer;
 R,Xmax,Ymax,Ytxt:Word;
 Col,Fig_Tp,Tp_Old:Byte;
 Ch:Char;

Procedure Figure(Tf,Cl:Byte;Xf,Yf:Integer;Rf:Word);
 begin
  SetFillStyle(1,Cl);
  If Tf=0 then
   begin
    SetColor(Cl);
    FillEllipse(Xf,Yf,Rf,Rf);
   end
  else
   Bar((Xf-Rf),(Yf-(Rf div 2)),(Xf+Rf),(Yf+(Rf div 2)));
 end;

Function B:Boolean;
 begin
  If Fig_Tp=0 then
   B:=((X-R)>=0) and ((X+R)<=Xmax) and ((Y+R)<=Ymax) and ((Y-R)>=0)
  else
   B:=((X-R)>=0) and ((X+R)<=Xmax)
     and ((Y+(R div 2))<=Ymax) and ((Y-(R div 2))>=0);
 end;

BEGIN
 InitGraph(  ); {ПАРАМЕТРЫ ПРОЦЕДУРЫ InitGraph ЗАДАЙТЕ САМОСТОЯТЕЛЬНО!!!}
 Randomize;
 ClearDevice;
 Xmax:=GetMaxX;
 Ymax:=GetMaxY-80;
 Ytxt:=GetMaxY-72;
 SetBkColor(0);
 SetColor(white);
 SetTextStyle(DefaultFont,HorizDir,1);
 SetTextJustify(LeftText,CenterText);
 OutTextXY(0,Ytxt,'Keys (latin keyboard only!):');
 OutTextXY(0,Ytxt+16,'Arrow Up');
 OutTextXY(0,Ytxt+32,'Arrow Left');
 OutTextXY(0,Ytxt+48,'Arrow Down');
 OutTextXY(0,Ytxt+64,'Arrow Right');
 OutTextXY((Xmax div 2),Ytxt,'T - change figure type');
 OutTextXY((Xmax div 2),Ytxt+16,'C - change color');
 OutTextXY((Xmax div 2),Ytxt+32,'+ - increase the size');
 OutTextXY((Xmax div 2),Ytxt+48,'- - decrease the size');
 OutTextXY((Xmax div 2),Ytxt+64,'Esc - quit');
 Fig_Tp:=0;
 X:=320;
 Y:=240;
 R:=60;
 Col:=4;
 Figure(Fig_Tp,Col,X,Y,R);
 Repeat
  Ch:=ReadKey;
  If Ch=#72 then
   begin
    Y:=Y-2;
    if b then
     begin
      Figure(Fig_Tp,0,X,Y+2,R);
      Figure(Fig_Tp,Col,X,Y,R)
     end else Y:=Y+2;
   end else
  If (Ch=#75) then
   begin
    X:=X-2;
    If b then
     begin
      Figure(Fig_Tp,0,X+2,Y,R);
      Figure(Fig_Tp,Col,X,Y,R);
     end else X:=X+2;
   end else
  If Ch=#80 then
   begin
    Y:=Y+2;
    If b then
     begin
      Figure(Fig_Tp,0,X,Y-2,R);
      Figure(Fig_Tp,Col,X,Y,R);
     end else Y:=Y-2;
   end else
  If Ch=#77 then
   begin
    X:=X+2;
    If b then
     begin
      Figure(Fig_Tp,0,X-2,Y,R);
      Figure(Fig_Tp,Col,X,Y,R);
     end else X:=X-2;
   end else
  If (Ch='T') or (Ch='t') then
   begin
    Tp_Old:=Fig_Tp;
    Figure(Fig_Tp,0,X,Y,R);
    If Fig_Tp=0 then Fig_Tp:=1 else Fig_Tp:=0;
    If b then
     Figure(Fig_Tp,Col,X,Y,R)
    else
     begin
      Fig_Tp:=Tp_Old;
      Figure(Fig_Tp,Col,X,Y,R)
     end;
   end else
  If (Ch='C') or (Ch='c') then
   begin
    Figure(Fig_Tp,0,X,Y,R);
    Col:=Random(15)+1;
    Figure(Fig_Tp,Col,X,Y,R);
   end else
  If Ch='+' then
   begin
    R:=R+2;
    If b then
     begin
      Figure(Fig_Tp,0,X,Y,R-2);
      Figure(Fig_Tp,Col,X,Y,R);
     end else R:=R-2;
   end else
  If Ch='-' then
   begin
    R:=R-2;
    If R>=2 then
     begin
      Figure(Fig_Tp,0,X,Y,R+2);
      Figure(Fig_Tp,Col,X,Y,R);
     end else R:=R+2;
   end else
  If Ch=#27 then
   begin
    CloseGraph;
    HALT(0);
   end;
 Until 0=1;
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 10.04.2011, 15:52   #6 (permalink)
omik
Новичок
 
Регистрация: 08.04.2011
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию огромное спасибо за код

Vladimir_S Там тока небольшая ошибка была в выводе текста вместо xMax MaxX
omik вне форума   Ответить с цитированием
Старый 10.04.2011, 18:23   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от omik Посмотреть сообщение
Vladimir_S Там тока небольшая ошибка была в выводе текста вместо xMax MaxX
Vladimir_S можно ещё попросить помочь. я туткое чо накидал а как дальше не знаю ( нужно чтоб призадевании камнем за гору писало "НЕ ПОПАЛ" и предлагало переиграть, а при задевании мишени писало "ПОПАЛ" и вопрос "Сыграть ещё?"
Приношу извинения за ошибку: просто в модуле, который я подключаю для тестирования программ с графикой (а потом, перед выкладыванием, естественно убираю), прописаны константы MaxX и MaxY. Потому не заметил ошибки. Сейчас исправлю на всякий случай.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 22:13.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.