Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 20
1

Разомкнутая система управления

23.01.2012, 10:00. Просмотров 1288. Ответов 5
Метки нет (Все метки)

Помогите пожалуйста составить модель разомкнутой системы управления. Нужно нарисовать поле 400*400 с окружностью радиуса 25, посередине поля. нужно двигать по полю точку до ее попадания в окружность, используя 4 управляющие кнопки. шаг перемещения случайное число от 3 до 5. точка отображается по команде enter. Можно в паскале или в лазарусе. Пожалуйста!!!!!!! Срочно, скоро сдавать!!!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2012, 10:00
Ответы с готовыми решениями:

Автоматическая система управления
Помогите пожалуйста с задачкой. Нужно создать модель автоматической системы управления. Она...

Система поддержки управления библиотекой
Система поддержки управления библиотекой должна обеспечивать операции (добавление, удаление и...

Файловая система и система управления вводом-выводом в ОС Linux
Дали задание написать вот что: "Разработать программу, которая выводит на экран содержимое...

Разомкнутая СМО
На обработку в вычислительную систему поступают задания с интенсивностью λ=4 (заданий в...

5
206 / 183 / 104
Регистрация: 10.01.2011
Сообщений: 302
23.01.2012, 17:43 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
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
uses crt, graph;
const
  l=400;
  r=25;
  dr=2;
  c1=Brown;
  c2=Blue;
  c3=Yellow;
  c4=Red;
 
  function Rnd: Integer;
  var
    r: Integer;
  begin
    r:=Random(2*r)+l div 2-2*r-dr;
    if Random(2)=0 then Rnd:=r
    else Rnd:=-r;
  end;
 
  procedure Cir(x, y, r: Integer; c: Word);
  begin
    SetColor(c);
    SetFillStyle(SolidFill, c);
    FillEllipse(GetMaxX div 2+x, GetMaxY div 2-y, r, r);
  end;
 
  function CheckMax(x: Integer): Integer;
  var
    r: Integer;
  begin
    if Abs(x)>l div 2 - dr then
    begin
      r:=l div 2 - dr;
      if x<0 then r:=-r;
    end
    else r:=x;
    CheckMax:=r;
  end;
 
  function Check(x, y: Integer): Boolean;
  begin
    if (Abs(x)>r+dr) or (Abs(y)>r+dr) then Check:=false
    else Check:=(x*x+y*y)<=Sqr(r);
  end;
 
var
  gd,gm, ErrCode, x, y, h: Integer;
  ga: String;
  ch: Char;
  stop: Boolean;
begin
  Randomize;
  gd:=VGA;
  gm:=VGAHi;
  ga:='c:\tp7\bgi';
  InitGraph(gd,gm,ga);
  if GraphResult = grOk then
  begin
    x:=(GetMaxX-l-2) div 2;
    y:=(GetMaxY-l-2) div 2;
    SetColor(c1);
    SetFillStyle(SolidFill, c2);
    Bar3D(x, y, x+l+2, y+l+2, 0, TopOff);
    OutTextXY(200, 460, 'ESC               Enter');
    SetColor(LightGray);
    OutTextXY(235, 460, '- Exit');
    OutTextXY(275, 460, '- Start');
    repeat
      stop:=false;
      Cir(0, 0, r, c3);
      x:=Rnd;
      y:=Rnd;
      Cir(x, y, dr, c4);
      repeat
        ch:=ReadKey;
        if not stop and (ch=#0) and KeyPressed then
        begin
          ch:=ReadKey;
          if ch in  [#72, #75, #77, #80] then
          begin
            Cir(x, y, dr, c2);
            h:=Random(3)+3;
            case ch of #72:y:=CheckMax(y+h);
                       #75:x:=CheckMax(x-h);
                       #77:x:=CheckMax(x+h);
                       #80:y:=CheckMax(y-h);
            end;
            Cir(x, y, dr, c4);
            stop:=Check(x, y);
          end;
        end;
      until ch in [#13, #27];
      Cir(x, y, dr, c2);
    until ch=#27;
    CloseGraph;
  end
  else begin
    Writeln('Ошибка инициализации графики');
    ReadKey;
  end;
end.
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 20
24.01.2012, 09:00  [ТС] 3
спасибо за программу, но точка двигается только по краю, и она неуправляема, никакие кнопки не действуют.мы не понимаем, что делать

Добавлено через 12 минут
Извините пожалуйста, возможно мы недостаточно точно сформулировали условие. Нам нужно, чтобы точка не отображалась до нажатия enter и шаг был случайным числом от 3 до 5. Помогите пожалуйста!!!
0
206 / 183 / 104
Регистрация: 10.01.2011
Сообщений: 302
24.01.2012, 10:14 4
Цитата Сообщение от анна2 Посмотреть сообщение
спасибо за программу, но точка двигается только по краю, и она неуправляема, никакие кнопки не действуют.мы не понимаем, что делать
Перемещение стрелками.
Цитата Сообщение от анна2 Посмотреть сообщение
Нам нужно, чтобы точка не отображалась до нажатия enter
Даже если она попала в круг?

Цитата Сообщение от анна2 Посмотреть сообщение
шаг был случайным числом от 3 до 5
Это условие выполнено. Каждый шаг задается случайно
Pascal
1
h:=Random(3)+3;
Добавлено через 1 час 7 минут
Вот такой вариант подойдет?
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
106
107
108
uses crt, graph;
const
  l=400;
  r=25;
  dr=2;
  c1=Brown;
  c2=Blue;
  c3=Yellow;
  c4=Red;
 
  function Rnd: Integer;
  var
    r: Integer;
  begin
    r:=Random(2*r)+l div 2-2*r-dr;
    if Random(2)=0 then Rnd:=r
    else Rnd:=-r;
  end;
 
  procedure Cir(x, y, r: Integer; c: Word);
  begin
    SetColor(c);
    SetFillStyle(SolidFill, c);
    FillEllipse(GetMaxX div 2+x, GetMaxY div 2-y, r, r);
  end;
 
  function CheckMax(x: Integer): Integer;
  var
    r: Integer;
  begin
    if Abs(x)>l div 2 - dr then
    begin
      r:=l div 2 - dr;
      if x<0 then r:=-r;
    end
    else r:=x;
    CheckMax:=r;
  end;
 
  function Check(x, y: Integer): Boolean;
  begin
    if (Abs(x)>r+dr) or (Abs(y)>r+dr) then Check:=false
    else Check:=(x*x+y*y)<=Sqr(r+dr);
  end;
 
var
  gd,gm, ErrCode, x, y, h: Integer;
  ga: String;
  ch: Char;
  visible: Boolean;
begin
  Randomize;
  gd:=VGA;
  gm:=VGAHi;
  ga:='c:\bp\bgi';
  InitGraph(gd,gm,ga);
  if GraphResult = grOk then
  begin
    x:=(GetMaxX-l-2) div 2;
    y:=(GetMaxY-l-2) div 2;
    SetColor(c1);
    SetFillStyle(SolidFill, c2);
    Bar3D(x, y, x+l+2, y+l+2, 0, TopOff);
    OutTextXY(170, 460, 'ESC        Enter        Spase');
    SetColor(LightGray);
    OutTextXY(200, 460, '- Exit');
    OutTextXY(305, 460, '- View');
    OutTextXY(410, 460, '- Start');
    repeat
      visible:=false;
      Cir(0, 0, r, c3);
      x:=Rnd;
      y:=Rnd;
      repeat
        ch:=ReadKey;
        if (ch=#0) and KeyPressed then
        begin
          ch:=ReadKey;
          if ch in  [#72, #75, #77, #80] then
          begin
            if visible then
            begin
              Cir(x, y, dr, c2);
              if Check(x, y) then Cir(0, 0, r, c3);
            end;
            h:=Random(3)+3;
            case ch of #72:y:=CheckMax(y+h);
                       #75:x:=CheckMax(x-h);
                       #77:x:=CheckMax(x+h);
                       #80:y:=CheckMax(y-h);
            end;
            if visible then Cir(x, y, dr, c4);
          end;
        end else if ch=#13 then
          begin
            visible:=true;
            Cir(x, y, dr, c4);
          end;
      until ch in [#27, ' '];
      Cir(x, y, dr, c2);
    until ch=#27;
    CloseGraph;
  end
  else begin
    Writeln('Ошибка инициализации графики');
    ReadKey;
  end;
end.
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 20
24.01.2012, 10:57  [ТС] 5
Когда пропадет в enter отображается
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 20
25.01.2012, 14:27  [ТС] 6
нет попадая в круг программа останавливается и точка видна)
а насчет случайного попадания лично когда я ее тестировала в паскале, то она рандомно генировалась в расположении причем только по краям поля а движение стрелками было четко на 1 единцу..посмотрите пожалуйста!!!!это и не нравится преподавателю(
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2012, 14:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

система управления
сделал программку, но нужно чтобы круг при нажатии на (начальное положение) заново рисовался на...

Многофазная замкнутая и разомкнутая СМО
Народ, нужна помощь. Для дипломного проекта нужно смоделировать многофазные СМО. 1)Разомкнутая...

Система управления боем
&quot;Цель программы – помочь командиру взвода или отделения руководить бойцами в условиях, когда...

Система управления версиями
Здравствуйте! Подскажите, пожалуйста, какую нибудь хорошую систему управления версиями. Желательно...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.