Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Dimadjan

Игра, падение шариков(зависает)

21.04.2013, 14:13. Показов 848. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
решил написать простую игру, падение шариков. Но она зависает. не могу понять почему. Буду благодарен если объясните.
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
uses
  GraphABC, Events, Timers;
 
type
  TCircles = class     //Круги которые появляются
    x, y, radiusDefault: integer;
    
    constructor create(New_X, new_Y, New_Radius: integer);
    procedure FailCircle;
    procedure WriteCircle;
  end;
 
procedure CreateCircles;forward;
procedure FailCircle;forward;
procedure TCircles.FailCircle;
begin
  try 
  LockDrawing
  finally
  y:=y+1;
  WriteCircle;
  end;
  
end;
 
 
procedure TCircles.WriteCircle;
begin
  try
  LockDrawing;
  finally
    begin  
      Circle(x, y, radiusDefault);
      Redraw;
    end;
  end;
end;
 
constructor TCircles.create(New_X, new_Y, New_Radius: integer);
begin
  x := New_X;
  y := new_Y;
  radiusDefault := New_Radius;
end;
 
////////////////////////////////////////////////////////////////////////////////
 
  var timer1:= new Timer(3000,CreateCircles);//создание через каждые 3 секунды
  var timer2:= new Timer(70,FailCircle);//падение шариков
const
  radius = 25;        //радиус кругов
  speed_circle = 10;   //скорость перемещения шарика
  n = 20;            //количество кругов
 
procedure FonCreate;//создание фона
begin
  FloodFill(1, 1, clSkyBlue);
end;
 
var
  x_coord, y_coord, i: integer;//координаты управляемого шарика
  krug: array [1..n] of TCircles;//падающие шарики
  countcircles: integer;//счётчик падающих шариков
 
procedure CreateUpperCircle;//создание управляемого шарика
begin
  x_coord := WindowWidth div 2;
  y_coord := WindowHeight div 2;
  circle(x_coord, y_coord, radius);
end;
 
procedure UpperCircus(Key: integer);//управление шариком
begin
  case Key of
    VK_Left:  x_coord := x_coord - 1 * speed_circle;//Движение шарика влево
    VK_Right: x_coord := x_coord + 1 * speed_circle;//движение шарика вправо
    VK_Up:    y_coord := y_coord - 1 * speed_circle;//движение шарика вверх
    VK_Down:  y_coord := y_coord + 1 * speed_circle;//движение шарика вниз
  end;
  try //если процедура LockDrawing не срабатывает,то происходит сразу прорисовка.
    LockDrawing;//блокировка вывода на экран
    SetBrushColor(clSkyBlue);
    
    FillCircle(x_coord, y_coord, radius + speed_circle + 2);//закрашивание круга
    SetBrushColor(clBlue);//восстанавливаем цвет кисти
 //   SetPenColor(clRed);//воостанавливаем исходный цвет ручки
    circle(x_coord, y_coord, radius);//рисование управляемого шарика
    Redraw;
  except 
    begin
      SetBrushColor(clSkyBlue);
      SetPenColor(clSkyBlue);
      FillCircle(x_coord, y_coord, radius + speed_circle + 2);//закрашивание круга
      SetBrushColor(clBlue);//восстанавливаем цвет кисти
      SetPenColor(clRed);//воостанавливаем исходный цвет ручки
      circle(x_coord, y_coord, radius);//рисование управляемого шарика
      Redraw; 
    end;
  end
  
end;
 
procedure CreateCircles;//создание падающих шариков
begin
  if countcircles<=n then 
  begin
    countcircles := countcircles + 1;
    krug[countcircles].WriteCircle;
  end
  else timer1.Stop;
  timer2.Start;//Запускаем таймер падения шариков
end;
 
procedure RewriteFailCircles(j: integer);
var
  i: integer;
begin
  for i := 1 to j do 
    with krug[i] do
    begin
      LockDrawing;
      Circle(x, y, radius); 
      Redraw;
    end;
end;
 
procedure FailCircle;//падение шариков
var i:integer;
begin
 
  begin
    try
      LockDrawing;
    finally
      begin
       for i:=1 to countcircles do
       krug[i].FailCircle;
      end;              
    end;
  end;
  
end;
 
function Stolknovenie(): boolean;//проверка на столкновение падающих шариков с шариком управляемым
begin
  
end;
 
////////////////////////////////////////////////////////////////////////////////
 
begin
  MaximizeWindow;//максимизируем графическое окно
  SetPenColor(clSkyBlue);//устанавливаем цвет ручки
  SetPenWidth(2);//устанавливаем размер ручки
  SetBrushColor(clBlue);//устанавливаем цвет кисти
  FonCreate;//создаём фон
  countcircles := 0;//обнуляем счётчик созданных кругов
  CreateUpperCircle;//создаём управляемый шарик
  for i := 1 to n do
  begin
    krug[i] := TCircles.create(25 + Random(WindowWidth) - 10, radius, radius);    
  end;
  
  OnKeyDown := UpperCircus;//проверка события нажатия клавишь и управление шариком
    timer1.Start;//запускаем таймер,который создаёт падающие шарики
    
end.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.04.2013, 14:13
Ответы с готовыми решениями:

Игра с удалением шариков из массива
Всем привет, еще раз! В общем стоит передо мной следующая задача: Есть N - количество шаров (1 &lt;= N &lt;= 1000) Далее идет массив...

9 шариков - логическая игра и как правильно ее реализовать ?
Есть два игрока , у каждого игрока по 9 ячеек ,и в каждой ячейке по 9 шариков(начальные данные), эти шарики могут передвигаться из одной...

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.04.2013, 14:13
Помогаю со студенческими работами здесь

Можно ли купить k шариков мороженого ,если его продают по 3 и по 5 шариков?
Задача : &quot;В кафе мороженое продают по три шарика и по пять шариков. Можно ли купить ровно k шариков мороженого?&quot; Ссылка на нее...

Мороженое продают по три шарика и по пять шариков. Можно ли купить ровно k шариков мороженого?
В кафе мороженое продают по три шарика и по пять шариков. Можно ли купить ровно k шариков мороженого? Вводить k

В кафе продается мороженое по 3 или по 5 шариков в порции. Определить, можно ли купить K шариков мороженного
В кафе продается мороженое по 3 или по 5 шариков в порции. Определить, можно ли купить K шариков мороженного. Входные данные: Во...

Найти число шариков, у которых отклонение будет меньше 1,08 мм, если изготовлено 1000 шариков
Автомат изготавливает шарики. Диаметр шарика - случайная величина, подчиненная нормальному закону. Известно, что в среднем у 92% шариков...

В кафе мороженое продают по три шарика и по пять шариков. Можно ли купить ровно k шариков мороженого?
Добрый день, товарищи, вот есть такая задачка... В кафе мороженое продают по три шарика и по пять шариков. Можно ли купить ровно k...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru