Форум программистов, компьютерный форум CyberForum.ru

Сделать бридж с применением ООП. - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
CronoS0
1 / 1 / 0
Регистрация: 24.02.2010
Сообщений: 19
10.08.2010, 12:32     Сделать бридж с применением ООП. #1
Задали мне такую задачу на курсах, но сколько не пытался никак не пойму с чего начать и как двигатся.
Помогите разобраца.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
10.08.2010, 12:41     Сделать бридж с применением ООП. #2
ну для начала нужно определиться что он конкретно будет делать....
CronoS0
1 / 1 / 0
Регистрация: 24.02.2010
Сообщений: 19
10.08.2010, 13:23  [ТС]     Сделать бридж с применением ООП. #3
Ну, нужно зашить, скорее всего в двухмерный масив 9х4, все карты.
В main сделать цикл с меню и выводом на экран (текущих карт + "поля боя") можно с применением system ("cls").
Потом поотделять все класы:
- клас хранящий в себе текущие карты пользователей и оставшиеся в колоде.
- клас отвечающий за "поле боя" и изменяющий набор карт в предидущем класе с использованием логики правил игры берущего данные со следующего класа.
- клас выводящий на экран текущие карты с предлогом пользователю выбрать чем ходить, после чего розписать логику для компьютера, затем ходы с картами посылаются в предидущий клас...
- клас показывающий всевозможные результаты...
Затем в main с кучей функций сделать вывод на экран, меню, всё зашить в цикл.

Всё вроде ясно, но когда начинаю делать, ничего не получается...
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
10.08.2010, 13:44     Сделать бридж с применением ООП. #4
Если на Visual Studio писать то можно так:
1. создаешь класс для поля с картами, наследуешь от какого нибудь из оконных классов. переопределяешь функцию OnPaint и пишешь функцию Draw для рисования поля.
2. Определяешь структуры данных, на основании которых будет рисоваться поле и карты на нем.
3. Далее определяешь события при которых будет производиться перерисовка поля (например нажатие кнопки конца хода, захват мышью карты, перемещение мыши над полем и т.д.)

Добавлено через 1 минуту
Каждую карту лучше всего представить так же окном.
Puporev
Модератор
 Аватар для Puporev
50351 / 38282 / 12257
Регистрация: 18.05.2008
Сообщений: 86,674
10.08.2010, 13:48     Сделать бридж с применением ООП. #5
Цитата Сообщение от CronoS0 Посмотреть сообщение
в двухмерный масив 9х4,
Вообще-то в бридже используют колоду из 52 карт.
CronoS0
1 / 1 / 0
Регистрация: 24.02.2010
Сообщений: 19
10.08.2010, 18:43  [ТС]     Сделать бридж с применением ООП. #6
Цитата Сообщение от Puporev Посмотреть сообщение
Вообще-то в бридже используют колоду из 52 карт.
В бридже есть много разновидностей и даже в разных компаниях присутствуют разные правила...
Но это не главное.

Цитата Сообщение от vitaly1981 Посмотреть сообщение
(например нажатие кнопки конца хода, захват мышью карты, перемещение мыши над полем и т.д.)
Каждую карту лучше всего представить так же окном.
Я так понял это Visual C++, я еще не умею делать оконные приложения и к тому же с мышкой...
Мне нужно сделать всё в консоли...
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
10.08.2010, 20:05     Сделать бридж с применением ООП. #7
Именно в консоли, вообще без графики?
Ну классы можно сделать такие:
1. Карта
2. Колода
3. Игрок

Дальше делаешь цикл, который будет организовывать взаимодействие между экземплярами этих классов.
CronoS0
1 / 1 / 0
Регистрация: 24.02.2010
Сообщений: 19
10.08.2010, 21:11  [ТС]     Сделать бридж с применением ООП. #8
Цитата Сообщение от vitaly1981 Посмотреть сообщение
Именно в консоли, вообще без графики?
Да, без графики... (ну там может шарпики, амперсандики...)

