Member 12849609 Ответов: 2

Как мне это сделать, чтобы моя карточная игра работала


Я довольно новичок в программировании на языке Си и не очень хорошо его кодирую.
Я хочу создать карточную игру, но, кажется, не могу понять одну вещь.
Как я могу распределить фиксированное количество карт из одной колоды между 2 игроками по очереди, так что первая карта переходит к Первому игроку, вторая карта-ко второму игроку, третья карта снова к Первому игроку и так далее.

Что я уже пробовал:

Не так уж много, не могу понять! ....................................................

Richard MacCutchan

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

PIEBALDconsult

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

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Я довольно новичок в программировании на языке Си и не очень хорошо его кодирую.

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

Освоите некоторые методы анализа, Метод Дейкстры сверху вниз это хорошее начало.
https://en.wikipedia.org/wiki/Top-down_and_bottom-up_design[^]
https://en.wikipedia.org/wiki/Structured_programming[^]
https://en.wikipedia.org/wiki/Edsger_W._Dijkstra[^]
https://www.cs.utexas.edu/users/EWD/ewd03xx/EWD316.PDF[^]


Рейтинг:
0

OriginalGriff

Глядя на ваш другой вопрос ,я бы предложил вам создать массив карт, 52 из них, и заполнить его экземплярами ваших карт: 13 пик, 13 Треф...
Затем напишите функцию для перетасовки колоды.
Добавьте два целых числа: количество карт в колоде (установлено на 52), верхняя карта (установлено на 0)
Чтобы сдать карту, возьмите карту в верхнем индексе и увеличьте индекс. Уменьшите счет. Если счет теперь равен нулю, перетасуйте колоду и сбросьте два целых числа.


PIEBALDconsult

Тасовка также необходима только в реальном мире; компьютер способен просто выбрать карту наугад.

OriginalGriff

Обычно я бы согласился - но это означает удаление использованных карт из коллекции, и только с базовым массивом, чтобы играть с Новичком, который может стать трудным. Перетасовка означает, что вы можете использовать движущийся индекс, чтобы гарантировать, что карты не будут повторяться без хлопот по их удалению.
И перетасовка не сложна: два случайных индекса для обмена и цикл, достаточно большой, чтобы дать хороший уровень случайности результатам, довольно прост и интуитивно понятен для реализации.

PIEBALDconsult

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

OriginalGriff

Взгляните на его другой вопрос: я не думаю, что он еще знает, что такое указатель, а тем более связанный список! :смеяться:
Это придет со временем...

PIEBALDconsult

Я так и сделал; мне кажется, он откусил слишком много.
Но изучение связанных списков на основе массивов может быть полезным предшественником изучения указателей.