эта запись не несёт информационной нагрузки. тут код, чтобы не потерять. не надо ставить минусы

Правка ru3, от ogrin_knyaz, 2018-03-16 18:51:59

/*#include <bits/stdc++.h> using namespace std; main() { int n; cin >> n; int *x=new int [n]; int *y=new int [n]; int *x2=new int [n]; int y2=new int [n]; for (int i=0; i<n; i++) { cin >> x[i] >> y[i]; x2[i]=x[i]; y2[i]=y[i]; } sort(x2, x2+n); sort(y2, y2+n); int xc, yc, xp, yp; xc=x2[(n+1)/2]; yc=y2[(n+1)/2]; bool flag=true; for (int i=0; i<n; i++) { if (x[i]==xc && y[i]==yc) { flag=false; } } int dx[4]{1,0,-1,0}; int dy[4]{0,-1,0,1}; if (!flag) { int best=99999999; for (int i=0; i<n; i++) { for (int k=0; k<n; k++) { xp=x[i]+dx[k]; yp=y[i]+dy[k]; flag=true; for (int j=0; j<n; j++) { if (x[j]==xp && y[j]==yp) { flag=false; } } if (!flag) { continue; } int d=0; for (int j=0; j<n; j++) { d+=abs(xp-x[j])+abs(yp-y[j]); } if (d<best) { best=d; xc=xp; yc=yp; } } } } cout << xc << ' ' << yc; }/

include

include

include

include

using namespace std; const char X = 'X'; const char 0 = '0'; const char ЕМРТY = ' '; const char TIE = 'T'; const char NO_ONE = 'N'; void instructions(); char askYesNo(string question); int askNumber(string question, int high, int low = 0); char humanPiece(); char opponent(char piece); void displayBoard(const vector& board); char winner(const vector& board); bool isLegal(const vector& board, int move); int humanMove(const vector& board, char human); int computerMove(vector board, char computer); void announceWinner(char winner, char computer, char human); void instructoin() { cout << "Добро пожаловать в игру: Tic-Tac-Toe.\n"; cout << "--где человеческий мозг ничто против кремниевого процессора\n\n"; cout << "Делайте ход с помощью номеров. О — 8. Номер\n"; cout << "соответствует указанному положению в таблице. Как показано:\n\n"; cout << " О | 1 | 2 "<< endl; cout << " --------- "<< endl; cout << " 3 | 4 | 5 "<< endl; cout <<" --------- " << endl; cout << " 6 | 7 | 8" << endl; cout << endl; cout << "приготовься человек, игра начинается...\n\n"; } char askYesNo(string question) { char response; do { cout << question << "(y/n): "; cin >> response; } while(response!='y' && response!='n'); return response; } int askNumber(string question, int high, int low) { int num; do { cout << question << "(" << low << "-" << high << "):"; cin >> num; } while(num>high || num < low); return num; } char humanPieci() { char go_first=askYesNo("Вам нужен первый ход?"); if (go_first=='y') { cout << "Тогда сделайте первый шаг." << endl; return X; } else { cout << "Ваша храбрость будет вашим поражением. Чтож, я хожу первый" << endl; return 0; } } char opponent(char piece) { if (piece == Х) { return 0; } else { return X; } } void displayBoard(const vector& board) { cout << "\n\t" << board[0] << "|" << board[1] << "|" << board[2]; cout << "\n\t" << "---------"; cout << "\n\t" << board[3] << "|" << board[4] << "|" << board[5]; cout << "\n\t" << "---------"; cout << "\n\t" << board[6] << "|" << board[7] << "|" << board[8]; cout << "\n\n"; } char winner(const vector& board) { const int WINNING_ROWS[8][3]={{0,1,2}, {3, 4, 5}, {6, 7, 8}, {0, 3, 6}, {1, 4, 7}, {2, 5, 8}, {0, 4, 8}, {2, 4, 6} }; const int TOTAL_ROWS=8; for (int row=0; row<TOTAL_ROWS; row++) { if ((board[WINNING_ROWS[row][0]] != ЕМРТY) && (board[WINNING_ROWS[row][0]] == board[WINNING_ROWS[row][1]]) && (board[WINNING_ROWS[row][1]] == board[WINNING_ROWS[row][2]])) { return board[WINNING_ROWS[row][0]]; } } if (count(board.begiп(), board.end(), ЕМРТY) == 0) return TIE; return NO_ONE; } inline bool isLegal(int move, const vector& board) { return (board[move] == ЕМРТY); } int humanMove(const vector& board, char human) { int move = askNumber("Куда вы будете двигаться?", (board.size() -1)); while (!isLegal(move, board)) { cout << "\nЭто поле уже занято, глупый человек.\n"; move = askNumber("Ваш следующий шаг?", (board.size() -1)); } cout << "Отлично.\n"; return move; } int computerMove(vector board, char computer) { unsigned int move = 0; bool found = false; while (!found && move < board.size()) { if (isLegal(move, board)) { board[move] = computer; found = winner(board) == computer; board[move] = ЕМРТY; } if (!found) { ++move; } } if (!found) { move = 0; char human = opponent(computer); while (!found && move < board.size()) { if (isLegal(move, board)) { board[move] = human; found = winner(board) == human; board[move] = ЕМРТY; } if(!found) { ++move; } } } if ( ! found) { move = 0; unsigned int i = 0; const int BEST_MOVES[] = {4, 0, 2, 6, 8, 1, 3, 5, 7}; while (!found && i < board.size()) { move = BEST_MOVES[i]; if (isLegal(move, board)) { found = true; } ++i; } } cout << "I shall take square number" << move << endl; return move; } void announceWinner(char winner, char computer, char human) { if (winner == computer) { cout << winner << " выйграл!\n"; cout << "Как я и предсказывал, человек,\n"; cout << "что компьютеры во всех отношениях превосходят человека!\n"; }

else if (winner == human)
{
    cout << winner << " выйграл!\n";
    cout << "Нет, нет, нет. Ты меня обманул где-то!\n";
    cout << "Этого больше не повторится, клянусь свои процессором!\n";
}
else
{
    cout << "Это ничья.\n";
    cout << "Тебе повезло, человек, пусть будет так...\n";
    cout << "Отпразднуйте ... это лучшее, чего вы когда-либо достигнете.\n";
}

} int main() { int move; const int NUM_SQUARES = 9; vector board(NUM_SQUARES, ЕМРТY); instructions(); char human = humanPiece(); char computer = opponent(human); char turn = Х; displayBoard(board); while (winner(board) == NO_ONE) { if (turn == human) { move = humanMove(board, human); board[move] = human; } else { move = computerMove(board, computer); board[move] = computer; } displayBoard(board); turn = opponent(turn); } announceWinner(winner(board), computer, human); return 0; }

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
ru4 Русский ogrin_knyaz 2018-03-17 11:18:27 6339
ru3 Русский ogrin_knyaz 2018-03-16 18:51:59 6343
ru2 Русский ogrin_knyaz 2018-03-02 15:38:31 91
ru1 Русский ogrin_knyaz 2018-03-01 17:37:01 1533 Первая редакция (опубликовано)