Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.71/111: Рейтинг темы: голосов - 111, средняя оценка - 4.71
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
1

Написать игру "Быки и коровы"

07.04.2012, 21:11. Показов 22490. Ответов 47
Метки нет (Все метки)

Нужно написать игру "Быки и коровы" в форме С#. Это моя курсовая работа, судя потому как нам преподают программирование я не напишу ее, а нужно срочно. Через месяц надо сдать. Помогите пожалуйста!!!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2012, 21:11
Ответы с готовыми решениями:

Алгоритм игры "Быки и коровы"
Здравствуйте! Суть проблемы - плохо реализован алгоритм...вы загадываете 4х значное число без...

Игра "Быки и коровы"
Помогите, пожалуйста, написать программу реализующую игру "Быки и коровы" методом решета. ...

Написать игру "судоку" в консольном приложении
помогите пожалуйста написать игру в консоли, срочно надо..

Написать многопоточную игру "Баран и волк"
помогите пожааалуйста написать многопоточное приложение на C#.Создать игру, где будут 2-3 барана и...

47
14 / 14 / 5
Регистрация: 06.04.2012
Сообщений: 287
07.04.2012, 21:13 2
Nady_Beauty, А в чем суть игры ? Какой сценарий ?
0
Level 2
400 / 274 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
07.04.2012, 21:42 3
Nady_Beauty, гениальное описание задания...

Быки и коровы
0
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
08.04.2012, 00:38  [ТС] 4
Правила игры

Играют двое. Каждый задумывает и записывает тайное 4-значное число с неповторяющимися цифрами[1]. Игрок, который начинает игру по жребию, делает попытку отгадать число. Попытка — это 4-значное число с неповторяющимися цифрами, сообщаемое противнику. Противник сообщает в ответ, сколько цифр угадано без совпадения с их позициями в тайном числе и сколько угадано вплоть до позиции в тайном числе. Например:
Задумано тайное число «3219».
Попытка: «2310».
Результат: две «коровы» (две цифры: "2" и "3" — угаданы на неверных позициях) и один «бык» (одна цифра "1" угадана вплоть до позиции).
Игроки делают попытки угадать по очереди. Побеждает тот, кто угадает число первым.
_____________
как нам сказали правило - Программа случайно выбирает четырехзначное число. Угадать это число. На каждом шаге играющий называет 4-хзначное число, программа сообщает об угаданных цифрах (быки) и стоящих на месте (коровы). Например, задано число 6482, число 5428 содержит 1 "корову" и 2 "быка".
0
Эксперт С++
2369 / 1985 / 290
Регистрация: 03.05.2011
Сообщений: 4,410
Записей в блоге: 13
08.04.2012, 01:21 5
Nady_Beauty, например так: делаете массив из случайных не повторяющихся чисел Заполнение массива неповторяющимися числами и сравниваете каждый элемент массива, введённый пользователем, результат выводите на консоль.
0
11 / 9 / 0
Регистрация: 08.05.2011
Сообщений: 87
08.04.2012, 13:18 6
Надо чтобы играл была с другим человеком или с компом ? Если человеком то на 2 компьютера или на 1?

А скажи на каком ты курсе ?
0
23 / 23 / 7
Регистрация: 23.02.2012
Сообщений: 107
08.04.2012, 14:04 7
Лучший ответ Сообщение было отмечено как решение

Решение

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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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;
 
namespace WindowsFormsApplication14
{
    public partial class Form1 : Form
    {
        private Random rand = new Random();
        private int[] x = new int[4];
        private string s;
        private int polnoeSovpadenie;
        private int chastichnoeSovpadenie;
 
        public Form1()
        {
            InitializeComponent();
            NewGame();
        }
 
        private void NewGame()
        {
            NovoeChislo();
            label2.Text = "";
            label3.Text = "";
            textBox1.ReadOnly = false;
        }
 
