Форум программистов CodeGuru
24 Февраль 2018, 17:38:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Подскажите почему задается цикл от 1 до 150. Игра "пятнашки"  (Прочитано 14352 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Antistas
Новичок
*
Офлайн Офлайн

Сообщений: 8


Просмотр профиля
« : 24 Ноябрь 2009, 23:33:13 »

Игра готова. Просто препод завалил вопросом: для чего используется цифра 150


procedure TForm1.Mixer;
var
x1,y1: integer; // пустая клетка
x2,y2: integer; // эту переместить в пустую
d: integer; // направление, относительно пустой
i: integer;
begin
x1:=4;
y1:=4;
randomize;
for i:= 1 to 150 do
begin
repeat
x2:=x1;
y2:=y1;
d:=random(4)+1;
case d of
1: dec(x2);
2: inc(x2);
3: dec(y2);
4: inc(y2);
end;

эта процедура перемешивания. цикл задан от 1 до 150. Ответы типа: для более тщательного перемешивания, количество шагов для приведения к выигрышного виду не прошли... так что значит эта цифра?? Понятное дело программу писал не совсем я.. ((
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 25 Ноябрь 2009, 20:36:38 »

Просто препод завалил вопросом: для чего используется цифра 150

Ответы типа: для более тщательного перемешивания

Для этого и используется.
Только, пожалуй, не для "более тщательного", а просто.
Можно хоть 1500, хоть 15000 поставить.

Только процедура на самом деле - бред, просто трата вычислительных ресурсов.
Можно было обойтись гораздо более простым решением.
Записан

Antistas
Новичок
*
Офлайн Офлайн

Сообщений: 8


Просмотр профиля
« Ответ #2 : 25 Ноябрь 2009, 22:11:46 »

хм..СПАСИБО)))
Записан
Antistas
Новичок
*
Офлайн Офлайн

Сообщений: 8


Просмотр профиля
« Ответ #3 : 26 Ноябрь 2009, 21:01:13 »

А можете предложить способ наиболее рационального перемешивания??
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #4 : 03 Декабрь 2009, 03:22:16 »

Можно просто попарно менять случайно выбранные позиции. Но тут тоже будет какой то overhead.

Либо (что еще более рационально), помещать подряд на игровое поле случайно выбранные части. Т.е. как если бы мы все части пятнашек (вместе с пустой частью) положили вряд. А затем выбирали из этого ряда случайно по одной части и складывали подряд в коробку.
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!