Когда вы говорите первый проект, что вы имеете в виду? Я предполагаю, что вы студент или новичок в программировании.
При таком предположении я бы предложил выбрать что-то более простое, чем история покерных рук. Как и в программировании игр, на первом этапе программирования игры не стоит думать, что вы создаете последнюю версию Call of Duty. Вы начинаете с прорыва и двигаетесь вверх оттуда.
Если вы не хотите начинать с меньшего, чем я предлагаю, никогда не переходите на кодирование. Когда вы сделаете это, вы потратите больше времени на то, чтобы просто крутить колеса, а не что-то делать.
Например, сначала вы должны потратить время на разработку того, что будет делать ваша программа, а что нет. Постарайтесь быть как можно более полным. Это можно сделать из чего-то сложного, используя программу UML или просто, как ручку и бумагу.
Я бы сказал, что вы хотите, чтобы рука развивалась. Информация, которую вы хотите отслеживать. Как только вы действительно поймете это, ваши структуры данных начнут оживать.
Поскольку вы новичок в программировании, я бы начал писать доказательство концептуального кода. Затем переместите его в ваш окончательный проект. Под доказательством концепции я подразумеваю код, который вы просто тестируете, чтобы понять, как он работает. Например, как будет работать история рук? Можете ли вы создать какую-нибудь «фиктивную» историю и настроить ее? В идеале вы должны выполнить модульное тестирование, но давайте начнем с меньшего.
Важно знать, что вы создаете программу, как дом. Вы должны знать, что вы хотите, чтобы он делал, а не делал (синие отпечатки). Каков каждый шаг. И вы медленно строите другие части. Это процесс, который требует времени, но в конце концов он того стоит.