Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
1

Рисование кругов в Паскале

11.06.2010, 18:37. Просмотров 3545. Ответов 4
Метки нет (Все метки)

Пишу курсовую (игра), лягушка прыгает по болоту. И вот на что наткнулся
Код:
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
uses graph;
 
const
MaxX = 6;
MaxY = 5;
 
 
var gd, gm, error: integer;
MainField : array[1..MaxX,1..MaxY] of byte;
i, j : integer;
DX, DY : integer;
 
 
begin
 
gd := VGA; 
 
gm := VGAHi; 
 
initgraph(gd, gm, '');
 
error := graphresult;
 
if error <> grOk then begin
 
write('ГЋГёГЁГЎГЄГ* ГЈГ°Г*ГґГЁГЄГЁ: ',
 
grapherrormsg(error));
 
readln; halt;
 
end;
 
bar(0, 0, 480, 400);
DX := 480 div MaxX;
DY := 400 div MaxY;
 
 
MainField[1,1]:= 2;
MainField[1,2]:= 1;
MainField[1,3]:= 2;
MainField[1,4]:= 1;
MainField[1,5]:= 2;
MainField[2,1]:= 1;
MainField[2,2]:= 2;
MainField[2,3]:= 1;
MainField[2,4]:= 2;
MainField[2,5]:= 1;
MainField[3,1]:= 2;
MainField[3,2]:= 1;
MainField[3,3]:= 2;
MainField[3,4]:= 1;
MainField[3,5]:= 2;
MainField[4,1]:= 1;
MainField[4,2]:= 2;
MainField[4,3]:= 1;
MainField[4,4]:= 2;
MainField[4,5]:= 1;
MainField[5,1]:= 2;
MainField[5,2]:= 1;
MainField[5,3]:= 2;
MainField[5,4]:= 1;
MainField[5,5]:= 2;
MainField[6,1]:= 1;
MainField[6,2]:= 2;
MainField[6,3]:= 1;
MainField[6,4]:= 2;
MainField[6,5]:= 1;
 
 
 
 
 
for i:=1 to MaxX do
for j:=1 to MAxY do begin
case MainField[i,j] of
0: begin end;
1: begin
SetFillStyle(XHatchFill, Green);
circle((i)*DX, (j)*DY, 10 )
end;
2: begin
SetFillStyle(SolidFill, RED);
bar((i-1)*DX, (j-1)*DY, i*DX, j*DY);
end;
end;
end;
 
 
 
readln; closegraph;
 
end.
Хочу сделать так, чтобы круги были в центре квадратов в матрице. Для этого ставил
Код:

Pascal
1
circle((i-0.5)*DX, (j-0.5)*DY, 10)
и в самом начале менял
Код:

Pascal
1
2
3
4
5
6
i,j: integer;
 
на
Код:
 
i,j: real;
, но с такими параметрами он вообще компилироваться не хочет. В чём ошибка? и как сделать 4 состояния листа(круга): большой, средний, маленький и пусто?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2010, 18:37
Ответы с готовыми решениями:

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

Рисование кругов рекурсией

Определить, в каком из кругов находится наибольшее число кругов из данного множества кругов
Круг задается радиусом и координатами центра. Имеется n кругов (n20). Определить, в каком из...

Как работает join и split в Паскале? И есть ли такие аналоги Питону в Паскале?
a=input() #из ' Hello world ' делаю 'Hello, world' a.strip(' ') a=', '.join(a.split(' ')) В...

Рисование в Паскале
Помогите, пожалуйста, нарисовать Телевизор) буду благодарна С:

4
Puporev
Модератор
56320 / 43106 / 29819
Регистрация: 18.05.2008
Сообщений: 102,438
11.06.2010, 18:56 2
Pascal
1
circle(round((i-0.5)*DX), round((j-0.5)*DY), 10);
Добавлено через 1 минуту
Но i,j:integer; поскольку это счетчики циклов.
0
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
11.06.2010, 19:12  [ТС] 3
Изменил, как вы написали. только кругов почему-то не видно, я стал подозревать, что это из-за белого фона, прописал, чтоб чёрный был, но вместо кругов все равно одни белые квадраты. Вот код:
Код
uses graph;

const
  MaxX = 6;
  MaxY = 5;


var gd, gm, error: integer;
  MainField : array[1..MaxX,1..MaxY] of byte;
  i, j : integer;
  DX, DY : integer;


