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

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

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

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

Помогите с графикой, очень надо

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

omik

Ученик
Регистрация
8 Апр 2011
Сообщения
5
Реакции
0
Баллы
0
Помогите с графикой, очень надо

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

А не сообщите ли Вы, любезный друг, на каком-таком языке программирования задание сие выполнено быть должно? Делфи? Паскаль? А если Паскаль, то какой: АВС или Борланд?
А то наши экстрасенсы опять в загуле, а без них... сами понимаете...
 
Извиняюсь что сразу не написал. Нужно в Турбо Паскале 7.0
 
Ну вот Вам Ваша игрушка, как обещал:
Код:
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(  ); [COLOR=Red][B]{ПАРАМЕТРЫ ПРОЦЕДУРЫ InitGraph ЗАДАЙТЕ САМОСТОЯТЕЛЬНО!!!}[/B][/COLOR]
 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 Там тока небольшая ошибка была в выводе текста вместо xMax MaxX
 
Vladimir_S Там тока небольшая ошибка была в выводе текста вместо xMax MaxX
Vladimir_S можно ещё попросить помочь. я туткое чо накидал а как дальше не знаю ( нужно чтоб призадевании камнем за гору писало "НЕ ПОПАЛ" и предлагало переиграть, а при задевании мишени писало "ПОПАЛ" и вопрос "Сыграть ещё?"
Приношу извинения за ошибку: просто в модуле, который я подключаю для тестирования программ с графикой (а потом, перед выкладыванием, естественно убираю), прописаны константы MaxX и MaxY. Потому не заметил ошибки. Сейчас исправлю на всякий случай.
 
Назад
Сверху