Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Создание игры "Расстановка 16 букв"

Помогите с созданием приложения. С таким еще не сталкивался. Где и как вообще писать подобные игры?

1. Игра "Расстановка 16 букв". В квадрате размером 4 х 4 клетки расставить 16 букв (по четыре буквы а, b, c, d) так, чтобы в каждом горизонтальном и в каждом вертикальном ряду любая буква встречалась только один раз.
Ответ: ну, писать то в студии можно, на консольке не советую, не наглядно, WinForms или WPF.

понадобится :
1) класс - поле, содержащее двумерный массив, методы его заполняющие, событие на полное заполнение.
2) перечисление - набор букв, которые можно сунуть в поле, плюс пустое значение, чем поле заполнено по умолчанию
3) форма - как контроллер поля, в которой пользователь будет выбирать какую букву и в какую ячейку он сунет.
Вопрос: Игра "Угадай слово по буквам". В чем ошибка?

Код Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Const N=32; //Количество букв-кнопок
Type STR_30=String[30];
Var Btn: TButton; // Переменной для создания кнопок
STR_N, // Зашифрованное слово
STR_R:STR_30; // Отгадываемое слово
CHAR_:Char; // Нажатая буква
{$R *.dfm}
Procedure POISK(STR_R:STR_30;Var STR_N:STR_30;CHAR_:Char);
//Поиск буквы в слове и «открытие» ее
Var I:Integer;
Flag:Boolean; // Флаг найдена ли в слове нажатая буква
begin
Flag:=False;
For I:=1 to Length(STR_R) do // Поиск буквы в слове
If STR_R[I]=CHAR_ then
begin
STR_N[I]:=CHAR_;
Flag:=True;
end;
  If Flag=True Label1.Caption:= STR_N;  //тут ошибка
end;
Ответ:
Код Delphi
1
If Flag=True Label1.Caption:= STR_N; 
Нужно
Код Delphi
1
If Flag=True then Label1.Caption:= STR_N; 
Добавлено через 2 минуты
То что написал Immo, само собой
Вопрос: Разработка игры "Угадай слово"

Всем здравствуйте. Прошу помочь с этой задачей: "Разработать программу-игру «Угадай слово». Компьютер «задумывает» слово (слова можно хранить в виде массива или файла). Пользователь вводит букву в поле ввода. При нажатии на клавишу Enter происходит проверка, есть ли такая буква в слове и сколько раз она встречается. Создать панель строки состояния. Выводить в нее подсказки, количество попыток, оставшееся время."
Ответ: А можно комментарии к коду?
Вопрос: Игра "Угадай слово"

Помогите написать игру угадай слово на C++ windows forms
Ответ: сайт не открывается
Вопрос: Игра "Расстановка 16 букв"

1. Игра "Расстановка 16 букв". В квадрате размером 4 х 4 клетки расставить 16 букв (по четыре буквы а, b, c, 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
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
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.Net;
 
namespace finalHome
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }
        
        string word = "";
        List<Label> labels = new List<Label>();
        int t = 10;
 
        private void timer1_Tick(object sender, EventArgs e)
        {  
            t--;
            timer.Text = t.ToString();
            if (t == 0)
            {
                timer1.Stop();
           MessageBox.Show("Your time is up the word was "+ word,"LOST");
           Reset();
           }
 
        }
 
        private void startButton_Click(object sender, EventArgs e)
        {
            Reset();
            timer1.Enabled = true;
        }
 
      public  void MakeLabels()
        {
          word =  GetRandomWord();
          char[] chars = word.ToCharArray();
          int between = 330 / chars.Length;
          for (int i = 0; i < chars.Length; i++) 
          { 
                  labels.Add(new Label());
                  labels[i].Location = new Point((i * between) + 10, 80);
                  labels[i].Text = "_";
                  labels[i].Parent = groupBox1;
                  labels[i].BringToFront();
                  labels[i].CreateControl();
           }
          attemptLabel2.Text = (chars.Length).ToString();
 
        
        }
 
      void Mistake()
      {
          for (int i = word.Length; i > 0; i--)
 
          { attemptLabel2.Text = (word.Length-1).ToString(); }
 
      }
        string GetRandomWord()
    {
        WebClient wc = new WebClient();
        string wordList = wc.DownloadString("http://www-cs-faculty.stanford.edu/~knuth/sgb-words.txt");
        string[] words = wordList.Split('\n');
        Random ran = new Random();
        return words[ran.Next(0, words.Length )];
     
        }
 
        public void submitButton_Click(object sender, EventArgs e)
        {
            char letter = SubmitTextox.Text.ToLower().ToCharArray()[0];
            if(!char.IsLetter(letter))
            {
                MessageBox.Show("you can submit only letters","Error", MessageBoxButtons.OK,MessageBoxIcon.Error);
                return;
            }
            if (word.Contains(letter))
            {
                char[] letters = word.ToCharArray();
                for (int i = 0; i < letters.Length; i++)
                {
                    if (letters[i] == letter)
                        labels[i].Text = letter.ToString();
                }
                foreach (Label l in labels)
                    if (l.Text == "_") 
                        return;
                MessageBox.Show("You won!", "Nice");
                Reset();
            }
 
            else 
            {
                MessageBox.Show("there is not this letter in the word!","Error");
                label1.Text += " " + letter.ToString() + ",";
                Mistake();
               
            }
        }
 
        void Reset()
        {
            GetRandomWord();
            MakeLabels();
            label1.Text = "Missed";
            SubmitTextox.Text = "";
            timer1.Enabled = false;
            timer1.Enabled = true;
            
        
        }
 
        private void resetButton_Click(object sender, EventArgs e)
        {
            Reset();
        }
 
        private void submitWord_Click(object sender, EventArgs e)
        {
            if (WordTextBox.Text == word)
            {
                MessageBox.Show("You have won! The word is " + word);
                Reset();
            }
            else
            {
                MessageBox.Show("Wrong word! Try again");
            
            }
        }
     }
}