Я не могу понять как сделать колоду...
Это 32 инта на карты + 32 буля для проверки есть карта в колоде или нет... не говоря уже про карты игроков... геморойно...
И как тасовку сделать??? Сколько мозгую не доходит...
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
10.08.2010, 21:16     Сделать бридж с применением ООП. #9
Цитата Сообщение от CronoS0 Посмотреть сообщение
И как тасовку сделать???
Используй std::random_shuffle
CronoS0
1 / 1 / 0
Регистрация: 24.02.2010
Сообщений: 19
10.08.2010, 21:23  [ТС]     Сделать бридж с применением ООП. #10
оО... не знал такого =)))
clicksel
3 / 3 / 0
Регистрация: 09.08.2010
Сообщений: 60
10.08.2010, 22:28     Сделать бридж с применением ООП. #11
vitaly1981, в Visual Studio реально хорошую карточную игру сделать без постороних прог,DirectX и т.д? и примерно сколько для этого времени понадобится новичку и за сколько времени сделаешь ты?))
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
11.08.2010, 07:07     Сделать бридж с применением ООП. #12
CronoS0
1. Карта
свойства: масть, достоинство

2. Колода - содержит массив ссылок типа карты, перемешивание можно сделать используя функции для генерации случайных значений. Алгоритм перемешивания может быть различный, например генерируешь 2 случайных числа от нуля до количества карт в колоде и карты с полученными номерами меняешь местами и так какое то количество раз, можно случайное (только нижнюю границу задай приемлемую).
методы: перемешать, выдать верхнюю карту...и т.д.

3. Игрок - содержит массив ссылок типа карты
методы: извлечь карту, дополнить картой.

4. Стол - содержит массив ссылок типа карты
методы: положить карту, извлечь карту

5. Куча - содержит массив ссылок типа карты, сюда складываются сброшенные карты.
методы: положить карту

clicksel
Конечно можно. При условии что есть все изображения для карт, стола и т.д. , известны все нюансы логики игры, мне на разработку понадобилось примерно день на то что бы накидать саму программу + дня 3 на отладку и тестирование. Новичку понадобится еще изучить механизмы рисования, работу с окнами, ООП и т.д. все зависит от того насколько это новичек. Если хорошо знаешь механизмы ООП, то за неделю при напряженной работе написать возможно, если не знаешь ООП, то тут сроки определить нереально вообще.
clicksel
3 / 3 / 0
Регистрация: 09.08.2010
Сообщений: 60
11.08.2010, 21:49     Сделать бридж с применением ООП. #13
vitaly1981, знаю ООП учу по самоучителю почти доучил. но я умею создавать только консольные приложения. щас установил visual studio 2005(на диске была просто эта версия,установить новее или на этой тоже напишется игра?)и может подскажешь как разобраться, выучить, как создавать полноценые win32 приложения, мож какойнить самоучитель посоветуешь?

Не по теме:

И я убду тебе очень признателен если ты мне свои контактные данные дашь,чтоб если что к тебе можно было обратиться за советом и каждый раз не создавать тему, не боися часто беспокоить не буду люблю во всем сам разбаиратся только когда очень туго будет обращусь)).

solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
12.08.2010, 06:53     Сделать бридж с применением ООП. #14
clicksel
Возьми самоучитель по visual studio 2005. На какой версии студии писать разница не сильно большая для начала. Почитай статьи про механизм рисования в окнах, в инете их много и даже с примерами.

Не по теме:

Ну если что vstl@yandex.ru

AK3RN
 Аватар для AK3RN
307 / 18 / 2
Регистрация: 01.05.2010
Сообщений: 250
12.08.2010, 08:47     Сделать бридж с применением ООП. #15
Цитата Сообщение от clicksel Посмотреть сообщение
как создавать полноценые win32 приложения, мож какойнить самоучитель посоветуешь?
Могу порекомендовать Charles Petzold "Programming in Windows 95", книжка довольно старая, в обычных магазинах вряд ли найдешь, но в интернет-магазине заказать вполне реально