begin

  gd := VGA; {àäàïòåð VGA}

  gm := VGAHi; {ðåæèì 640*480ïèêñ.*16 öâåòîâ}

  initgraph(gd, gm, '');

  error := graphresult;

  if error <> grOk then begin

    write('Îøèáêà ãðàôèêè: ',

      grapherrormsg(error));

    readln; halt;

  end;

  bar(0, 0, 480, 400);
  DX := 480 div MaxX;
  DY := 400 div MaxY;

  { ê ïðèìåðó â ìàòðèöå
    0 - íè÷åãî
    1 - ëèñòèê
    2 - ëèñòèê ñ ëÿãóøêîé
  }
  MainField[1,1]:= 2;
  MainField[1,2]:= 1;
  MainField[1,3]:= 2;
  MainField[1,4]:= 1;
  MainField[1,5]:= 2;
  MainField[2,1]:= 1;
  MainField[2,2]:= 2;
  MainField[2,3]:= 1;
  MainField[2,4]:= 2;
  MainField[2,5]:= 1;
  MainField[3,1]:= 2;
  MainField[3,2]:= 1;
  MainField[3,3]:= 2;
  MainField[3,4]:= 1;
  MainField[3,5]:= 2;
  MainField[4,1]:= 1;
  MainField[4,2]:= 2;
  MainField[4,3]:= 1;
  MainField[4,4]:= 2;
  MainField[4,5]:= 1;
  MainField[5,1]:= 2;
  MainField[5,2]:= 1;
  MainField[5,3]:= 2;
  MainField[5,4]:= 1;
  MainField[5,5]:= 2;
  MainField[6,1]:= 1;
  MainField[6,2]:= 2;
  MainField[6,3]:= 1;
  MainField[6,4]:= 2;
  MainField[6,5]:= 1;




  {âûâîä ìàòðèöû}
  for i:=1 to MaxX do
    for j:=1 to MAxY do begin
      case MainField[i,j] of
        0: begin {òóò ìîæíî âûâîä ïóñòîé êëåòêè ñäåëàòü...} end;
        1: begin
              SetFillStyle(SolidFill, BLACK);
              circle(round((i-0.5)*DX), round((j-0.5)*DY), 10 );
           end;
        2: begin
              SetFillStyle(SolidFill, RED);
              bar((i-1)*DX, (j-1)*DY, i*DX, j*DY);
           end;
      end;
    end;



  readln; closegraph;

end.
0
Puporev
Модератор
56320 / 43106 / 29819
Регистрация: 18.05.2008
Сообщений: 102,438
11.06.2010, 19:28 4
Так попробуй.
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
uses graph;
const  MaxX = 6;
       MaxY = 5;
var gd, gm, error: integer;
  MainField : array[1..MaxX,1..MaxY] of byte;
  i, j : integer;
  DX, DY : integer;
begin
gd := 0;
initgraph(gd, gm, '');
bar(0, 0, 480, 400);
DX := 480 div MaxX;
DY := 400 div MaxY;
MainField[1,1]:= 2;
MainField[1,2]:= 1;
MainField[1,3]:= 2;
MainField[1,4]:= 1;
MainField[1,5]:= 2;
MainField[2,1]:= 1;
MainField[2,2]:= 2;
MainField[2,3]:= 1;
MainField[2,4]:= 2;
MainField[2,5]:= 1;
MainField[3,1]:= 2;
MainField[3,2]:= 1;
MainField[3,3]:= 2;
MainField[3,4]:= 1;
MainField[3,5]:= 2;
MainField[4,1]:= 1;
MainField[4,2]:= 2;
MainField[4,3]:= 1;
MainField[4,4]:= 2;
MainField[4,5]:= 1;
MainField[5,1]:= 2;
MainField[5,2]:= 1;
MainField[5,3]:= 2;
MainField[5,4]:= 1;
MainField[5,5]:= 2;
MainField[6,1]:= 1;
MainField[6,2]:= 2;
MainField[6,3]:= 1;
MainField[6,4]:= 2;
MainField[6,5]:= 1;
for i:=1 to MaxX do
for j:=1 to MAxY do
 begin
  case MainField[i,j] of
  0: begin {тут можно вывод пустой клетки сделать...} end;
  1: begin
     SetFillStyle(SolidFill, 9);
     fillellipse(round((i-1)*DX+dx div 2), round((j-1)*DY+dy div 2), 10 ,10);
     end;
  2: begin
     SetFillStyle(SolidFill, RED);
     bar((i-1)*DX, (j-1)*DY, i*DX, j*DY);
     end;
  end;
 end;
readln
end.
1
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
11.06.2010, 19:48  [ТС] 5
большое спасибо!) Получилось) Теперь осталось только узнать, как запрограммировать 3 состояния для листа(круга)
0
11.06.2010, 19:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2010, 19:48

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

Рисование в паскале
Ребят,помогите пожалуйста написать мою фамилию в turbo pascal,заранее благодарен :-) мне просто...

Рисование кругов
В целочисленный массив, размерность (количество элементов) которого задается в программе...


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

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

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