1 При значении таймера равным 0 выходит сообщение что пользователь проиграл. При нажатии на reset таймер продолжает считать до -1 -2 -3 и тд. Как сделать так, чтоб при нажатии на Reset таймер начал отчет с начального значения?
2. Как сделать, чтобы при вводе неправильных букв или слов в SubmitTextOx и WordTextBox соответственно, значение attemptLabel2 уменьшалось на единицу. и когда это значение достигнет 0, так же вышло сообщение о том что пользователь проиграл. спасибо большое
Ответ: Там не совсем уменьшать слово на 1 символ, а уменьшать количество попыток. Проще говоря, начальное количество попыток равно количеству букв в заданном слове. Если ошибся, то количество попыток становится уже -1 от начального и тд
когда попытки заканчиваются - выходит сообщение
Вопрос: Создать игру "Угадай число"

Используя Windows Forms, создать игру “Угадай число”. Компьютер загадывает число от 1
до 100, а человек пытается его угадать за минимальное число попыток.*Для ввода данных от
человека используется элемент TextBox.

Есть игра на JS

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 var answer = parseInt(Math.random() * 100);
    while (true) {
        var userAnswer = prompt('Введите число от 0 до 100. Для выхода нажмите q');
        if (userAnswer == 'q') {
            break;
        }
        userAnswer = parseInt(userAnswer);
 
        if (userAnswer > answer) {
            alert('Ваш ответ слишком большой');
        } else if (userAnswer < answer) {
            alert('Ваш ответ слишком маленький');
        } else if (userAnswer == answer) {
            alert('Вы угадали!');
            break;
        } else {
            alert('Необходимо ввести число!');
        }
    }
не успеваю в срок, помогите разобраться как реализовать
Ответ: protectedman, ошибка в кнопке переиграть, после нажатия на кнопку надпись "играть" нет.
Вопрос: Написать игру "Быки и коровы"

Помогите с этой задачей. Естественно все должно быть на чистом Си