Не по теме:

причем советую именно изучать бумажную версию книги, а не электронную

clicksel
3 / 3 / 0
Регистрация: 09.08.2010
Сообщений: 60
13.08.2010, 00:46     Сделать бридж с применением ООП. #16
Цитата Сообщение от vitaly1981 Посмотреть сообщение
Возьми самоучитель по visual studio 2005.
Взял самоучитель Айвор Хортона "Visual C++ базовый курс.",там описывается создание виндовс приложении с помощию MFC и с помощью С++/CLI, какой из этих способов лучше подойдет для карточной игры, что посоветуете?

Почитай статьи про механизм рисования в окнах, в инете их много и даже с примерами.
я в этом рисовании пока не очень понимаю в гугле на запрос "механизм рисования в окнах C++" не так уж много нужных ссылок выдает да и "рисования в окнах C++" c примерами чет не заметил если не трудно будет киньте одну ссылку.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
13.08.2010, 06:07     Сделать бридж с применением ООП. #17
clicksel
CLI требует .NET Framework установленный у пользователя, а он 350 Мб весит....

Набери в поисковике "visual c++ рисование в окне" например
AK3RN
 Аватар для AK3RN
307 / 18 / 2
Регистрация: 01.05.2010
Сообщений: 250
13.08.2010, 11:11     Сделать бридж с применением ООП. #18
Цитата Сообщение от clicksel Посмотреть сообщение
Взял самоучитель Айвор Хортона "Visual C++ базовый курс.",там описывается создание виндовс приложении с помощию MFC и с помощью С++/CLI, какой из этих способов лучше подойдет для карточной игры, что посоветуете?
Я бы на Вашем месте начал с процедурного(а соответственно и простого, но при этом очень мощного) WinAPI, MFC это то же самое, только в объектно-ориентированной обертке и понять СРАЗУ основные концепции будет довольно тяжело, а уж накодить по-быстрому и подавно

p.s. Если с английским дружите, добро пожаловать в лс - скину ссылки на интересные англоязычные сайты по WinAPI
clicksel
3 / 3 / 0
Регистрация: 09.08.2010
Сообщений: 60
13.08.2010, 12:40     Сделать бридж с применением ООП. #19
Цитата Сообщение от vitaly1981 Посмотреть сообщение
CLI требует .NET Framework установленный у пользователя, а он 350 Мб весит....
тоесть если напишу игру на СLI, чтоб кто-нибудь кроме меня в нее сыграл должен иметь на компе .NET Framework?

Не по теме:

Цитата Сообщение от AK3RN Посмотреть сообщение
p.s. Если с английским дружите, добро пожаловать в лс - скину ссылки на интересные англоязычные сайты по WinAPI
с английским дружим))

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2010, 21:28     Сделать бридж с применением ООП.
Еще ссылки по теме:

C++ Как построить с применением функции
C++ Класс с применением виртуальной функции
ООП пример как сделать конструктор копирования на С++ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
13.08.2010, 21:28     Сделать бридж с применением ООП. #20
AK3RN WinAPI и MFC это далеко не одно и то же....
Кроме того можно писать программы используя ООП и без MFC.
Вы не путайте, ООП это методика построения программ, а WinAPI и MFC это библиотеки для взаимодействия с операционной системой и для упрощения построения программ.....

clicksel Именно так, конечно он в Windows 7 он уже встроен, но пользователям Windows XP его придется устанавливать.
Я предпочитаю использовать WinAPI и иногда MFC (не все его классы стоит использовать, они тоже косяки имеют)
Yandex
Объявления
13.08.2010, 21:28     Сделать бридж с применением ООП.
Ответ Создать тему
Опции темы

Текущее время: 16:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru