Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  ejnahuj
Language: C/C++
Code:
#include <iostream>
#include <string>
#include "pch.h"
#include <algorithm>   // transform()
#include <cctype>      // toupper(), tolower()
#include <functional>  // ptr_fun()
using namespace std;

int X = 1;
int O = 2;
int counter = 1;
int questCount = 1;
char r[3];       //Datu tips char tiek izmantots, lai sistēmas kods nesaplīstu ievadot simbolu kā gāajiena atrašanās koordinātas
char k[3];

int Gfield[3][3] = { {0,0,0},       //
                          {0,0,0},       //SPĒLES LAUKUMS
                          {0,0,0} };      //

void printField();
bool hasWon(int player);
void gameLogic();
void moveInput();
void retryMoveInput();
void doAMove();
bool getQuest();
void endApp();
void testQuest();


/******************************************************************************
*        GALVENĀ FUNKCIJA, KAS IZSAUC SPĒLES LAUKUMU UN SPĒLES LOĢIKU         *
******************************************************************************/


int main() {

     printField();
     cout << endl;
     gameLogic();
     return 0;
}




/******************************************************************************
*               FUNKCIJA, KAS IZPRINTĒ VISU SPĒLES LAUKUMU                    *
******************************************************************************/





void printField() {

     for (int r = 0; r < 3; r++) {

          for (int k = 0; k < 3; k++) {

               if (Gfield[r][k] == 1) {
                    cout << "|X";
               }
               else if (Gfield[r][k] == 2) {
                    cout << "|O";
               }
               else {
                    cout << "| ";
               }
          }
          cout << "|" << endl;
     }
}




/******************************************************************************
*         FUNKCIJA, KAS PĀRBAUDA, VAI DOTAIS SPĒLĒTĀJS IR UZVARĒJIS           *
******************************************************************************/




bool hasWon(int player) {

     for (int r = 0; r < 3; r++) {
          if (Gfield[r][0] == player && Gfield[r][0] == Gfield[r][1] && Gfield[r][1] == Gfield[r][2]) {
               return true;
          }
     }
     for (int k = 0; k < 3; k++) {
          if (Gfield[0][k] == player && Gfield[0][k] == Gfield[1][k] && Gfield[1][k] == Gfield[2][k]) {
               return true;
          }
     }
     if (Gfield[0][0] == player && Gfield[0][0] == Gfield[1][1] && Gfield[1][1] == Gfield[2][2]) {
          return true;
     }
     if (Gfield[0][2] == player && Gfield[0][2] == Gfield[1][1] && Gfield[1][1] == Gfield[2][0]) {
          return true;
     }
     return false;
}





/******************************************************************************
*               GALVENĀ SPĒLES LOĢIKA JEB SPĒLES DZINĒJS                      *
******************************************************************************/





void gameLogic() {

     while (!hasWon(X) || !hasWon(O)) {       /*Cikls, kas strādā, kamēr kāds no spēlētājiem nav uzvarējis*/

          if (counter % 2 == 0) {
               cout << "Otra speletaja karta O GAMELOGIC COUT" << endl;
          }
          else {
               cout << "Pirma speletaja karta X GAMELOGIC COUT" << endl;
          }

          moveInput();
          //cout<<"Spēles DEBUG skaitītājs: "<<counter<<endl;

          //questCount++;


          //system("cls");
          //printField();
          cout << endl;

          if (hasWon(X)) {
               cout << "Uzvarejis ir pirmais speletajs (X)";
               cout << endl << "Spele beigusies" << endl << endl;
               system("pause");
               break;
          }
          else if (hasWon(O)) {
               cout << "Uzvarejis ir otrais speletajs (O)";
               cout << endl << "Spele beigusies" << endl << endl;
               system("pause");
               break;
          }

          if (Gfield[1][1] != 0 && Gfield[1][2] != 0 && Gfield[1][3] != 0 && Gfield[2][1] != 0 && Gfield[2][2] != 0
               && Gfield[2][3] != 0 && Gfield[3][1] != 0 && Gfield[3][2] != 0 && Gfield[3][3] != 0) {
               cout << "Neizskirts!" << endl;
               cout << endl;
               printField();
               cout << endl << "Spele beigusies" << endl << endl;
               system("pause");
               break;
          }
          counter++;
     }
}




/*Šī ir palīgfunkcija, kas pieprasa lietotājam ievadīt spēles gājienus, un pārbauda, vai ievade ir pareiza*/




