0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 5
1

ООП Турбо Паскаль

27.11.2013, 18:46. Показов 865. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста. Срочно нужно.

Нарисовать закрашенный квадрат, вписанный в окружность другого цвета. При нажатии клавиш перемещения курсора “вверх” или “вниз” квадрат вместе с окружностью должны перемещаться в соответствующем направлении, а при нажатии клавиш “вправо” или “влево” – менять цвет. Выход из программы – клавиша “Esc”.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2013, 18:46
Ответы с готовыми решениями:

турбо паскаль 7
помогите сделать то что есть в документеСоздавайте темы с осмысленными и понятными названиями - это...

Турбо Паскаль

Скачать Турбо Паскаль 7.0
Скачать Турбо Паскаль 7.0(исправлено) https://www.cyberforum.ru/pascal/thread48833.html#post253739

Не запускает Турбо Паскаль
Ошибка Версия этого файла несовместима с используемой версией Windows. С помощью сведений о...

7
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
27.11.2013, 19:21 2
Без ООП, про него ничего не написано в задании.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
uses graph,crt;
procedure ris(x,y,c1,c2:integer);
var a:integer;
begin
a:=round(20*sin(pi/4));
setcolor(c1);
setfillstyle(1,c1);
circle(x,y,20);
floodfill(x,y,c1);
setcolor(c2);
setfillstyle(1,c2);
rectangle(x-a,y-a,x+a,y+a);
floodfill(x,y,c2);
end;
var x,y,c1,c2,d:integer;
    k:char;
begin
initgraph(x,y,'');
x:=getmaxX div 2;
y:=getmaxY div 2;
c1:=1;
c2:=2;
outtextXY(x-110,20,'Dvizenie - strlki vverh, vniz');
outtextXY(x-130,40,'Smena cveta - strlki vlevo, vpravo');
outtextXY(x-50,60,'Exit Esc');
ris(x,y,c1,c2);
repeat
if keypressed then
 begin
  k:=readkey;
  if k=#0 then k:=readkey;
  case k of
  #80:begin
      delay(100);
      ris(x,y,0,0);
      if y>getmaxY-30 then d:=0
      else d:=10;
      y:=y+d;
      ris(x,y,c1,c2);
      end;
  #72:begin
      delay(100);
      ris(x,y,0,0);
      if y<50+40 then d:=0
      else d:=10;
      y:=y-d;
      ris(x,y,c1,c2);
      end;
  #75:begin
      c1:=c1+1;
      if c1=16 then c1:=1;
      c2:=c2+1;
      if c2=16 then c2:=1;
      ris(x,y,0,0);
      ris(x,y,c1,c2);
      end;
  #77:begin
      c1:=c1-1;
      if c1=0 then c1:=15;
      c2:=c2-1;
      if c2=0 then c2:=15;
      ris(x,y,0,0);
      ris(x,y,c1,c2);
      end;
  #27:exit;
  end;
 end;
until k=#27;
end.
Добавлено через 3 минуты
Если не нужно красить окружность убери строки 11 и 13
2
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 5
27.11.2013, 20:30  [ТС] 3
Эта задача была в разделе ООП... Нужно сдавать через ООП, что для меня является АДОМ
0
4 / 4 / 1
Регистрация: 25.11.2013
Сообщений: 108
27.11.2013, 20:41 4
Цитата Сообщение от tvill Посмотреть сообщение
Эта задача была в разделе ООП... Нужно сдавать через ООП, что для меня является АДОМ
ООП - это Объектно Ориентированное Программирование построенное на понятиях класс и объект. Как уже сказали в задание нет ни малейшего упоминания об этой парадигме.

Более подробно ознакомься с этой технологией можно здесь.
0
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 5
27.11.2013, 20:45  [ТС] 5
Хотите верьте, хотите нет)
Спасибо большое за код!
0
cpp_job
27.11.2013, 20:47
  #6

Не по теме:

Цитата Сообщение от tvill Посмотреть сообщение
Хотите верьте, хотите нет)
Спасибо большое за код!
ну написать могут, что угодно
ошибки бывают))

0
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 5
27.11.2013, 20:59  [ТС] 7
Это не ошибка, это просто садисты преподают) Я то понимаю, что легче написать её без ООП, но требуют же)

Вот пример вам. Может заинтересует
Задание: Нарисовать закрашенный пятиугольник. При нажатии клавиш перемещения курсора “ вправо ” или “ влево ” пятиугольник должен поворачиваться на угол 24° против или по часовой стрелке и менять цвет. Выход из программы – клавиша “Esc”.
А вот код:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
uses Graph, CRT;
const  r=70;
type
   koor=record
    x,y:integer;
    end;
   mas=array [1..5] of koor;
   tochka=object
   x,y,n,t:integer;
   c:word;
   end;
 
pyt=object(tochka)
m:mas;
c1:word;
 
procedure lab;
end;
 
procedure color(var n:integer; t:integer);
begin
n:=n+t;
if n>15 then
n:=1;
if n<1 then
n:=15;
setfillstyle(1,n);
end;
 
procedure laba(angle:integer;m:mas;n:integer);
var
   i,j,ang,xc,yc:integer;
