RCEditor Ответов: 1

Как добавить систему подсчета очков в свою игру в кости на языке Си#


Всем Привет!

Это мой 2-й пост в сообществе, и я благодарю Вас за помощь в решении моего вопроса.

У меня есть проект Игры в кости, который хорошо работает, но отображает только значения точек в текстовом поле, написанном в предложении после каждого броска.
if (oneThroughSix)
                lbl_displayResults.Text = "One through Six is worth 2000 points!";
            else if (allDoubles)
                lbl_displayResults.Text = "All Doubles are worth 1500 points!";
            else if (threeOnes)
                lbl_displayResults.Text = "Three Ones are worth 1000 points!";
и так далее...

Я хотел бы, чтобы программа отслеживала свой собственный счет на основе того, какие кости были выбраны после каждого броска с помощью флажков (о которых я спрашивал в своем предыдущем посте), которые пересчитывают то, что суммируется после каждого флажка, но только публикуют счет в нечто вроде gameTotal (который в настоящее время не определен в моем проекте-должен ли он быть int или string?) после нажатия кнопки roll. У меня есть переменная ResetResults () (ниже), которая выполняется каждый раз, когда вызывается функция btn_RollDice. Что, как мне кажется, в данном случае может помешать. Это правда? И если да, то как лучше это исправить?

private void ResetResults()
        {
            for (int i = 0; i < diceResults.Length; i++)
                diceResults[i] = 0;
        }


Вопрос 2: я также хотел бы добавить отдельный streakCounter (еще не определенный в проекте) в качестве примера переменной для использования, которая будет просто держать счетчик того, сколько бросков подряд произошло, пока не будет вызвана переменная 'aBust', которая отображает текст GameOver. Любые идеи, пожалуйста, дайте мне знать.

Еще Раз Спасибо!

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

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

Спасибо!

ДИСТАНЦИОННОЕ УПРАВЛЕНИЕ

1 Ответов

Рейтинг:
0

Graeme_Grant

Как и мой ответ на предыдущий набор вопросов здесь: Как связать флажок с изображением / случайным результатом в visual studio 2010 с помощью C# .....[^], вы бы держали связанные с игроком данные, такие как счет, в классе. Если есть несколько раундов, то у вас будет круглый класс.

public class Round
{
    public int Score { get; set; }
    public List<Die> Dice { get; } = new List<Die>
    {
       new Die(),
       new Die(),
       new Die(),
       new Die(),
       new Die(),
       new Die()
    };
}

public class Player
{
    public string Name { get; set; }
    public List<Round> Rounds { get; set; } = new List<Round>();
    public int TotalScore { get { return Rounds.Sum(x => x.Score); } }
    public Round CurrentRound { get { return Rounds.LastOrDefault(); } }
}

Потом использовать...
public readonly List<Player> Players = new List<Player>();

Players.Add(new Player { Name = "Fred });

Player currentPlayer = Players[0];

' add a new round
currentPlayer.Rounds.Add(new Round ());

' current round
Round currentRound = currentPlayer.CurrentRound;

' current score
int currentPlayerScore = currentPlayer.TotalScore;

Теперь у вас может быть многопользовательская игра.


BillWoodruff

Что будет делать ОП, когда вы не сможете написать для него код ?

Graeme_Grant

Нет, я не собираюсь писать его код для него, просто показываю ему, как структурировать его данные. Ему еще нужно самому написать логику игры. Часть пути познания... ;)

RCEditor

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

Так что я кое-что знаю, но готов узнать как можно больше, поэтому и написал здесь. Если это не входит в намерения сайта, я приношу извинения тем, кто может подумать, что я хотел бы, чтобы другие писали код для меня. Вот почему я поделился всем кодом для других, чтобы ссылаться или использовать его в обмен на информацию, чтобы увидеть, где мне не хватает, поскольку я еще не написал его в игру самостоятельно. Я знаю, чего хотел, но обратился за помощью, чтобы получить представление о том, как лучше всего достичь этого с помощью других.

В Любом Случае, Спасибо!

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

Graeme_Grant

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

"Быстрые ответы" - это просто то, что вы застряли и ищете указатели, а поиск Google не дает вам ответов. Таков контекст моих ответов.

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

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

Удачи вам в вашем проекте.