Где воздух гор - там тишина снегов, молчание камней и дремлет сила

Программирование Windows

Игра Dice: реализация с помощью С#

2018-03-09 07:14:16







Игра Dice (Кости) одна из древнейших в истории человечества. Правила ее хорошо известны, хотя существуют и разные варианты данной игры.  Ее программная реализация также бывает различной. Часто такого рода программы  делаются для развлечения или в качестве тестовых заданий.

В нашем случае двое игроков имею два типа игральных костей. Игрок «Alice» использует 12 шестисторонних, а игрок «Bob» 6 двадцатисторонних игральных костей. Каждый одновременно делает бросок и побеждает тот, у кого  выпадет наибольшее число. Если числа равны, тогда ничья.
Итак,  создаем в VisualStudio новый проект типа C#, за основу берем стандартное приложение Windows. На форму помещаем 22 контрола типа Labels. Два мы назовем именами наших игроков, а из  остальных, расположив их группами напротив друг друга, удалим текст, установленный по умолчанию. Также помещаем на форму контрол Button,который будет запускать игру.
Затем нам необходимо создать собственно код самой игры. Чтобы не растягивать этот достаточно простой проект, далее здесь исходный код с комментариями:
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace DiceGameTest
{
    public partial class Form1 : Form
    {
        #region Declaration
// 1.  Создаем 2 массива  для заполнения их числами, имитирующие бросик игральных костей
 
       
        int[] dice_alice;
        int[] dice_bob;
 
//2. Объявляем объект генератора случайных чисел
 
        Random rand;
 
        #endregion
 
        #region Initialization
 
        public Form1()
        {
            InitializeComponent();
        }
 
 
 
        #endregion
 
        #region Private Methods
 
//3. Основнойметодигры
 
        private void RollDice()
        {
 
//a-  Инициализиурем массивы для обоих игроков
 
            dice_alice = new int[12] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
            dice_bob = new int[6] { 0, 0, 0, 0, 0, 0 };
 
// b -Инициализируем новый объект генератора случайных чисел
 
            rand = new Random();
 
//c-запускаем цикл for для заполнения массива игрока «Alice» c помощью генератора случайных чисел
 
            for (int i = 0; i < dice_alice.Length; i++)
            dice_alice[i] = rand.Next(1, 6 + 1);
 
//d – записываем полученное  значение, предварительно конвертировав его в строку в контрол типа Label для отображения на экране. Там же помещаем это значение в переменную типа Int
 
            lbldicealice1.Text =dice_alice[0].ToString();
            int dice1 = Convert.ToInt32(dice_alice[0].ToString());
 
            lbldicealice2.Text = dice_alice[1].ToString();
            int dice2 = Convert.ToInt32(dice_alice[1].ToString());
 
            lbldicealice3.Text = dice_alice[2].ToString();
            int dice3 = Convert.ToInt32(dice_alice[2].ToString());
 
            lbldicealice4.Text = dice_alice[3].ToString();
            int dice4 = Convert.ToInt32(dice_alice[3].ToString());
 
            lbldicealice5.Text = dice_alice[4].ToString();
            int dice5 = Convert.ToInt32(dice_alice[4].ToString());
 
            lbldicealice6.Text = dice_alice[5].ToString();
            int dice6 = Convert.ToInt32(dice_alice[5].ToString());
 
            lbldicealice7.Text = dice_alice[6].ToString();
            int dice7 = Convert.ToInt32(dice_alice[6].ToString());
 
            lbldicealice8.Text = dice_alice[7].ToString();
            int dice8 = Convert.ToInt32(dice_alice[7].ToString());
 
    
 
            lbldicealice9.Text = dice_alice[8].ToString();
            int dice9 = Convert.ToInt32(dice_alice[8].ToString());
 
 
 
            lbldicealice10.Text = dice_alice[9].ToString();
            int dice10 = Convert.ToInt32(dice_alice[9].ToString());
 
 
            lbldicealice11.Text = dice_alice[10].ToString();
            int dice11 = Convert.ToInt32(dice_alice[10].ToString());
 
            lbldicealice12.Text = dice_alice[11].ToString();
            int dice12 = Convert.ToInt32(dice_alice[11].ToString());
 
//e- суммируем полученные значения. Для игрока «Bob» повторяются те же шаги
 
            int alice_score = dice1 + dice2 + dice3 + dice4 + dice5 + dice6 + dice7 + dice8 + dice9 + dice10 + dice11 + dice12;
 
            for (int k = 0; k < dice_bob.Length; k++)
            dice_bob[k] = rand.Next(1, 20 + 1);
            lbldicebob1.Text = dice_bob[0].ToString();
            int dice01 = Convert.ToInt32(dice_bob[0].ToString());
 
            lbldicebob2.Text = dice_bob[1].ToString();
            int dice02 = Convert.ToInt32(dice_bob[1].ToString());
 
            lbldicebob3.Text = dice_bob[2].ToString();
            int dice03 = Convert.ToInt32(dice_bob[2].ToString());
 
            lbldicebob4.Text = dice_bob[3].ToString();
            int dice04 = Convert.ToInt32(dice_bob[3].ToString());
           
            lbldicebob5.Text = dice_bob[4].ToString();
            int dice05 = Convert.ToInt32(dice_bob[4].ToString());
 
            lbldicebob6.Text = dice_bob[5].ToString();
            int dice06 = Convert.ToInt32(dice_bob[5].ToString());
 
 
            int bob_score = dice01 + dice02 + dice03 + dice04 + dice05;
 
//f- проверяется полученный результат и определяется победитель игры
 
            if (bob_score > alice_score)
            {
 
                MessageBox.Show("Bob is winner now!", "Bob Score is "+ bob_score.ToString());
 
            }
 
            else if (alice_score > bob_score)
            {
 
                MessageBox.Show("Alise is  winner now!", "Alice Score is " + alice_score.ToString());
 
            }
 
            else
            {
                MessageBox.Show("It is a tie");
 
            }
 
        }
 
 
//4 – Кнопка запускает метод    RollDice();
 
        private void btnPlay_Click(object sender, EventArgs e)
        {
            RollDice();
        }
 
 
 
        #endregion
    }
}
 
 
Как видите, очень просто. Это все.



Здесь нет комментариев


Новый комментарий:
























Яндекс.Метрика