        private void NovoeChislo()
        {
            bool contains;
            for (int i = 0; i < 4; i++)
            {
                do 
                {
                    contains = false;
                    x[i] = rand.Next(10);
                    for (int k = 0; k < i; k++)
                        if (x[k] == x[i])
                            contains = true;
                } while (contains);
            }
            s = x[0].ToString() + x[1] + x[2] + x[3];
        }
 
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar) || e.KeyChar == (char)Keys.Back)
                e.Handled = false;
            else
                e.Handled = true;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Length != 4)
            {
                MessageBox.Show("введенное число должно быть четырехзначным");
            }
            else
            {
                SravenieChisel();
                RezultShow();
            }
            textBox1.Text = "";
        }
 
        private void RezultShow()
        {
            label2.Text += textBox1.Text + " полностью совпало " + polnoeSovpadenie + " совпало " + chastichnoeSovpadenie + "\n";
        }
 
        private void SravenieChisel()
        {
            polnoeSovpadenie = 0;
            chastichnoeSovpadenie = 0;
            char[] ch = textBox1.Text.ToCharArray();
            for (int i = 0; i < 4; i++)
            {
                if (s.Contains(ch[i]))
                {
                    if (s[i] == ch[i])
                        polnoeSovpadenie++;
                    else
                        chastichnoeSovpadenie++;
                }
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            label3.Text = s;
            label2.Text = "";
            textBox1.ReadOnly = true;
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            NewGame();
        }
    }
}
7
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
08.04.2012, 19:59  [ТС] 8
MrLong, спасибо огромное тебе) Можно с комментариями эту же прогу?) Буду очень благодарна.
0
37 / 37 / 10
Регистрация: 08.03.2012
Сообщений: 235
08.04.2012, 20:19 9
Nady_Beauty, тебе прогу готовую дали, а ты даже откомментить не можешь ее. Как ты вообще учишься?
1
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
09.04.2012, 06:21  [ТС] 10
Лучше спросить, как нам преподают, тем более ранее программирование не преподавали. А учусь я нормально, и днями сижу за этим C#!!!
0
710 / 677 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
09.04.2012, 07:01 11
Nady_Beauty, дело в том, что если вы действительно потратили уже на c# пусть не дни но хотя бы пару часов, то вам наверняка понятна бОльшая часть этого кода и уж точно не требуется объяснять строчки вроде
C#
1
for (int i = 0; i < 4; i++)
сформулируйте что именно вам непонятно и вам с радостью помогут, а писать 100 строк комментариев очевидного действительно всем лень )
0
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
09.04.2012, 07:23  [ТС] 12
Да, мне понятно. Просто я боюсь, что пойму не правильно. Вот и спрашиваю, а тупо списывать - это не моё. Я сижу и разбираюсь
0
23 / 23 / 7
Регистрация: 23.02.2012
Сообщений: 107
09.04.2012, 13:20 13
Лучший ответ Сообщение было отмечено как решение

Решение

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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
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;
// на конструкторе формы лежит 3 кнопки(проверка введенного числа, показать загаданное число, новая игра)
// лежит 3 метки(пояснение к текстбоксу, вывод результатов сравнения, вывод загаданного числа)
// лежит 1 текстбокс
// названия контролов и событий VisualStudio назначала автоматически. я ничего не менял
 
namespace WindowsFormsApplication14
{
    public partial class Form1 : Form
    {
        // объявление переменной для  генерации случайных чисел
        private Random rand = new Random();
        private int[] x = new int[4];
        // в строковой переменной впоследствии будем хранить строковое представление загаданного числа
        private string s;
        // счетчики полного и частичного совпадения цифр в загаданном и введенном числах
        private int polnoeSovpadenie;
        private int chastichnoeSovpadenie;
 
        public Form1()
        {
            InitializeComponent();
          // вызов метода для начала новой игры
            NewGame();
        }
 
        // метод новой игры
        private void NewGame()
        {
          // вызов метода для генерации нового числа
            NovoeChislo();
          // обнуление метки вывода результатов сравнения загаданного и введенного чисел
            label2.Text = "";
          // обнуление метки вывода загаданного числа
            label3.Text = "";
          // открываем textbox для ввода значений
            textBox1.ReadOnly = false;
        }
 
        // метод генерации нового числа
        private void NovoeChislo()
        {
          // флаг сравнения с предыдущими цифрами. совпадает - true 
            bool contains;
          // цикл заполнения массива нового числа новыми цифрами
            for (int i = 0; i < 4; i++)
            {
                do 
                {
                    contains = false;
                // генерация новой цифры
                    x[i] = rand.Next(10);
                // цикл сравнения сгенерированной цифры с предыдущими
                    for (int k = 0; k < i; k++)
                        if (x[k] == x[i])
                    //если сгенериррованная цифра совпала с одной из предыдущих
                    // флаг сравнения делаем true для продолжения генерации
                    //несовпадающей цифры в элемент массива
                            contains = true;
                } while (contains);
            }
            s = x[0].ToString() + x[1] + x[2] + x[3];// из элементов массива формируем строку
        }
 
        // это событие. его надо привязать к событию textboxa  KeyPress
        // описывает что делать программе при нажатии на клавиатуру
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
          //Char.IsDigit(e.KeyChar) проверка, является ли нажатая клавиша цифрой. возвращает true или false
          //e.KeyChar == (char)Keys.Back проверяет, является ли нажатая клавиша бекспейсом.
            if (Char.IsDigit(e.KeyChar) || e.KeyChar == (char)Keys.Back)
            // если были нажаты цифра или бекспейс, то событие обработать в обычном режиме
                e.Handled = false;
            else
            //иначе, поставить метку что событие обработанно, но не пускать сигнал в текстбокс
                e.Handled = true;
        }
 
