Окончательная неокончательная версия. Мэйн расшит на отдельные файлы для классов. Дальше расшивать лень.
This commit is contained in:
37
TurnClass/Turn.cpp
Normal file
37
TurnClass/Turn.cpp
Normal file
@ -0,0 +1,37 @@
|
||||
#include "Turn.h"
|
||||
//
|
||||
//
|
||||
//Функция хода игрока:
|
||||
//алгоритм на вычленение первого и второго значений координат
|
||||
//получает строку вида "XY", первый символ кидает через at в строку для Х,
|
||||
//второй символ также символ кидает в строку для Y,
|
||||
//затем переводит обе строки в числа, с которыми можно вести вычисления.
|
||||
void Turn::HumanTurn() {
|
||||
cin >> Humancount;
|
||||
turnline=Humancount.at(0);
|
||||
turncol=Humancount.at(1);
|
||||
turnLINEint=stoi(turnline);
|
||||
turnCOLint=stoi(turncol);
|
||||
}
|
||||
//Функция хода бота
|
||||
void Turn::BotTurn() {
|
||||
//Со случайной вероятностью своим первым ходом может занять центральную клетку, если та свободна.
|
||||
//На занятии центральной клетки весь ИИ заканчивается.
|
||||
srand((time(0)));
|
||||
if ((turnLINEint!=1) and (turnCOLint!=1) and ((rand())%2==1)) {
|
||||
turnLINEint=1;
|
||||
turnCOLint=1;
|
||||
}
|
||||
//Рандомит первое значение (строку), засыпает, рандомит второе значение (столбец),
|
||||
//присваивает рандомные значения в переменные.
|
||||
else {
|
||||
srand((time(0)));
|
||||
turnLINEint=(rand()%3);
|
||||
chrono::milliseconds timespan((rand()/10));
|
||||
this_thread::sleep_for(timespan);
|
||||
mt19937 rng;
|
||||
rng.seed(time(nullptr));
|
||||
turnCOLint=(rng()%3);
|
||||
}
|
||||
//cout << "debugbotturn:" << turnLINEint << turnCOLint << endl;
|
||||
}
|
||||
29
TurnClass/Turn.h
Normal file
29
TurnClass/Turn.h
Normal file
@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
#ifndef TICTACTOE_TURN_H
|
||||
#define TICTACTOE_TURN_H
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include "../BoardClass/Board.h"
|
||||
#include <ctime>
|
||||
#include <chrono>
|
||||
#include <thread>
|
||||
#include <random>
|
||||
|
||||
//Ходы игрока и бота
|
||||
class Turn {
|
||||
public:
|
||||
//Сюда кладутся координаты, которые скармливаются игровому полю.
|
||||
unint turnLINEint, turnCOLint;
|
||||
//Строковые для ввода человека и перевода этого ввода в числа
|
||||
string Humancount;
|
||||
string turnline, turncol;
|
||||
bool firstnumber, defenceturn;
|
||||
Board BoardObj;
|
||||
|
||||
void HumanTurn();
|
||||
|
||||
void BotTurn();
|
||||
};
|
||||
|
||||
|
||||
#endif //TICTACTOE_TURN_H
|
||||
Reference in New Issue
Block a user