Endil

keep talking

Apr 6th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.32 KB | None | 0 0
  1. // keeptalking.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <conio.h>
  6. #include <iostream>
  7. #include <map>
  8. #include <string>
  9. #include <vector>
  10.  
  11. using namespace std;
  12.  
  13. void Numbers() {
  14.     map<int, pair<int, int>> m;
  15.     int input, pos, digit;
  16.     auto read = [&] {
  17.         int ret = _getch() - '0';
  18.         system("cls");
  19.         return ret;
  20.     };
  21.     auto record = [&](int stage) { m.emplace(stage, make_pair(pos, digit)); };
  22.    
  23.     input = read();
  24.     switch (input) {
  25.         case 3: {
  26.             pos = 3;
  27.             cout << pos << "-я" << endl;
  28.         } break;
  29.         case 4: {
  30.             pos = 4;
  31.             cout << pos << "-я" << endl;
  32.         } break;
  33.         default: {
  34.             pos = 2;
  35.             cout << pos << "-я" << endl;
  36.         } break;
  37.     }
  38.     digit = read();
  39.     record(1);
  40.  
  41.     input = read();
  42.     switch (input) {
  43.         case 1: {
  44.             digit = 4;
  45.             cout << "\"" << digit << "\"" << endl;
  46.             pos = read();
  47.         } break;
  48.         case 3: {
  49.             pos = 1;
  50.             cout << pos << "-я" << endl;
  51.             digit = read();
  52.         } break;
  53.         default: {
  54.             pos = m.at(1).first;
  55.             cout << pos << "-я" << endl;
  56.             digit = read();
  57.         } break;
  58.     }
  59.     record(2);
  60.  
  61.     input = read();
  62.     switch (input) {
  63.         case 1: {
  64.             digit = m.at(2).second;
  65.             cout << "\"" << digit << "\"" << endl;
  66.             pos = read();
  67.         } break;
  68.         case 2: {
  69.             digit = m.at(1).second;
  70.             cout << "\"" << digit << "\"" << endl;
  71.             pos = read();
  72.         } break;
  73.         case 3: {
  74.             pos = 3;
  75.             cout << pos << "-я" << endl;
  76.             digit = read();
  77.         } break;
  78.         case 4: {
  79.             digit = 4;
  80.             cout << "\"" << digit << "\"" << endl;
  81.             pos = read();
  82.         } break;
  83.     }
  84.     record(3);
  85.  
  86.     input = read();
  87.     switch (input) {
  88.         case 1: {
  89.             pos = m.at(1).first;
  90.             cout << pos << endl;
  91.             digit = read();
  92.         } break;
  93.         case 2: {
  94.             pos = 1;
  95.             cout << pos << "-я" << endl;
  96.             digit = read();
  97.         } break;
  98.         default: {
  99.             pos = m.at(2).first;
  100.             cout << pos << endl;
  101.             digit = read();
  102.         } break;
  103.     }
  104.     record(4);
  105.  
  106.     input = read();
  107.     switch (input) {
  108.         case 1: {
  109.             digit = m.at(1).second;
  110.             cout << "\"" << digit << "\"" << endl;
  111.         } break;
  112.         case 2: {
  113.             digit = m.at(2).second;
  114.             cout << "\"" << digit << "\"" << endl;
  115.         } break;
  116.         case 3: {
  117.             digit = m.at(4).second;
  118.             cout << "\"" << digit << "\"" << endl;
  119.         } break;
  120.         case 4: {
  121.             digit = m.at(3).second;
  122.             cout << "\"" << digit << "\"" << endl;
  123.         } break;
  124.     }
  125.     m.clear();
  126.     _getch();
  127.     system("cls");
  128.     return;
  129. }
  130.  
  131. void WireSequences() {
  132.     vector<vector<string>> v = { { "c", "b", "abc" },{ "b", "ac", "ac" },{ "a", "b", "b" },{ "ac", "a", "ac" },{ "b", "b", "b" },{ "ac", "bc", "bc" },{ "abc", "c", "ab" },{ "ab", "ac", "c" },{ "b", "a", "c" } };
  133.     int redCount = 0, blueCount = 0, blackCount = 0;
  134.     auto resetCount = [&] {redCount = 0; blueCount = 0; blackCount = 0; };
  135.     char input;
  136.     do {
  137.         system("cls");
  138.         if (redCount > 8 || blueCount > 8 || blackCount > 8)
  139.             resetCount();
  140.         cout << v.at(redCount).at(0) << " ";
  141.         cout << v.at(blueCount).at(1) << " ";
  142.         cout << v.at(blackCount).at(2) << endl;
  143.         input = _getch();
  144.         switch (input) {
  145.             case 'q': redCount++; break;
  146.             case 'w': blueCount++; break;
  147.             case 'e': blackCount++; break;
  148.             case 'r': resetCount(); break;
  149.             case 'a': {
  150.                 resetCount();
  151.                 system("cls");
  152.                 Numbers();
  153.             } break;
  154.         }
  155.     } while (true);
  156. }
  157.  
  158. int main()
  159. {
  160.     system("@chcp 1251");
  161.     WireSequences();
  162.     return 0;
  163. }
Advertisement
Add Comment
Please, Sign In to add comment