        // событие клик кнопки №1 - проверка введенного числа
        private void button1_Click(object sender, EventArgs e)
        {
          // если в текстбоксе не 4 цифры
            if (textBox1.Text.Length != 4)
            {
            // вывести сообщение об ошибке
                MessageBox.Show("введенное число должно быть четырехзначным");
            }
            else
            {
            // иначе вызвать метод сравнения чисел
                SravenieChisel();
            // вызвать метод вывода результатов сравнения на экран
                RezultShow();
            }
          // очистка текстбокса
            textBox1.Text = "";
        }
 
        // метод вывода результата сравнения загаданного и введенного чисел на экран в label2
        private void RezultShow()
        {
            label2.Text += textBox1.Text + " полностью совпало " + polnoeSovpadenie + " совпало " + chastichnoeSovpadenie + "\n";
        }
 
        // метод сравнения загаданного и введенного чисел
        private void SravenieChisel()
        {
          // обнуление счетчиков
            polnoeSovpadenie = 0;
            chastichnoeSovpadenie = 0;
          // перевод содержимого текстбокса в символьный массив
            char[] ch = textBox1.Text.ToCharArray();
          // цикл проверки символов в массиве
            for (int i = 0; i < 4; i++)
            {
            // если строка s содержит в себе элемент массива
                if (s.Contains(ch[i]))
                {
                // если номер символа в массиве совпадает с номером символа в строке
                    if (s[i] == ch[i])
                  // увеличиваем счетчик полного совпадения
                        polnoeSovpadenie++;
                    else
                  // если номер символа в массиве не совпадает с номером символа в строке
                  // увеличиваем счетчик неполного совпадения
                        chastichnoeSovpadenie++;
                }
            }
        }
 
        // событие клик кнопки №2 - вывод загаданного числа на экран
        private void button2_Click(object sender, EventArgs e)
        {
          // в label3 передаем загаданное число
            label3.Text = s;
          // обнуляем метку вывода результатов сравнения введенного и загаданного чисел
            label2.Text = "";
          // запрещаем ввод символов в текстбокс
            textBox1.ReadOnly = true;
        }
 
        // событие клик кнопки №3 - новая игра
        private void button3_Click(object sender, EventArgs e)
        {
          // вызов метода начала новой игры
            NewGame();
        }
    }
}
7
67 / 33 / 2
Регистрация: 11.10.2011
Сообщений: 128
09.04.2012, 14:22 14
А потом такие выпускницы существенно демпингуют зарплаты ИТшников.
0
MrLong
09.04.2012, 16:38
  #15

Не по теме:

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

0
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
25.04.2012, 15:08  [ТС] 16
в игре нужно, чтобы было время, а далее рекорды - кто за какое время угадал. Можете скинуть файл? программа должна быть на писана в форме. так как не успеваю, из кожи вон лезу( Плиииииииииз :'(
0
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
04.05.2012, 16:37  [ТС] 17
У кого-нибудь есть описание текстовое этой игры? может кто курсач делал по этому, очень надо!!! Благодарю
0
24 / 23 / 3
Регистрация: 21.04.2012
Сообщений: 253
04.05.2012, 23:37 18
Цитата Сообщение от Nady_Beauty Посмотреть сообщение
У кого-нибудь есть описание текстовое этой игры? может кто курсач делал по этому, очень надо!!! Благодарю
Мы на 2м месяца программирования это писали, как обычную разминку...
Правда в консоли
0
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
05.05.2012, 14:19  [ТС] 19
у нас программирование идет как короткий курс, поэтому игрушки пишем как курсовые...А к ним еще нужно описание, как к любой курсовой
0
0 / 0 / 0
Регистрация: 30.05.2011
Сообщений: 74
30.08.2012, 10:28 20
АП теме.
Доброе время суток, формучане.
мне то же нужно написать Такую игру на C#. Спасибо MrLong'у, за готовый код. Но проблема в немного в другом, можно ли на основе этого кода сделать игру так чтоб прослеживалась какая нибудь(пусть даже самая простейшая) иерархия классов?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2012, 10:28

Можно ли самому написать игру "Домино"
Здравствуйте, подскажите реально ли создать при помощи C# и WinForms одну из разновидностей игры...

Написать логическую игру "палочки"
Всем привет! Может, вы когда-нибудь делали такую игру, или встречали исходники на просторах...

Написать консольную игру "змейка"
Нужно написать консольную игру змейка, использовать можно только using System; using...

Написать игру "Ход конем"
Мне нужно написать одну игру(простенькую), как Windows приложение, называется &quot;Ход конём&quot;. Вот в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.