74 / 31 / 2
Регистрация: 25.05.2010
Сообщений: 218
1
.NET 4.x

Игра 21

01.09.2011, 11:43. Показов 3630. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Хотел разобраться в такой вот задачке, но пока, вообще ничего понять не могу. Как и что?

Попробовать создать консольную игру "21" таким образом, чтобы в программе была возможность
вести одновременно 10 игр (предположим, что это небольшое казино на 10 столов). В
программе необходимо реализовать класс "Игра" (или "Стол"). В программе должен быть
создан всего лишь один объект "Игра" на все 10 одновременно ведущихся игр. Текущее
состояние каждой игры необходимо сохранять с помощью сериализации в обьекты
MemoryStream. Процесс переключения между играми состоит в сериализации текущей
игры в память, и десериализации игры, к которой происходит переключение, из памяти в
объект "Игра". Переключение между играми осуществлять с помощью клавиш
Alt+Fномер_игры.


Заранее благодарю за любую помощь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.09.2011, 11:43
Ответы с готовыми решениями:

Бюджет 4500 гр. Конфигурация работа в Office, AutoCAD, игра Assassin, онлайн игра World of Tanks
Собираю компьютер для сестры. Основные требования: работа в Microsoft Office, AutoCAD, игра...

Игра в загадки. Загадать загадку. Если ответ верен – поздравить пользователя. Затем сообщить, что игра окончена.
Всем привет! Меня зовут VitoScaletta, совсем недавно начал обучаться JS, но очень тяжело в голову...

Игра в «Одиннадцать предметов», игра Баше.
прошу помощи в создании программы! Разработать программную модель следующей игры двух...

Как сделать так, чтобы при нажатии на кнопку "Новая игра" игра начиналась заново?
Как сделать так, чтобы при нажатии на кнопку "Новая игра" игра начиналась заново? unit1.cpp void...

5
272 / 265 / 20
Регистрация: 27.02.2009
Сообщений: 694
Записей в блоге: 7
01.09.2011, 12:05 2
Если задача на первый взгляд непонятна по реализации, то ее нужно разбить на составляющие блоки. По вашей проблеме это может выглядеть так:

1. Игровые столы:
1.1 Сериализация;
1.2 Десериализация;
1.3 Игровая логика:
1.3.1 Карточная колода:
1.3.1.1 Индексация карт и цены карты (в очках) (например создать класс карта, но не обязательно);
1.3.1.2 Перемешивание колоды;
1.3.2 Карты на руках, подсчет очков;
1.3.3 Правила игры;
2. Интерфейс игры.
3. Тестирование программы

Начинать реализацию нужно с самых глубоких уровней (3 и 4)
2
74 / 31 / 2
Регистрация: 25.05.2010
Сообщений: 218
01.09.2011, 12:22  [ТС] 3
Цитата Сообщение от XAHOK Посмотреть сообщение
Если задача на первый взгляд непонятна по реализации, то ее нужно разбить на составляющие блоки. По вашей проблеме это может выглядеть так:

1. Игровые столы:
1.1 Сериализация;
1.2 Десериализация;
1.3 Игровая логика:
1.3.1 Карточная колода:
1.3.1.1 Индексация карт и цены карты (в очках) (например создать класс карта, но не обязательно);
1.3.1.2 Перемешивание колоды;
1.3.2 Карты на руках, подсчет очков;
1.3.3 Правила игры;
2. Интерфейс игры.
3. Тестирование программы

Начинать реализацию нужно с самых глубоких уровней (3 и 4)
Стало чуток понятнее, но не совсем. В любом случае спасибо, буду разбираться.
0
74 / 31 / 2
Регистрация: 25.05.2010
Сообщений: 218
03.09.2011, 12:01  [ТС] 4
Пока ничего не получилось. Если кто-то сможет помочь еще, буду очень благодарен.

Что понял, это надо создать проект, и в него добавить класс, в котором описывать игру.. а в "main" потом все вызывать. Пытаюсь еще сейчас разобраться с сериализацией.
0
272 / 265 / 20
Регистрация: 27.02.2009
Сообщений: 694
Записей в блоге: 7
05.09.2011, 08:09 5
Сериализацией стоит заниматься практически на последнем этапе. Сначала необходимо реализовать игру на 1 столе, причем игра должна быть реализована в виде класса. Подклассы например игровая колода, игроки (очки, карты на руках, ставка). Подклассом для них будет класс карта. В каждом классе необходимо реализовать вывод на экран текущего состояния (ПП карты на руках игрока). И уже когда это все реализовано следует заняться сериализацией класса "Игра".
0
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
05.09.2011, 21:50 6
F&D, можете для отправной точки посмотреть мой код для класса карта и колода.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
    public enum Suit
    {
        Hearts = 0,
        Diamonds = 1,
        Clubs = 2,
        Spades = 3
    }
 
    public struct Card
    {
        public int Power { get; set; }
        public Suit Suit { get; set; }
 
        public static bool IsAce(Card card)
        {
            return card.Power == 14;
        }
 
        public static bool IsJack(Card card)
        {
            return card.Power == 11;
        }
 
        public static bool IsQueen(Card card)
        {
            return card.Power == 12;
        }
 
        public static bool IsKing(Card card)
        {
            return card.Power == 13;
        }
    }
 
    public class Deck : List<Card>
    {
        private Deck(bool is_default)
        {
            for (int i = 0; i < 4; i++)
            {
                for (int j = 2; j < 15; j++) //отсчет с двойки, старшая карта - туз
                {
                    Add(new Card() { Power = j, Suit = (Suit)i });
                }
            }
        }
 
        public void Shuffle()
        {
            Random rand = new Random();
            int index;
            for (int i = 0; i < Count; i++)
            {
                index = rand.Next(Count);
                Card buff = this[index];
                this[index] = this[i];
                this[i] = buff;
            }
        }
 
        public static Deck Default
        {
            get
            {
                return new Deck(true);
            }
        }
 
        public Card GetCard()
        {
            Card result = this.Last();
            this.RemoveAt(Count - 1);
            return result;
        }
 
        public bool PutCard(Card card)
        {
            if (!this.Exists(x => x.Power == card.Power && x.Suit == card.Suit))
            {
                this.Add(card);
                return true;
            }
            else
            {
                return false;
            }
        }
    }
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2011, 21:50
Помогаю со студенческими работами здесь

Игра Кости, игра с компьютером
Всем привет! Делаю консольную игру Кости. Условия такие: 1) Перед игрой все игроки бросают...

Существует ли игра такая игра?
Всем привет. Существует ли такая игра, где, допустим, мы находимся на космическом корабле, в...

Игра слов, игра Scrabble
Задание: Создать программу для решения задачи построения слова из некоторого множества букв (игра...

Игра на C++
Здравствуйте! Интересует такой вопрос: При знаниях: Переменные, условия, циклы, функции,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru