Не знаю как это игра называется на самом деле, но нужно было реализовать это: Реализовать игру 15 палок. Вы играете с компьютером. Ваша задача: по очереди забирать предметы (от 1 до 3 за один ход). Проигрывает тот, кто последний забирает предмет. Реализовать алгоритм максимально умного бота.
#include <iostream>
#include <time.h>
#include <Windows.h>
#include <iomanip>
#include <cmath>
#include <string>
using namespace std;
void userStep(int& amount, int& randm, int& counter, int& allcount)
{
if (randm < 5)
{
cout << "Введите количество палок, которых хотите вычеркнуть (От 1 до 3 включительно): ";
do
{
cin >> amount;
allcount += amount;
if (amount > 3 || amount < 1)
{
cout << "От 1 до 3 включительно: ";
}
} while (amount > 3 || amount < 1);
{
cout << "\nВы выбрали " << amount << " элементов, итог: ";
}
char* sticks = new char[15 - amount];
for (int x = 0; x <= 14 - amount; x++)
{
sticks[x] = '|';
cout << sticks[x] << " ";
}
delete[] sticks;
counter = 1;
amount = 0;
cout << "\n\n";
}
}
void botStep(int& amount, int& randm, int& counter, int& allcount)
{
if (randm > 5)
{
cout << "Бот вводит количество палок. ";
if (amount == 0)
{
amount = rand() % 3 + 1;
}
else
{
amount = 4 - amount;
}
allcount += amount;
cout << "Бот выбрал " << amount << " элементов, итог: ";
char* sticks = new char[15 - amount];
for (int x = 0; x <= 14 - amount; x++)
{
sticks[x] = '|';
cout << sticks[x] << " ";
}
delete[] sticks;
counter = 2;
amount = 0;
cout << "\n\n";
}
}
int main()
{
setlocale(LC_ALL, "Rus");
srand(unsigned(time(0)));
system("Color 75");
cout << "\n\n\n\tДобро пожаловать в мою игру. Вы готовы проиграть? Если да - введите Y или любой другой знак, чтобы ответить нет и признать победу бота и воистину могущественность и разум исскуственного интеллекта над человеческим существом\n\n";
char startChange;
cout << "Y(Да) или любое другое значение(Нет): ";
cin >> startChange;
cout << endl;
if (startChange == 'Y' || startChange == 'y')
{
cout << "Итак, раз уж вы готовы то объясню, что вам надо сделать. У вас 15 палок, забираете по очереди по несколько. У кого последняя остается - проигрывает. Количество максимально выбранных элементов за один раз - 3\n\n";
cout << "Это элементы игры которыми вы и бот будете манипулировать: ";
char* sticks = new char[15];
for (int x = 0; x <= 14; x++)
{
sticks[x] = '|';
cout << sticks[x] << " ";
}
delete[] sticks;
cout << "\n\n";
int amount = 0;
int counter;
int allcount = 0;
int randm = rand() % 11 + 0;
userStep(amount, randm, counter, allcount);
botStep(amount, randm, counter, allcount);
while (allcount <= 12)
{
if (counter == 1)
{
botStep(amount, randm, counter, allcount);
}
else if (counter == 2)
{
userStep(amount, randm, counter, allcount);
}
}
}
system("pause");
return 0;
}
сам код не закончен.
#include <iostream>
#include <time.h>
#include <Windows.h>
#include <iomanip>
#include <cmath>
#include <string>
using namespace std;
void userStep(int& amount, int& randm, int& allcount, int& reg)
{
cout << "Введите количество палок, которых хотите вычеркнуть (От 1 до 3 включительно): ";
do
{
cin >> amount;
allcount += amount;
if (amount > 3 || amount < 1)
{
cout << "От 1 до 3 включительно: ";
}
} while (amount > 3 || amount < 1);
{
cout << "\nВы выбрали " << amount << " элементов, итог: ";
}
char* sticks = new char[reg - amount];
for (int x = 0; x <= reg - amount - 1; x++)
{
sticks[x] = '|';
cout << sticks[x] << " ";
}
delete[] sticks;
reg = reg - amount;
cout << "\n\n";
}
void botStep(int& amount, int& randm, int& allcount, int& reg)
{
cout << "Бот вводит количество палок. ";
if (amount != 0)
{
amount = 4 - amount;
}
else
{
amount = rand() % 3 + 1;
}
allcount += amount;
cout << "Бот выбрал " << amount << " элементов, итог: ";
char* sticks = new char[reg - amount];
for (int x = 0; x <= reg - amount - 1; x++)
{
sticks[x] = '|';
cout << sticks[x] << " ";
}
delete[] sticks;
reg = reg - amount;
cout << "\n\n";
}
int main()
{
setlocale(LC_ALL, "Rus");
srand(unsigned(time(0)));
system("Color 75");
cout << "\n\n\n\tДобро пожаловать в мою игру. Вы готовы проиграть? Если да - введите Y или любой другой знак, чтобы ответить нет и признать победу бота и воистину могущественность и разум исскуственного интеллекта над человеческим существом\n\n";
char startChange;
cout << "Y(Да) или любое другое значение(Нет): ";
cin >> startChange;
cout << endl;
if (startChange == 'Y' || startChange == 'y')
{
cout << "Итак, раз уж вы готовы то объясню, что вам надо сделать. У вас 15 палок, забираете по очереди по несколько. У кого последняя остается - проигрывает. Количество максимально выбранных элементов за один раз - 3\n\n";
cout << "Это элементы игры которыми вы и бот будете манипулировать: ";
char* sticks = new char[15];
for (int x = 0; x <= 14; x++)
{
sticks[x] = '|';
cout << sticks[x] << " ";
}
delete[] sticks;
cout << "\n\n----------------------------------------------------------------------------------------------------------------\n\n";
int amount = 0;
int allcount = 0;
int reg = 15;
int randm = rand() % 1 + 1;
while (allcount <= 12)
{
if (randm == 1)
{
botStep(amount, randm, allcount, reg);
randm = 2;
}
else if (randm == 2)
{
userStep(amount, randm, allcount, reg);
randm = 1;
}
}
}
system("pause");
return 0;
}
Доработал свой код и вроде бы рабочий. Требуется проверка опытных пользователей.
#include <iostream>
#include <time.h>
#include <Windows.h>
#include <iomanip>
#include <cmath>
#include <string>
using namespace std;
void userStep(int& amount, int& randm, int& allcount, int& reg)
{
cout << "\n\nВведите количество палок, которых хотите вычеркнуть (От 1 до 3 включительно): ";
do
{
cin >> amount;
allcount += amount;
if (amount > 3 || amount < 1)
{
cout << "\nОт 1 до 3 включительно: ";
}
} while (amount > 3 || amount < 1);
{
cout << "\nВы выбрали " << amount << " элементов, итог: ";
}
char* sticks = new char[reg - amount];
for (int x = 0; x <= reg - amount - 1; x++)
{
sticks[x] = '|';
cout << sticks[x] << " ";
}
delete[] sticks;
reg = reg - amount;
cout << "\n\n";
}
void botStep(int& amount, int& randm, int& allcount, int& reg)
{
cout << "\n\nБот вводит количество палок. ";
if (amount != 0)
{
amount = 4 - amount;
}
else
{
amount = rand() % 3 + 1;
}
allcount += amount;
cout << "Бот выбрал " << amount << " элементов, итог: ";
char* sticks = new char[reg - amount];
for (int x = 0; x <= reg - amount - 1; x++)
{
sticks[x] = '|';
cout << sticks[x] << " ";
}
delete[] sticks;
reg = reg - amount;
cout << "\n\n";
}
int main()
{
setlocale(LC_ALL, "Rus");
srand(unsigned(time(0)));
system("Color 75");
cout << "\n\n\n\tДобро пожаловать в мою игру. Вы готовы проиграть? Если да - введите Y или любой другой знак, чтобы ответить нет и признать победу бота и воистину могущественность и разум исскуственного интеллекта над человеческим существом\n\n";
char startChange;
cout << "Y(Да) или любое другое значение(Нет): ";
cin >> startChange;
cout << endl;
if (startChange == 'Y' || startChange == 'y')
{
cout << "Итак, раз уж вы готовы то объясню, что вам надо сделать. У вас 15 палок, забираете по очереди по несколько. У кого последняя остается - проигрывает. Количество максимально выбранных элементов за один раз - 3\n\n";
cout << "Это элементы игры которыми вы и бот будете манипулировать: ";
char* sticks = new char[15];
for (int x = 0; x <= 14; x++)
{
sticks[x] = '|';
cout << sticks[x] << " ";
}
delete[] sticks;
cout << "\n\n--------------------------------------------------------------------------------------------------------";
int amount = 0;
int allcount = 0;
int reg = 15;
int randm = rand() % 2 + 1;
while (allcount <= 13)
{
if (randm == 1)
{
if (reg == 2 || reg == 3 || reg == 4)
{
cout << "\n\nБот вводит количество палок. ";
if (reg == 2)
amount = 1;
else if (reg == 3)
amount = 2;
else if (reg == 4)
amount = 3;
allcount += amount;
cout << "Бот выбрал " << amount << " элементов, итог: ";
char* sticks = new char[reg - amount];
for (int x = 0; x <= reg - amount - 1; x++)
{
sticks[x] = '|';
cout << sticks[x] << " ";
}
delete[] sticks;
reg = reg - amount;
cout << endl << endl;
}
else
{
botStep(amount, randm, allcount, reg);
}
randm = 2;
cout << "--------------------------------------------------------------------------------------------------------";
}
else if (randm == 2)
{
if (reg == 3 || reg == 2)
{
cout << "\n\nВведите количество палок, которых хотите вычеркнуть: ";
do
{
if (reg == 2)
{
amount = 0;
do
{
if (amount > 1)
cout << "\nНе больше чем 1: ";
cin >> amount;
} while (amount > 1);
}
else if (reg == 3)
{
amount = 0;
do
{
if (amount > 2)
cout << "\nНе больше чем 2: ";
cin >> amount;
} while (amount > 2);
}
allcount += amount;
if (amount > 3 || amount < 1)
{
cout << "\nОт 1 до 3 включительно: ";
}
} while (amount > 3 || amount < 1);
{
cout << "\nВы выбрали " << amount << " элементов, итог: ";
}
char* sticks = new char[reg - amount];
for (int x = 0; x <= reg - amount - 1; x++)
{
sticks[x] = '|';
cout << sticks[x] << " ";
}
delete[] sticks;
reg = reg - amount;
cout << "\n\n";
}
else
{
userStep(amount, randm, allcount, reg);
}
randm = 1;
cout << "--------------------------------------------------------------------------------------------------------";
}
}
if (randm == 2 && reg == 1)
{
cout << "\n\nНа этот раз выиграл бот, но не стоит огорчаться. Человечество не стоит на месте!";
}
else if (randm == 1 && reg == 1)
{
cout << "\n\nПоздравляем вас с победой над ботом! Это прямое доказательство, что человек лучше ИИ!";
}
}
cout << endl << endl;
system("pause");
return 0;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Народ, прошу помощиВроде простой вопрос, но ничего полезного при поиске решения не нашел
Пишу простое консольное приложение При попытке скомпилировать проект линковщик выдает следующее: