Не знаю как это игра называется на самом деле, но нужно было реализовать это: Реализовать игру 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;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Народ, прошу помощиВроде простой вопрос, но ничего полезного при поиске решения не нашел
Пишу простое консольное приложение При попытке скомпилировать проект линковщик выдает следующее: