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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2011, 14:33   #1
Danise
 
Регистрация: 26.12.2011
Сообщений: 3
Восклицание не работает...графика

Задача такова: разработать класс или объект, который является прямой прикрепленной к центру окружности. клавишами можно вращать прямую вокруг центра. при нажатии мышью в области окружности она меняет цвет, при нажатии вне, ничего не меняется.

Вообщем программа написана, но не работает, вернее я сначала написал ее просто используя операторы, она работала, а потом переделал в нормальный вид и она почему то не работает помогите пожалуйста!!!

листинг не работающей программы
Код HTML:
Uses GRAPHabc,CRT,Events;
const esc=27;
      left=77;
      right=75;
      c=300;
      d=200;
function RdKey:integer;
         var key:INTEGER;
begin
     key:=Ord(ReadKey);
     if key=0 then key:=256+Ord(ReadKey);
     RdKey:=Key;
end;

type Tline=class
x,y:integer;
 constructor Create(c0,d0,x0,y0:integer);
 procedure show;
 procedure hide;
 procedure move(newx,newy:integer);
 procedure HandleEvent(newx,newy,key:integer; r:real);
end;

constructor Tline.create(c0,d0,x0,y0:integer);
begin x:=x0; y:=y0;   end;

procedure Tline.show;
  begin
   SetPenColor(clBlack);
   SetBrushColor(clWhite);
   Line(c,d,x,y);
end;

procedure Tline.Hide;
 begin
  SetPencolor(clWhite);
  SetBrushColor(clwhite);
  Line(c,d,x,y);
end;

procedure Tline.move(newx,newy:integer);
 begin
  Hide; x:=newx; y:=newy; show;
end;


procedure Tline.HandleEvent(newx,newy,key:integer; r:real);
 begin
 case key of
     left:begin
         r:=r-0.2;
         newx:=round((200*cos(r))+300);
         newy:=round(((300*cos(90-r))/2)+200);
         move(x,y);
         end;
    right:begin
         r:=r+0.2;
         newx:=round((200*cos(r))+300);
         newy:=round(((300*cos(90-r))/2)+200);
         move(x,y);
         end;
     end;
end;

VAR
x,y,newx,newy,key:integer;
    A:Tline;
    r:real;
//событие нажатия левой кнопки мыши
procedure MouseDown(mx,my,mb: integer);
var mc:integer;
begin
  if mb=1 then
   begin
    if (mx-300)*(mx-300)+(my-200)*(my-200)<10000 then
     begin
      mc:=RGB(random(255),random(255),random(255));
      setbrushcolor(mc);
      floodfill(mx,my,mc);

     end;
   end;
end;


BeGIN
setWindowCaption('Хабиров ЗПИ-104');
circle(300,200,100);
OnMouseDown:=MouseDown;
A:=Tline.create(c,d,x,y);
A.show;
repeat
key:=rdKey;
A.handleEvent(key,newx,newy,r);
until key=esc;
end.
листинг работающей проги, но для курсовой не подходит
Код HTML:
Uses GRAPHabc,CRT,Events;
const esc=27;
VAR
    N,X2,Y2,I:INTeGeR;
    X1,Y1,R:real;
    key:char;
//событие нажатия левой кнопки мыши
procedure MouseDown(x,y,mb: integer);
var c:integer;
begin
  if mb=1 then
   begin
    if (x-300)*(x-300)+(y-200)*(y-200)<10000 then
     begin
      c:=RGB(random(255),random(255),random(255));
      setbrushcolor(c);
      floodfill(x,y,c);

     end;
   end;
end;


BeGIN

OnMouseDown:=MouseDown;
lockdrawing;

key:=#0;
x1:=500;
y1:=200;
N:=0;
I:=1;
r:=0;
x2:=500;
y2:=170;



  WHILe key<>chr(esc) do
   BeGIN


   key:=readkey;

   case key of

   #77 : begin
         clrscr;
         r:=r-0.2;
         x1:=200*cos(r);
         y1:=300*cos(90-r);
         y1:=y1/2;
         x2:=round(x1)+300;
         y2:=round(y1)+200;
         circle(300,200,100);
         line(300,200,x2,y2);

         end;

   #75 : begin
   clrscr;
         r:=r+0.2;
         x1:=200*cos(r);
         y1:=300*cos(90-r);
         y1:=y1/2;
         x2:=round(x1)+300;
         y2:=round(y1)+200;
         circle(300,200,100);
         line(300,200,x2,y2);

         end;

   eND;
   redraw;
   eND;

     end.
Danise вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа работает пошагово, но не работает при запуске -Katerina- Microsoft Office Excel 3 12.07.2011 03:40
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56
почему интеренет на Xp не работает, а на семерке работает Lenura Windows 18 04.10.2010 12:04
TP7 чтение из файла, работает но не работает!? Qousio Помощь студентам 7 02.06.2009 09:37
Библиотека НЕ работает с 2008, но работает с 2000 SQL namenike Общие вопросы C/C++ 0 26.05.2009 11:04