begin
 cleardevice;
 SetColor(blue);
     SetLineStyle(SolidLn,0,ThickWidth);
     SetFillStyle(1,black);
     xc := getmaxx div 2;
     yc := getmaxy div 2;
     ang:=angle;
  for i:=1 to 5 do
  begin
  m[i].x:=xc+round(r*sin(ang*pi/180));
  m[i].y:=yc-round(r*cos(ang*pi/180));
  ang:=ang+70;
  end;
 
  setfillstyle(1,n);
  fillpoly(5,m);
end;
procedure pyt.lab;
var
ch:char;
angl:integer;
begin
 angl:=18;
 n:=4;
     laba(angl,m,n);
     while ch<>#27 do
     begin
     ch:=ReadKey;
     Case ch of
     #75:
         begin
                laba(angl,m,n);
                color(n,-1);
                angl:=angl-24;
                laba(angl,m,n);
         end;
     #77:
         begin
                laba(angl,m,n);
                angl:=angl+24;
                color(n,+1);
                laba(angl,m,n);
         end;
     end;
     end;
 
end;
 
var
   GraphDriver, GraphMode, ErrorCode: integer;
   angl:integer;
   ch:char;
 
procedure GrInit;
begin
     GraphDriver:=Detect;
     InitGraph(GraphDriver, GraphMode, '');
     ErrorCode:=GraphResult;
     if ErrorCode<>grOk then
 
     begin
          writeln('Graphics initialization error: ',GraphErrorMsg(ErrorCode));
          Halt(1);
     end;
end;
 
var
c:pyt;
begin
grinit;
c.lab;
end.
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
28.11.2013, 08:56 8
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
uses graph,crt;
type {описание объекта "Фигура"}
figura=object
       x,y: integer;{координаты центра объекта на экране}
       r,a:integer;{радиус окружности и сторона квадрата}
       c1,c2:word; {цвета объекта}
       constructor create(x1,y1,r1:integer; c11,c12:word);{инициализация объекта}
       procedure SwithOn; {отображение объекта}
       procedure SwithOf; {сокрытие объекта}
       procedure Move(dy: integer);{смещение объекта на dy}
       procedure Change(dc:integer); {смена цвета на dc}
       end;
constructor figura.create;
 begin
   x:=x1;
   y:=y1;
   r:=r1;
   a:=round(r*sin(pi/4));
   c1:=c11;
   c2:=c12;
 end;
procedure figura.SwithOn;{нарисовать фигуру заданным цветом}
begin
setcolor(c1);
setfillstyle(1,c1);
circle(x,y,r);
floodfill(x,y,c1);
setcolor(c2);
setfillstyle(1,c2);
rectangle(x-a,y-a,x+a,y+a);
floodfill(x,y,c2);
end;
 
procedure figura.SwithOf;{нарисовать цветом фона=стереть}
 begin
  setcolor(GetBkColor);
  setfillstyle(1,GetBkColor);
  circle(x,y,r);
  floodfill(x,y,GetBkColor);
  setcolor(GetBkColor);
  setfillstyle(1,GetBkColor);
  rectangle(x-a,y-a,x+a,y+a);
  floodfill(x,y,GetBkColor);
 end;
 
procedure figura.Move;
var NewY: integer; {вспомогательная переменная для вычисления координаты Y}
begin
 figura.SwithOf;     {погасить объект}
 {вычисление новой координаты}
 NewY:=y+dy;
 {анализ новой координаты, чтобы объект не вышел за рамки экрана}
 if NewY>479-r then y:=479-r
 else if NewY<70+r then y:=70+r
 else y:=NewY;
 figura.SwithOn;          {отобразить объект}
end;
 
procedure figura.Change;
begin
figura.SwithOf;     {погасить объект}
c1:=c1+1;
if c1=16 then c1:=1 else if c1=0 then c1:=15;
c2:=c2+1;
if c2=16 then c2:=1 else if c2=0 then c2:=15;
figura.SwithOn;          {отобразить объект}
end;
 
var f:figura;
    x0,y0:integer;
    k:char;
begin
initgraph(x0,y0,'');
x0:=getmaxX div 2;
y0:=getmaxY div 2;
outtextXY(x0-110,20,'Dvizenie - strlki vverh, vniz');
outtextXY(x0-130,40,'Smena cveta - strlki vlevo, vpravo');
outtextXY(x0-50,60,'Exit Esc');
f.Create(x0,y0,20,1,2);
f.SwithOn;
repeat
if keypressed then
 begin
  k:=readkey;
  if k=#0 then k:=readkey;
  case k of
  #80: f.Move(10);
  #72: f.Move(-10);
  #75: f.Change(-1);
  #77: f.Change(1);
  #27:exit;
  end;
 end;
until k=#27;
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2013, 08:56
Помогаю со студенческими работами здесь

Графика в Турбо Паскаль
(b+\sqrt{b-4ac}/2a)-a*a*a*c - помогите как это записать в турбо паскале напишите кто нить полную...

Тамагочи на турбо-паскаль
Не спрашивайте зачем, просто надо. Требования к игре следующие: а) Относительно малая длина...

Графика в Турбо Паскаль
Не могли бы вы посоветовать книгу или дать ссылку на форуме где подробно описана работа с графикой...

Графика в Турбо Паскаль
Читаю форум и вижу, что много кому требуется помощь в освоении графики в Паскаль. Предлагаю постить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru