Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*********************************************************
- Eva Berga, 1ITB1
- 10. seminaars, 3. uzdevums
- Izveidot lietotaaja registraaciju.
- Lietotaja vards un parole tiek ierakstiti failaa lietotaji.txt
- Sisteema piedaavaa ielogoties, registreeties vai beigt darbu.
- Ielogoties var tikai jau registreti lietotaji.
- Parbauda vai registracija ievaditais vards jau nav aiznemts
- Neveiksmigas darbibas rezultataa paraada saakuma saskarni
- Kugu izvietojuma kartes ierakstiitas atseviskos teksta failos
- Vienmeer paarbauda, ka lietotaajs ir ievadiijis pareizi
- Nodrosina, ka kolonnu var ievadiit ar lielo un ar mazo burtu
- Peec katra gaajiena izvada traapiits vai garaam
- Tiek paradits atbilstosh teksts, kad ir nogrimis kugis
- Speele turpinaas liidz sasauti visi kugi
- Speeles beigaas izvada gaajienu skaitu
- Programma izveidota 21.05.2016
- *********************************************************/
- #include <iostream>
- #include <fstream>
- #include <cstdlib>
- #include <time.h>
- #include <string>
- using namespace std;
- static const int N = 10; //Kartes izmeers
- /**
- * izvadit_karti: Funkcija kartes izvadiishanai
- * parametri: karte[][N+1] - konkreeta karte, n - konstante
- * atgriezta veertiiba: nav
- */
- void izvadit_karti(char karte[][N+1], int n);
- /**
- * parbaude: Paarbauda vai lietotaajs ir traapijis pa kugi vai nee
- * parametri: karte2[][N+1] - random karte, karte[][N+1] - neaizpildiita karte, n - konstante, rin - ievadiitaa rinda, kol - ievadiitaa kolonna
- * atgriezta veertiiba: 1 - ja traapiits, 0 - ja garaam
- */
- int parbaude (char karte[][N+1], char karte2[][N+1], int rin, int kol);
- /**
- * nogrimis: Paarbauda vai kaads kugis iespejams ir nogrimis
- * parametri: karte2[][N+1] - random karte, rin - ievadiitaa rinda, kol - ievadiitaa kolonna, skaitlis - trapijumu skaits
- * atgriezta veertiiba: 0 - ja nav traapiits, 1 - ja traapiits pa X, 2 - ja traapiits pa XX, 3 - ja traapiits pa XXX, 4 - ja traapiits pa XXXX
- */
- int nogrimis (char karte2[][N+1], int rin, int kol, int skaitlis);
- /**
- * meklesana: parbauda vai lietotajvards jau ir aiznemts
- * parametri: user - lietotaja ievaditais vards, name - lietotajvards no faila
- * atgriezta veertiiba: 1 - ja vards eksiste, 0 - ja vards neeksiste
- */
- int meklesana(string user, string name);
- int main(){
- int izvele; //Lietotaaja izveele dariit kaut ko
- string username; //Lietotaaja ievadiitais lietotaajvaards
- string password; //Lietotaaja ievadiitaa parole
- string lietotajvards; //Lietotaajvaards no faila lietotaji.txt
- string parole; //Parole no faila lietotaji.txt
- string vards; //Lai vareetu paliidzeet noteikt vaardu skaitu failaa
- int skaits=0; //Vaardu skaits failaa
- //--------------------------------------------------------------
- char kolonna; //Ievadiitaa char kolonna
- int row; //Ievadiitaa rinda
- int column; //Kolonnas burts tiek paarveidots uz skaitli (liidziigi rindaam)
- int skait = 0; //Skaitiitaajs, kursh skaita +1, kad lietotaajs traapa pa kugi
- int sk = 0; //Skaitiitaajs, kas tiks nonulleets, tikko kaa kaads kugis nogrims
- int gajiens = 0; //Gaajienu skaitiitaajs
- string name; //Pie random kartes genereeshanas
- int kartes_numurs; //Kartes masiiva kaartas numurs
- char karte2 [N][N+1]; //Random karte
- char karte [N][N+1]; //Neaizpildiita karte
- string kartes[5]={"Karte_1.txt", "Karte_2.txt", "Karte_3.txt", "Karte_4.txt", "Karte_5.txt"}; //tekstu faili
- //----------------------------------------------------------------
- //-------------REGISTRACIJA---------------------------------------
- do{
- cout << "----------Speele 'KUGU KAUJA'----------------" << endl;
- cout << "Ielogoties var tikai jau registreti lietotaji!" << endl;
- cout << "----------------------------------------------" << endl;
- cout << "Ja velaties ielogoties, spiediet 1"<<endl;
- cout << "Ja velaties registreties, spiediet 2"<<endl;
- cout << "Ja velaties iziet, spiediet 0"<<endl<<endl;
- cout << "Jusu izvele: ";
- cin >> izvele;
- if (izvele==2){ //Ja izveelas registreeties
- system("cls"); //Tiek notiiriits ekraans
- ofstream lietotaji; //Tiek atveerts fails lietotaji.txt, lai ierakstiitu jaunos datus faila beigaas
- lietotaji.open("lietotaji.txt", ios::in | ios::app);
- cout << "Tu izvelejies registreties" << endl;
- cout << "-------------------------------------------" << endl;
- cout << "Ieraksti savu lietotajvardu ==> ";
- cin >> username;
- if(meklesana(username, lietotajvards)==1){ //ja tads lietotajs jau failaa pastav
- cout<<"Sis lietotajvards jau ir aiznemts"<<endl;
- cout << "----------------------------------------------" << endl;
- }
- else { //Ja nepastav, tad tas tiek ierakstiits failaa
- lietotaji << username << " ";
- cout << "Ieraksti savu paroli ==> ";
- cin >> password;
- lietotaji << password << endl;
- cout << "Lietotajs " << username << " ir veiksmigi registrets!" << endl;
- cout << "Lai speletu speli, tev ir jaielogojas sistema!" << endl;
- cout << "----------------------------------------------" << endl;
- }
- lietotaji.clear(); //Notiira un aizver failu
- lietotaji.close();
- }
- else if (izvele==0){ //Ja izveelas beigt darbu
- system("cls");
- cout << "Goodbye!" << endl;
- break;
- }
- else if (izvele==1){ //Ja izveelas ielogoties
- system("cls");
- ifstream lietotaji; //Atver failu lietotaji.txt lasiishanai
- lietotaji.open("lietotaji.txt");
- cout << "Tu izvelejies ielogoties" << endl;
- cout << "-------------------------------------------" << endl;
- cout << "Ieraksti savu lietotajvardu: ";
- cin >> username;
- cout << "Ieraksti savu paroli: ";
- cin >> password;
- while(!lietotaji.eof()){ //Kameer nav faila beigas
- skaits++; //Vaardu skaits failaa
- lietotaji >> vards;
- if (lietotaji.eof()){
- break;
- }
- }
- skaits/=2; //Jo failaa ir gan lietotaajvaardi, gan paroles
- lietotaji.clear(); //Notiira un aiziet uz faila saakumu
- lietotaji.seekg( ios::beg );
- while(!lietotaji.eof()){ //Kameer nav faila beigas, lasa katru vaardu
- lietotaji >> lietotajvards;
- lietotaji >> parole;
- if (username == lietotajvards && password == parole){ //Ja vaardi sakriit ar ievadiito
- system("cls");
- cout<<"Esi veiksmigi ielogojies!" << endl;
- izvele = 3; //Lai butu kaut kas cits papildus, programmas turpinashanai
- break;
- }
- else if (username != lietotajvards || password != parole){ //Ja vaardi nesakriit ar ievadiiito
- if (lietotaji.eof()){ //Ja ir faila beigas
- cout << "Nepareizi ievadits lietotajvards un/vai parole!" << endl;
- cout << "----------------------------------------------" << endl;
- }
- }
- }
- lietotaji.clear(); //Notiira uz aizver
- lietotaji.close();
- }
- else if (izvele!=0 && izvele!=1 && izvele!=2){
- cout << "Tada izvele neeksiste! Ludzu atkarto ievadi!" << endl;
- }
- }while(izvele!=3); //Kameer izveele nav vienaada ar 0
- //--------------------------------------------------------------------------
- //------------SPEELES---DALA------------------------------------------------
- if (izvele==3){
- cout << "----------Speele 'KUGU KAUJA'----------------" << endl;
- cout << endl;
- cout << "Speelee piedalaas kugi:" << endl;
- cout << "X - 4" << endl;
- cout << "XX - 3" << endl;
- cout << "XXX - 2" << endl;
- cout << "XXXX - 1" << endl;
- cout << endl;
- cout << ". - nav sauts" << endl;
- cout << "x - sauts, nav trapits" << endl;
- cout << (char)254 << " - sauts - trapits" << endl;
- cout << endl;
- cout << "Lai atrastu kugi, ievadiet kuga atrasanaas koordinaates: RINDA KOLONNA" << endl;
- cout << "Piemeeram, 3 C" << endl;
- cout << "---------------------------------------------" << endl;
- for(int i=0; i<N; i++){
- for (int j=0; j<N; j++){
- karte[i][j]='.';
- }
- }
- srand(time(NULL));
- kartes_numurs = rand() %5+1;
- name = kartes[kartes_numurs-1]; //Tiek izveeleets random vaards no failu masiiva
- ifstream infile(name.c_str()); //Atver random genereto failu lasiishanai
- for (int j=0; j<N; j++){
- infile >> karte2[j]; //Masiivaa ieraksta random kartes elementus
- }
- infile.close(); //Failu aizver
- do{
- izvadit_karti(karte, N); //Izvada neaizpildiitu karti
- cout << endl;
- cout << "Meklee kugi" << endl;
- do{ //Tik ilgi, kameer lietotaajs nav ievadiijis skaitli (1-10)
- cout << "rinda (1-10) ==> ";
- cin >> row;
- if (!(row>=1 && row<=10)){ //Ja nav ievadiits (1-10)
- cin.clear();
- cin.ignore(999,'\n');
- cout << "Tada rinda neeksiste! Luudzu atkaarto ievadi!" << endl;
- }
- }while(!(row>=1 && row<=10));
- do{ //Tik ilgi, kameer lietotaajs nav ievadiijis burtu (A-J)
- cout << "kolonna (A-J) ==> ";
- cin >> kolonna;
- if (!((kolonna>=65 && kolonna<=74) || (kolonna>=97 && kolonna<=106))){ //Ja nav ievadiits (a-j)
- cin.clear();
- cin.ignore(999,'\n');
- cout << "Tada kolonna neeksiste! Luudzu atkaarto ievadi!" << endl;
- }
- }while(!((kolonna>=65 && kolonna<=74) || (kolonna>=97 && kolonna<=106)));
- if (kolonna>=97 && kolonna<=106){ //Ja ir ievadiits mazais burts, paariet uz lielo burtu
- kolonna-=32;
- }
- column = kolonna - 64; //Paarveido burtu uz skaitli
- if (karte[row-1][column-1]==(char)254 || karte[row-1][column-1]=='x'){ //Ja pa laucinju jau ir shauts
- cout << "Pa sho laucinju jau esi meginaajis shaut! Meeginaajums netiks pieskaitiits gaajieniem" << endl;
- }
- else if (parbaude(karte, karte2, row, column)==1){ //Ja ir traapiits pa kugi
- skait++; //+1 traapiijumu skaits
- sk++; //Papildus traapiijumu skaitiitaajs
- nogrimis (karte2, row, column, sk);
- if (nogrimis (karte2, row, column, sk)==1){ //Nogrimushu kugu pzinjojumi
- cout << "----------------" << endl;
- cout << "Viens no X kugiem nogrima!" << endl;
- sk = 0; //Papildus skaitiitaajs nonulleejas, jo kugis nogrima
- }
- else if (nogrimis (karte2, row, column, sk)==2){
- cout << "----------------" << endl;
- cout << "Viens no XX kugiem nogrima!" << endl;
- sk = 0; //Papildus skaitiitaajs nonulleejas, jo kugis nogrima
- }
- else if (nogrimis (karte2, row, column, sk)==3){
- cout << "----------------" << endl;
- cout << "Viens no XXX kugiem nogrima!" << endl;
- sk = 0; //Papildus skaitiitaajs nonulleejas, jo kugis nogrima
- }
- else if (nogrimis (karte2, row, column, sk)==4){
- cout << "----------------" << endl;
- cout << "XXXX kugis nogrima!" << endl;
- sk = 0; //Papildus skaitiitaajs nonulleejas, jo kugis nogrima
- }
- cout << "------------------------------" << endl;
- gajiens++; //+1 Gaajiens
- }
- }while(skait!=20); //Tik ilgi kameer nav veel nosauti visi kugi
- izvadit_karti(karte, N); //Izvada beigu karti, kuraa var redzeet visus sasautos kugus
- cout << "Visi kugi ir sasauti! Speles beigas!" << endl;
- cout << "Visi kugi tika atrasti " << gajiens << " gajienos!" << endl;
- }
- return 0;
- }
- //---------------------------------------------------------------------------
- void izvadit_karti(char karte[][N+1], int n){ //izvada karti
- cout << " ABCDEFGHIJ" << endl;
- cout << " +----------" << endl;
- for(int i=0; i<N; i++){
- if(i+1!=10){
- cout << " " << i+1 << "|";
- }
- else if(i+1==10){
- cout << i+1 << "|";
- }
- for (int j=0; j<N; j++){
- cout << karte[i][j];
- }
- cout << endl;
- }
- }
- //----------------------------------------------------------------------------
- int parbaude (char karte[][N+1], char karte2[][N+1], int rin, int kol){ //Parbauda vai traapiits
- if(karte2[rin-1][kol-1]=='.'){
- cout << "GARAAM!" << endl;
- karte[rin-1][kol-1]= 'x';
- return 0;
- }
- else if (karte2[rin-1][kol-1]=='1' || karte2[rin-1][kol-1]=='2' || karte2[rin-1][kol-1]=='3' || karte2[rin-1][kol-1]=='4'){
- cout << "TRAPITS!" << endl;
- karte[rin-1][kol-1] = (char)254;
- return 1;
- }
- }
- //---------------------------------------------------------------------------
- int nogrimis (char karte2[][N+1], int rin, int kol, int skaitlis){ //Paarbauda vai nogrimis
- if (karte2[rin-1][kol-1]=='1' && skaitlis==1){
- return 1;
- }
- else if (karte2[rin-1][kol-1]=='2' && skaitlis==2){
- return 2;
- }
- else if (karte2[rin-1][kol-1]=='3' && skaitlis==3){
- return 3;
- }
- else if (karte2[rin-1][kol-1]=='4' && skaitlis==4){
- return 4;
- }
- else {
- return 0;
- }
- }
- //---------------------------------------------------------------------------
- int meklesana(string user, string name){ //Paarbauda vai failaa eksistee vaards
- ifstream lietotaji; //Atver failu lasiishanai
- lietotaji.open("lietotaji.txt");
- while (!lietotaji.eof()){
- lietotaji >> name; //Lasa katru vaardu pa vienam
- if (user == name){ //Ja nolasiitais vaards sakriit ar name
- lietotaji.clear(); //Notiira un aizver
- lietotaji.close();
- return 1;
- }
- }
- lietotaji.clear(); //Notiira un aizver
- lietotaji.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement