русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Алгоритм перемешивания карт в колоде


Дата добавления: 2015-06-12; просмотров: 1812; Нарушение авторских прав


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

На игровом поле представлены тринадцать стопок карт.Количество карт в каждой стопке может изменяться в процессе игры, поэтому карты каждой стопки удобно хранить в списке значений. Так как стопок у нас тринадцать,то понадобится массив –каждый элемент,которого будет списком значений.

Давайте разберемся с алгоритмом перемешивания карт. При каждой раздаче –во все стопки должны попадать карты случайным образом. На самом деле все реализуется довольно просто!

Сначала загружаем все 52карты в один список значений, который отвечает за верхнюю левую стопку карт. Затем получаем случайный элемент из этого списка. Полученный элемент добавляем во второй список. Удаляем элемент из первого списка. Так продолжаем нужное количество раз. Если название первого списка lst1, а название второго списка lst2, то программный код будет выглядеть так:

//Получаем количество элементов в первом списке

int kol = lst1.size();

// Получаем случайный номер элемента в списке

int nom = (int)(Math.random()*kol);

// Помещаем случайно выбранный элемент во второй список,

// получая его из первого

lst2.add(lst1.get(nom));

// Удаляем элемент из первого списка

lst1.remove(nom);

При таком подходе размер первого списка будет с каждым разом уменьшаться на единицу, а размер второго увеличиваться на единицу. Процесс напоминает вынимание случайной карты из колоды и помещение ее во вторую колоду.Карты второй колоды при этом будут расположены случайным образом.Рассмотренный программный код осуществляет перенос одного случайного значения. Если запустить такой процесс в цикле, то можно заполнить новый список любым количеством случайных карт. Методsize() возвращает количество элементов в списке, и при изменении количества всегда будет возвращать текущее количество. Методremove() удаляет элемент из списка, уменьшая количество элементов на единицу. После выполнения метода remove()нумерация элементов в списке восстанавливается автоматически. Имеется в виду, что номера элементов всегда идут по порядку, начиная с нуля и увеличиваясь на единицу.





<== предыдущая лекция | следующая лекция ==>
Разделение задания для трех уровней сложности | Создание массива списков значений


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.426 сек.