void moveInput() {

     testQuest();

     cout << "Ievadiet rindu: ";
     cin >> r;


     cout << "Ievadiet kolonnu: ";
     cin >> k;


     system("cls");
     cout << endl;

     if (r[0] <= 48 || r[0] >= 52 || k[0] <= 48 || k[0] >= 52) {       //Šīs vērtības atbilst skaitļiem no 1 - 3 ASCII tabulā, tiek izmantoti kā simboli

          cout << "Ievadiet skaitli no 1 - 3!!!" << endl;
          retryMoveInput();
     }
     doAMove();
}


void retryMoveInput() {
     printField();

     cout << "Ievadiet rindu: ";
     cin >> r;


     cout << "Ievadiet kolonnu: ";
     cin >> k;

     system("cls");
     cout << endl;

     if (r[0] <= 48 || r[0] >= 52 || k[0] <= 48 || k[0] >= 52) {       //Šīs vērtības atbilst skaitļiem no 1 - 3 ASCII tabulā, tiek izmantoti kā simboli
          printField();
          cout << "Ievadiet skaitli no 1 - 3!!!" << endl;
          retryMoveInput();
          return;
     }
     printField();
     doAMove();
     counter++;

}

/*Palīgfunkcija, kas pārbauda, vai ievadītā atbilde ir pareiza*/

void testQuest() {

     if (getQuest() == true) {
          cout << "Pareiza atbilde!" << endl;
          counter++;   ////PIESKAITA PIRMO REIZI
     }
     else {
          cout << "Nepareiza atbilde!" << endl;
          counter++;
          system("cls");

          if (counter % 2 == 0) {
               printField();
               cout << "Otra speletaja karta O TESTQUEST COUT" << endl;
          }
          else {
               printField();
               cout << "Pirma speletaja karta X TESTQUEST COUT" << endl;
          }

          testQuest();
     }

}





/*Šī ir palīgfunkcija, kas veic gājiena ievadi spēles laukumā, veicot pārbaudi,vai
lauciņš ir aiņemts,ja ir aiņemts, izsauc ***moveInput()*** funkciju, un neizlaiž gājienu*/





void doAMove() {
     while (true) {
          if (Gfield[r[0] - 49][k[0] - 49] == 0) {        //Šīs vērtības atbilst skaitļiem no 1 - 3 ASCII tabulā, tiek izmantoti kā simboli
               if (counter % 2 == 0) {
                    Gfield[r[0] - 49][k[0] - 49] = X;
                    questCount++;
                    counter++;
                    moveInput();
                    break;
               }
               else {
                    Gfield[r[0] - 49][k[0] - 49] = O;
                    questCount++;
                    counter++;
                    moveInput();
                    break;
               }
          }
          else {
               //cout<<endl<<"Laucins jau ir aiznemts, izvelies citu!"<<endl;
               counter++;
               retryMoveInput();

               break;
          }
     }
}




/******************************************************************************
*                   SPĒLES JAUTĀJUMU IEVIESANAS FUNKCIJA                      *
******************************************************************************/
/*
1. Kadu mainigo datu tipu lietosi apaljiem skaitliem?
2. Vai kompilātors, norāda, kurā vietā ir kļūda?
3. Kadu mainigu lietosi lai ievaditu vardus?
4. Kadu mainigo lietosi lai ievaditu ciparu ar komatu
5. Cik 1 gigabaitā ir megabaiti?
6. Ar kadu funkciju tu izvaditu konsolē tekstu?
7. Vai bool mainīga datu tips var but tikai patiess un nepatiies?
8. Ar kadu funkciju tu ievadito skaitli, parveidotu par mainigo?
9. Vai algoritms var stradāt ar kļūdu kodā?
*/

/*****************************************************************************
 * jautajumu atbildes
*****************************************************************************/

string pirmaAtbilde = "int";
string cinPirmaAtbilde;

string otraAtbilde = "ja";
string cinOtraAtbilde;

string tresaAtbilde = "char";
string cinTresaAtbilde;

string ceturtaAtbilde = "float";
string cinCeturtaAtbilde;

string piektaAtbilde = "1024";
string cinPiektaAtbilde;

string sestaAtbilde = "cout";
string cinSestaAtbilde;

string septitaAtbilde = "ja";
string cinSeptitaAtbilde;

string astotaAtbilde = "cin";
string cinAstotaAtbilde;

string devitaAtbilde = "ne";
string cinDevitaAtbilde;