Написать игру «Быки и коровы». Программа "загадывает" четырёхзначное число и играющий должен угадать его. После ввода пользователем числа программа сообщает, сколько цифр числа угадано (быки) и сколько цифр угадано и стоит на нужном месте (коровы). После отгадывания числа на экран необходимо вывести количество сделанных пользователем попыток. В программе необходимо использовать рекурсию.
Ответ:
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
#include <iostream>
#include <vector>
#include "Header_Function.h"
//#include "Header.h"
using namespace std;
 
 
int main() {
    //locales_1251();
    clock_t start = clock();
    constexpr int index_top = 4;
    while (1) {
        vector<int> v, digits(4);
        srand(time(NULL));
        v.push_back(rand() % 9 + 1);
        for (unsigned index = 1; index < index_top; index++) {//загальний цикл
            unsigned short random = rand() % 9 + 1;
            for (short index_bottom = 0; index_bottom < v.size(); index_bottom++) {
                if (random == v.at(index_bottom)) {
                    random = rand() % 9 + 1;
                    index_bottom = 0;
                    continue;
                }
            }
            v.push_back(random);
        }
        /*for (int temp : v)
        cout << temp;*/
        cout << '\n';
        int n;
        while (true) {
            try {
                cin >> n;
                if (n / 1000 < 1 || n / 1000 > 9) throw 2;
                digits[0] = n / 1000;
                digits[1] = n / 100 % 10;
                digits[2] = n / 10 % 10;
                digits[3] = n % 10;
                for (short index_up = 0; index_up < index_top; index_up++)
                    for (short index_bottom = index_up + 1; index_bottom < index_top; index_bottom++)
                        if (digits.at(index_up) == digits.at(index_bottom)) throw 1;
                //Перевірка биків і корів
                unsigned short cow = 0, ox = 0;
                //бики
                for (short index_up = 0; index_up < index_top; index_up++) {
                    if (v.at(index_up) == digits.at(index_up)) {
                        ox++;
                        continue;
                    }
                    //корови
                    for (short index_bottom = 0; index_bottom < index_top; index_bottom++)
                        if (v.at(index_up) == digits.at(index_bottom))
                            cow++;
                }
                if (ox == 4) {
                    cout << "Win!\n";
                    break;
                }
                cout << "Ox: " << ox << "\nCow: " << cow << '\n';
            }
            catch (int c) {
                if (c == 1)
                    cout << "the same numbers\n";
                else if (c == 2)
                    cout << "error: no four-digit number\n";
            }
        }
        cout << "Game continue?\ty or n";
        char symb;
    start:
        cin >> symb;
        if (symb == 'y')
            continue;
        else if (symb == 'n')
            break;
        else {
            cout << "Wrong symbol, please enter corect symbol\n";
            goto start;
        }
    }
    clock_end(start);
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Думаю поменять вам конструкции c++ на c труда не составит, удачи

Добавлено через 3 минуты
ИМХО но рекурсия тут не нужна
Вопрос: Задача про вектор для игры "Быки и коровы"

Задача из книги Страуструпа, вот условие : программа должна хранить вектор из четырех различных чисел в диапазоне от 0 до 9 (т.е., например, 2345, но не 4455), а пользователь должен угадать число. Дальше идет описание самой игры.
Как я понял тут надо без рандома, но я не понял как это сделать поэтому решил через рандом, и вот что написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
using namespace std;
int main ()
{
    int random_number;
    int firs_value = 1234; //минимальное число из желаемого диапазона
    int last_value = 3;    //ширина выборки (если честно я так и не понял что такое выборка, поэтому наугад написал 3)
    vector <int> myVector (1); 
    for (int i = 0; i < myVector.size; i++)
    {
        random_number = firs_value + rand() % last_value;
        myVector.push_back(random_number);
        cout <<myVector <<endl; //здесь ошибка
    }
    system ("pause");
}
Правильно ли вообще понял суть задачи? И большая просьба, не писать сразу решение задачи, а сказать что искать или какую тему/раздел прочитать, очень хочу сам решить а если уже не смогу то попрошу готовое решение
Ответ: 1.
Сообщение от bars2525
vector <int> myVector (1);
Зачем в начале создается не пустой вектор, а уже содержащий 1 элемент?
2.
В 12 строке надо указать количество вводимых цифр:
C++
1
for (int i = 0; i < 4; i++)
3.
Сообщение от bars2525
cout <<myVector <<endl; //здесь ошибка
Нет перегруженных операций для таких контейнеров. Каждый элемент надо выводить отдельно.
Т.е.
C++
1
2
for (int i = 0; i < myVector.size; i++)
    cout <<myVector[i] <<endl; //здесь ошибка

Сообщение от bars2525
что такое выборка
Имеется ввиду количество возможных случайных значений, для тройки - три возможных значения (0,1,2).
Вопрос: Игра "Угадай число"

Двое играют в следующую игру. Дано число 0. Разрешается прибавить к текущему числу любое натуральное число от 1 до 9. Выигрывает тот, кто получит число N . Кто выигрывает при правильной игре?
ВХОДНЫЕ ДАННЫЕ

Вводится одно натуральное число N ( 1 ≤N≤ 10000).
ВЫХОДНЫЕ ДАННЫЕ

Выведите 1, если выигрывает первый игрок (тот, кто ходит первым), или 2, если выигрывает второй игрок.
Ответ: Для того, чтобы выиграть в эту, так сказать, "игру", достаточно прибавлять столько, чтобы разность между N и текущей суммой была кратна 10. Бедный второй игрок! Он выигрывает только тогда, когда N кратно 10. В этом случае у первого игрока нет шансов. В остальных случаях пальма первенства безоговорочно принадлежит первому игроку. Для робота вот так подойдёт, полагаю:
Код Pascal
1
2
3
4
5
var n: integer;
begin
  read(n);
  if n mod 10 = 0 then write(2) else write(1)
end.
Да, это вся программа... Какая игра, такая и программа...