|
0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
|||||||||||
Покер - не работает совпадение17.11.2016, 17:16. Показов 816. Ответов 18
Метки нет (Все метки)
Здравствуйте! Я новичок. Я самостоятельно написал код, который создаёт карты по ранку и масти двум игрокам, только логики моей не хватило, чтобы правильно сделать сравнение на совпадение одинаковых карт. В итоге два игрока могут иметь идентичные карты на руках. Я понимаю, что подобных тем на этом форуме много, но я прошу вас помочь мне с моим кодом, так как я вроде как понимаю его логику. И сделан он буквально на пальцах
Кликните здесь для просмотра всего текста
Добавлено через 18 минут Подскажите пожалуйста, как делать функцию. Я в функцию запишу создание новых карт, и если будут совпадения, то заново вызывать их, а не переписывать код заново. Добавлено через 6 минут Я вывел do while за пределы цикла for. Теперь должно работать. Только я не знаю, как проверить это. Буду вручную тестировать ![]() Кликните здесь для просмотра всего текста
0
|
|||||||||||
| 17.11.2016, 17:16 | |
|
Ответы с готовыми решениями:
18
Сравнить каждый элемент с каждым, если есть совпадение, то соединить всю строку, в которой найдено совпадение Как корректно работает FindNext (ищется только первое совпадение) Покер |
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
|
| 17.11.2016, 17:17 | |
|
Перепеши код так, чтобы сначала генерировалась колода (список), а потом просто вытаскивай карты из этой колоды игрокам (доставай и удаляй этот элемент из списка). И проверять ничего не надо будет на счёт одинаковых карт. Пиши алгоритмы таким образом, чтобы они были максимально приближены к реальности. Представь, как в реале процесс проходит: приходят люди, достаётся колода, мешается колода, карты расдаются игрокам (причём сверху и по одной: сначала одну первому игроку, потом одну второму, потом вторую первому и так далее). Расбросай весь код на функции и не повторяйся. Давай имена функциям таким образом, чтобы они точно отображали, что они делают. Если в функции происходит что-то ещё, то создавай ещё одну и так далее. Код должен быть читабелен.
1
|
|
|
0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
||||||||||||
| 17.11.2016, 17:23 [ТС] | ||||||||||||
|
Добавил вот это для проверки:
Кликните здесь для просмотра всего текста
Добавлено через 2 минуты ![]() Добавлено через 1 минуту Вот общий код. Как показала проверка, совпадения действительно есть. Буду думать над алгоритмом. Кликните здесь для просмотра всего текста
0
|
||||||||||||
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
||||||||||||
| 17.11.2016, 17:24 | ||||||||||||
Потом отдельно вызываешь функцию это вот так
Создай новый чистый проект и просто поиграйся с функциями. Как поймёшь, возвращайся к покеру.
1
|
||||||||||||
|
0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
||
| 17.11.2016, 17:29 [ТС] | ||
|
0
|
||
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
|
| 17.11.2016, 17:31 | |
|
Если чё, задавай вопросы. Буду рад помочь. Тут часто фрукты есть, которые говорят "напишите мне прогу". Молодец, что само работаешь.
1
|
|
|
0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
|||||||
| 17.11.2016, 18:03 [ТС] | |||||||
|
Не по теме:
Добавлено через 27 минут Переделал код. Совпадения обнаружены не были. Остался только, наверное самый нубский вопрос из всех возможных нубских вопросов. Можно ли сделать этот код покороче? ![]() Кликните здесь для просмотра всего текста
0
|
|||||||
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
|
| 17.11.2016, 18:08 | |
|
0
|
|
|
0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
||||||||||||||||
| 17.11.2016, 19:20 [ТС] | ||||||||||||||||
|
Удалил всё до do. Работает пока ещё
![]() Кликните здесь для просмотра всего текста
Добавлено через 4 минуты Меня интересует вариативность проверки на совпадение карт (условия). Я их сделал две штуки, на каждую из возможных последовательностей. А можно сделать сразу или короче эти условия, чтобы всё убралось в одно действие?
Я придумал. Через цикл for делать проверку в автоматическом режиме. После первого варианта переходить на другой. Добавлено через 56 минут Как сделать так, чтобы вместо цифр буквы были? Я хочу чтобы у rank были 0 = 2, 1 = 3, 2 = 4, 3 = 5, 4 = 6, 5 = 7, 6 = 8, 7 = 9, 8 = 10, 9 = J, 10 = Q; 11 = K, 12 = A. А suit были 0 = c, 1 = h, 2 = s, 3 = d.
0
|
||||||||||||||||
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
|
| 17.11.2016, 19:24 | |
|
1
|
|
|
0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
||||||
| 17.11.2016, 19:44 [ТС] | ||||||
|
Что я делаю неправильно?
![]()
0
|
||||||
|
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
|
|
| 17.11.2016, 19:52 | |
|
массив не заполняешь
0
|
|
|
0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
||||||
| 17.11.2016, 20:53 [ТС] | ||||||
|
Diamante, я не умею я же писал
Помогите а пожалуйстаДобавлено через 58 минут Теперь правильно?
0
|
||||||
|
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
|
|
| 17.11.2016, 21:00 | |
|
такс, с заполнением массива ты справился
продолжай в том же духе
1
|
|
|
0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
||||||||||||
| 17.11.2016, 21:11 [ТС] | ||||||||||||
Почему надо i + j? Почему нельзя заполнить сначала первый индекс, а потом второй? Кажется что всё понятно, а на самом деле не так. Добавлено через 4 минуты Казалось бы что всё понятно. Вот ранк, вот масть, вот массив - колода. Тут цикл и там цикл, а что дальше не понимаю.
Логика теряется.
0
|
||||||||||||
|
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
|
|
| 17.11.2016, 21:17 | |
|
а никто и не говорит что надо i + j, тебе решать какими значениями заполнять массив
можно и первый индекс сначала заполнить, тогда a[j, i] = i + j; Добавлено через 4 минуты короче, возьми листочек в клеточку, расчерти 13 по вертикали и 4 по горизонтали - это твой массив дальше оченно вдумчиво и внимательно посмотри, что и куда ты будешь в этом массиве записывать, и прям карандашиком помечай, поймешь логику заполнения - напишешь и код, а гадать дело неблагодарное и да, почитай книгу, Герберт Шилдт c# за апру дней осилишь начало, там как раз массивы, она легкая, читается быстро
1
|
|
|
0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
||||||
| 17.11.2016, 21:18 [ТС] | ||||||
|
Diamante, я не понимаю в чём разница заполнения двумерного массива от одномерного.
0
|
||||||
|
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
|
||||||
| 17.11.2016, 21:42 | ||||||
т.е. порядок запонения такой [0,0] -> [0,1] ->[0,2] ->[0,3] ->[1,0] ->[1,1] ->[1,2] ->[1,3] ->[2,0] ->
1
|
||||||
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
|
| 18.11.2016, 13:21 | |
|
Представь, что переменная это ведро, в которое ты можешь запихать что-то конкретное. например int vedro = 5;
Так вот, одномерный массив это "полоса" таких вёдер, сразу куча вёдер но в одной переменной. Но тогда вопрос, как запихать "что-то конкретное" в нужное тебе ведро (скажем их десять в ряд). Допустим хочешь добавить это "что-то конкретное" в третье ведро, тогда вот так int vedra = new int[10]; vedro[3] = 5; Теперь представь, что у тебя двумерный массив. Это уже будет не просто ряд вёдер, а поле вёдер (как шахматная доска, клеточки). То есть несколько таких одномерных "полос" одна за другой. Представь, что у тебя на шахматной доске, на каждом поле стоят вёдра. И тебе нужно запихать "что-то конкретное" в ведро, что находится третье слева и второе сверху. Тогда так int [,] vedra = new int [8,8]; vedra[3][2] = 5; Понял?
1
|
|
| 18.11.2016, 13:21 | |
|
Помогаю со студенческими работами здесь
19
Покер Покер Покер Покер Покер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|