bool getQuest() {


     switch (questCount) {
          {
     case 1:
          cout << "Kadu mainigo lietosi apaliem skaitliem?" << endl;
          getline(cin, cinPirmaAtbilde);
          transform(cinPirmaAtbilde.begin(), cinPirmaAtbilde.end(), cinPirmaAtbilde.begin(), ptr_fun <int, int>(tolower));
          if (pirmaAtbilde == cinPirmaAtbilde) { return true; }
          else { return false; }
          break;
          }

          {
     case 2:
          cout << "Vai kompilators norada, kura vieta ir kluda?" << endl;
          getline(cin, cinOtraAtbilde);
          transform(cinOtraAtbilde.begin(), cinOtraAtbilde.end(), cinOtraAtbilde.begin(), ptr_fun <int, int>(tolower));
          if (otraAtbilde == cinOtraAtbilde) { return true; }
          else { return false; }
          break;
          }

          {
     case 3:
          cout << "Kadu mainigo datu tipu lietosi, lai ievaditu vardu?" << endl;
          getline(cin, cinTresaAtbilde);
          transform(cinTresaAtbilde.begin(), cinTresaAtbilde.end(), cinTresaAtbilde.begin(), ptr_fun <int, int>(tolower));
          if (tresaAtbilde == cinTresaAtbilde || cinTresaAtbilde == "string") { return true; }
          else { return false; }
          break;
          }

          {
     case 4:
          cout << "Kadu mainigo lietosi, lai ievaditu ciparu ar komatu?" << endl;
          getline(cin, cinCeturtaAtbilde);
          transform(cinCeturtaAtbilde.begin(), cinCeturtaAtbilde.end(), cinCeturtaAtbilde.begin(), ptr_fun <int, int>(tolower));
          if (ceturtaAtbilde == cinCeturtaAtbilde || cinCeturtaAtbilde == "double") { return true; }
          else { return false; }
          break;
          }

          {
     case 5:
          cout << "Cik 1 gigabaita ir megabaiti?" << endl;
          getline(cin, cinPiektaAtbilde);
          transform(cinPiektaAtbilde.begin(), cinPiektaAtbilde.end(), cinPiektaAtbilde.begin(), ptr_fun <int, int>(tolower));
          if (piektaAtbilde == cinPiektaAtbilde) { return true; }
          else { return false; }
          break;
          }

          {
     case 6:
          cout << "Ar kadu funkciju Tu izvaditu konsole tekstu?" << endl;
          getline(cin, cinSestaAtbilde);
          transform(cinSestaAtbilde.begin(), cinSestaAtbilde.end(), cinSestaAtbilde.begin(), ptr_fun <int, int>(tolower));
          if (sestaAtbilde == cinSestaAtbilde) { return true; }
          else { return false; }
          break;
          }

          {
     case 7:
          cout << "Vai bool mainiga datu tips var but tikai patiess un nepaties?" << endl;
          getline(cin, cinSeptitaAtbilde);
          transform(cinSeptitaAtbilde.begin(), cinSeptitaAtbilde.end(), cinSeptitaAtbilde.begin(), ptr_fun <int, int>(tolower));
          if (septitaAtbilde == cinSeptitaAtbilde) { return true; }
          else { return false; }
          break;
          }

          {
     case 8:
          cout << "Ar kadu funkciju Tu ievadito skaitli, parveidotu par mainigo?" << endl;
          getline(cin, cinAstotaAtbilde);
          transform(cinAstotaAtbilde.begin(), cinAstotaAtbilde.end(), cinAstotaAtbilde.begin(), ptr_fun <int, int>(tolower));
          if (astotaAtbilde == cinAstotaAtbilde) { return true; }
          else { return false; }
          break;
          }

          {
     case 9:
          cout << "Vai algoritms var stradat ar kludu koda?" << endl;
          getline(cin, cinDevitaAtbilde);
          transform(cinDevitaAtbilde.begin(), cinDevitaAtbilde.end(), cinDevitaAtbilde.begin(), ptr_fun <int, int>(tolower));
          if (devitaAtbilde == cinDevitaAtbilde) { return true; }
          else { return false; }
          break;
          }

          {
     default:

          if (Gfield[1][1] != 0 && Gfield[1][2] != 0 && Gfield[1][3] != 0 && Gfield[2][1] != 0 && Gfield[2][2] != 0
               && Gfield[2][3] != 0 && Gfield[3][1] != 0 && Gfield[3][2] != 0 && Gfield[3][3] != 0) {
               cout << "Neizskirts!" << endl;
               cout << endl;
               printField();
               cout << endl << "Spele beigusies" << endl << endl;
               system("pause");
               break;
          }
          }



     }

}


Comments: