Advertisement
Guest User

Untitled

a guest
May 28th, 2016
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.67 KB | None | 0 0
  1. /*********************************************************
  2. Eva Berga, 1ITB1
  3. 10. seminaars, 3. uzdevums
  4.  
  5. Izveidot lietotaaja registraaciju.
  6. Lietotaja vards un parole tiek ierakstiti failaa lietotaji.txt
  7. Sisteema piedaavaa ielogoties, registreeties vai beigt darbu.
  8. Ielogoties var tikai jau registreti lietotaji.
  9. Parbauda vai registracija ievaditais vards jau nav aiznemts
  10. Neveiksmigas darbibas rezultataa paraada saakuma saskarni
  11.  
  12. Kugu izvietojuma kartes ierakstiitas atseviskos teksta failos
  13. Vienmeer paarbauda, ka lietotaajs ir ievadiijis pareizi
  14. Nodrosina, ka kolonnu var ievadiit ar lielo un ar mazo burtu
  15. Peec katra gaajiena izvada traapiits vai garaam
  16. Tiek paradits atbilstosh teksts, kad ir nogrimis kugis
  17. Speele turpinaas liidz sasauti visi kugi
  18. Speeles beigaas izvada gaajienu skaitu
  19.  
  20. Programma izveidota 21.05.2016
  21.  
  22. *********************************************************/
  23. #include <iostream>
  24. #include <fstream>
  25. #include <cstdlib>
  26. #include <time.h>
  27. #include <string>
  28. using namespace std;
  29. static const int N = 10; //Kartes izmeers
  30.  
  31. /**
  32. * izvadit_karti: Funkcija kartes izvadiishanai
  33. * parametri: karte[][N+1] - konkreeta karte, n - konstante
  34. * atgriezta veertiiba: nav
  35. */
  36. void izvadit_karti(char karte[][N+1], int n);
  37.  
  38. /**
  39. * parbaude: Paarbauda vai lietotaajs ir traapijis pa kugi vai nee
  40. * parametri: karte2[][N+1] - random karte, karte[][N+1] - neaizpildiita karte, n - konstante, rin - ievadiitaa rinda, kol - ievadiitaa kolonna
  41. * atgriezta veertiiba: 1 - ja traapiits, 0 - ja garaam
  42. */
  43. int parbaude (char karte[][N+1], char karte2[][N+1], int rin, int kol);
  44.  
  45. /**
  46. * nogrimis: Paarbauda vai kaads kugis iespejams ir nogrimis
  47. * parametri: karte2[][N+1] - random karte, rin - ievadiitaa rinda, kol - ievadiitaa kolonna, skaitlis - trapijumu skaits
  48. * 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
  49. */
  50. int nogrimis (char karte2[][N+1], int rin, int kol, int skaitlis);
  51.  
  52. /**
  53. * meklesana: parbauda vai lietotajvards jau ir aiznemts
  54. * parametri: user - lietotaja ievaditais vards, name - lietotajvards no faila
  55. * atgriezta veertiiba: 1 - ja vards eksiste, 0 - ja vards neeksiste
  56. */
  57. int meklesana(string user, string name);
  58.  
  59. int main(){
  60. int izvele; //Lietotaaja izveele dariit kaut ko
  61. string username; //Lietotaaja ievadiitais lietotaajvaards
  62. string password; //Lietotaaja ievadiitaa parole
  63. string lietotajvards; //Lietotaajvaards no faila lietotaji.txt
  64. string parole; //Parole no faila lietotaji.txt
  65. string vards; //Lai vareetu paliidzeet noteikt vaardu skaitu failaa
  66. int skaits=0; //Vaardu skaits failaa
  67. //--------------------------------------------------------------
  68. char kolonna; //Ievadiitaa char kolonna
  69. int row; //Ievadiitaa rinda
  70. int column; //Kolonnas burts tiek paarveidots uz skaitli (liidziigi rindaam)
  71. int skait = 0; //Skaitiitaajs, kursh skaita +1, kad lietotaajs traapa pa kugi
  72. int sk = 0; //Skaitiitaajs, kas tiks nonulleets, tikko kaa kaads kugis nogrims
  73. int gajiens = 0; //Gaajienu skaitiitaajs
  74. string name; //Pie random kartes genereeshanas
  75. int kartes_numurs; //Kartes masiiva kaartas numurs
  76. char karte2 [N][N+1]; //Random karte
  77. char karte [N][N+1]; //Neaizpildiita karte
  78. string kartes[5]={"Karte_1.txt", "Karte_2.txt", "Karte_3.txt", "Karte_4.txt", "Karte_5.txt"}; //tekstu faili
  79.  
  80. //----------------------------------------------------------------
  81. //-------------REGISTRACIJA---------------------------------------
  82. do{
  83. cout << "----------Speele 'KUGU KAUJA'----------------" << endl;
  84. cout << "Ielogoties var tikai jau registreti lietotaji!" << endl;
  85. cout << "----------------------------------------------" << endl;
  86. cout << "Ja velaties ielogoties, spiediet 1"<<endl;
  87. cout << "Ja velaties registreties, spiediet 2"<<endl;
  88. cout << "Ja velaties iziet, spiediet 0"<<endl<<endl;
  89. cout << "Jusu izvele: ";
  90. cin >> izvele;
  91.  
  92. if (izvele==2){ //Ja izveelas registreeties
  93. system("cls"); //Tiek notiiriits ekraans
  94. ofstream lietotaji; //Tiek atveerts fails lietotaji.txt, lai ierakstiitu jaunos datus faila beigaas
  95. lietotaji.open("lietotaji.txt", ios::in | ios::app);
  96.  
  97. cout << "Tu izvelejies registreties" << endl;
  98. cout << "-------------------------------------------" << endl;
  99. cout << "Ieraksti savu lietotajvardu ==> ";
  100. cin >> username;
  101.  
  102. if(meklesana(username, lietotajvards)==1){ //ja tads lietotajs jau failaa pastav
  103. cout<<"Sis lietotajvards jau ir aiznemts"<<endl;
  104. cout << "----------------------------------------------" << endl;
  105. }
  106. else { //Ja nepastav, tad tas tiek ierakstiits failaa
  107. lietotaji << username << " ";
  108. cout << "Ieraksti savu paroli ==> ";
  109. cin >> password;
  110. lietotaji << password << endl;
  111.  
  112. cout << "Lietotajs " << username << " ir veiksmigi registrets!" << endl;
  113. cout << "Lai speletu speli, tev ir jaielogojas sistema!" << endl;
  114. cout << "----------------------------------------------" << endl;
  115. }
  116. lietotaji.clear(); //Notiira un aizver failu
  117. lietotaji.close();
  118. }
  119. else if (izvele==0){ //Ja izveelas beigt darbu
  120. system("cls");
  121. cout << "Goodbye!" << endl;
  122. break;
  123. }
  124. else if (izvele==1){ //Ja izveelas ielogoties
  125. system("cls");
  126. ifstream lietotaji; //Atver failu lietotaji.txt lasiishanai
  127. lietotaji.open("lietotaji.txt");
  128.  
  129. cout << "Tu izvelejies ielogoties" << endl;
  130. cout << "-------------------------------------------" << endl;
  131. cout << "Ieraksti savu lietotajvardu: ";
  132. cin >> username;
  133. cout << "Ieraksti savu paroli: ";
  134. cin >> password;
  135. while(!lietotaji.eof()){ //Kameer nav faila beigas
  136. skaits++; //Vaardu skaits failaa
  137. lietotaji >> vards;
  138. if (lietotaji.eof()){
  139. break;
  140. }
  141. }
  142. skaits/=2; //Jo failaa ir gan lietotaajvaardi, gan paroles
  143. lietotaji.clear(); //Notiira un aiziet uz faila saakumu
  144. lietotaji.seekg( ios::beg );
  145.  
  146. while(!lietotaji.eof()){ //Kameer nav faila beigas, lasa katru vaardu
  147. lietotaji >> lietotajvards;
  148. lietotaji >> parole;
  149. if (username == lietotajvards && password == parole){ //Ja vaardi sakriit ar ievadiito
  150. system("cls");
  151. cout<<"Esi veiksmigi ielogojies!" << endl;
  152. izvele = 3; //Lai butu kaut kas cits papildus, programmas turpinashanai
  153. break;
  154. }
  155. else if (username != lietotajvards || password != parole){ //Ja vaardi nesakriit ar ievadiiito
  156. if (lietotaji.eof()){ //Ja ir faila beigas
  157. cout << "Nepareizi ievadits lietotajvards un/vai parole!" << endl;
  158. cout << "----------------------------------------------" << endl;
  159. }
  160. }
  161. }
  162. lietotaji.clear(); //Notiira uz aizver
  163. lietotaji.close();
  164. }
  165. else if (izvele!=0 && izvele!=1 && izvele!=2){
  166. cout << "Tada izvele neeksiste! Ludzu atkarto ievadi!" << endl;
  167. }
  168. }while(izvele!=3); //Kameer izveele nav vienaada ar 0
  169. //--------------------------------------------------------------------------
  170. //------------SPEELES---DALA------------------------------------------------
  171. if (izvele==3){
  172. cout << "----------Speele 'KUGU KAUJA'----------------" << endl;
  173. cout << endl;
  174. cout << "Speelee piedalaas kugi:" << endl;
  175. cout << "X - 4" << endl;
  176. cout << "XX - 3" << endl;
  177. cout << "XXX - 2" << endl;
  178. cout << "XXXX - 1" << endl;
  179. cout << endl;
  180. cout << ". - nav sauts" << endl;
  181. cout << "x - sauts, nav trapits" << endl;
  182. cout << (char)254 << " - sauts - trapits" << endl;
  183. cout << endl;
  184. cout << "Lai atrastu kugi, ievadiet kuga atrasanaas koordinaates: RINDA KOLONNA" << endl;
  185. cout << "Piemeeram, 3 C" << endl;
  186. cout << "---------------------------------------------" << endl;
  187.  
  188. for(int i=0; i<N; i++){
  189. for (int j=0; j<N; j++){
  190. karte[i][j]='.';
  191. }
  192. }
  193.  
  194. srand(time(NULL));
  195. kartes_numurs = rand() %5+1;
  196. name = kartes[kartes_numurs-1]; //Tiek izveeleets random vaards no failu masiiva
  197.  
  198. ifstream infile(name.c_str()); //Atver random genereto failu lasiishanai
  199. for (int j=0; j<N; j++){
  200. infile >> karte2[j]; //Masiivaa ieraksta random kartes elementus
  201. }
  202. infile.close(); //Failu aizver
  203.  
  204. do{
  205. izvadit_karti(karte, N); //Izvada neaizpildiitu karti
  206. cout << endl;
  207. cout << "Meklee kugi" << endl;
  208.  
  209. do{ //Tik ilgi, kameer lietotaajs nav ievadiijis skaitli (1-10)
  210. cout << "rinda (1-10) ==> ";
  211. cin >> row;
  212. if (!(row>=1 && row<=10)){ //Ja nav ievadiits (1-10)
  213. cin.clear();
  214. cin.ignore(999,'\n');
  215. cout << "Tada rinda neeksiste! Luudzu atkaarto ievadi!" << endl;
  216. }
  217. }while(!(row>=1 && row<=10));
  218.  
  219. do{ //Tik ilgi, kameer lietotaajs nav ievadiijis burtu (A-J)
  220. cout << "kolonna (A-J) ==> ";
  221. cin >> kolonna;
  222. if (!((kolonna>=65 && kolonna<=74) || (kolonna>=97 && kolonna<=106))){ //Ja nav ievadiits (a-j)
  223. cin.clear();
  224. cin.ignore(999,'\n');
  225. cout << "Tada kolonna neeksiste! Luudzu atkaarto ievadi!" << endl;
  226. }
  227. }while(!((kolonna>=65 && kolonna<=74) || (kolonna>=97 && kolonna<=106)));
  228.  
  229. if (kolonna>=97 && kolonna<=106){ //Ja ir ievadiits mazais burts, paariet uz lielo burtu
  230. kolonna-=32;
  231. }
  232. column = kolonna - 64; //Paarveido burtu uz skaitli
  233.  
  234. if (karte[row-1][column-1]==(char)254 || karte[row-1][column-1]=='x'){ //Ja pa laucinju jau ir shauts
  235. cout << "Pa sho laucinju jau esi meginaajis shaut! Meeginaajums netiks pieskaitiits gaajieniem" << endl;
  236. }
  237. else if (parbaude(karte, karte2, row, column)==1){ //Ja ir traapiits pa kugi
  238. skait++; //+1 traapiijumu skaits
  239. sk++; //Papildus traapiijumu skaitiitaajs
  240. nogrimis (karte2, row, column, sk);
  241.  
  242. if (nogrimis (karte2, row, column, sk)==1){ //Nogrimushu kugu pzinjojumi
  243. cout << "----------------" << endl;
  244. cout << "Viens no X kugiem nogrima!" << endl;
  245. sk = 0; //Papildus skaitiitaajs nonulleejas, jo kugis nogrima
  246. }
  247. else if (nogrimis (karte2, row, column, sk)==2){
  248. cout << "----------------" << endl;
  249. cout << "Viens no XX kugiem nogrima!" << endl;
  250. sk = 0; //Papildus skaitiitaajs nonulleejas, jo kugis nogrima
  251. }
  252. else if (nogrimis (karte2, row, column, sk)==3){
  253. cout << "----------------" << endl;
  254. cout << "Viens no XXX kugiem nogrima!" << endl;
  255. sk = 0; //Papildus skaitiitaajs nonulleejas, jo kugis nogrima
  256. }
  257. else if (nogrimis (karte2, row, column, sk)==4){
  258. cout << "----------------" << endl;
  259. cout << "XXXX kugis nogrima!" << endl;
  260. sk = 0; //Papildus skaitiitaajs nonulleejas, jo kugis nogrima
  261. }
  262. cout << "------------------------------" << endl;
  263. gajiens++; //+1 Gaajiens
  264. }
  265. }while(skait!=20); //Tik ilgi kameer nav veel nosauti visi kugi
  266.  
  267. izvadit_karti(karte, N); //Izvada beigu karti, kuraa var redzeet visus sasautos kugus
  268. cout << "Visi kugi ir sasauti! Speles beigas!" << endl;
  269. cout << "Visi kugi tika atrasti " << gajiens << " gajienos!" << endl;
  270. }
  271. return 0;
  272. }
  273.  
  274. //---------------------------------------------------------------------------
  275. void izvadit_karti(char karte[][N+1], int n){ //izvada karti
  276. cout << " ABCDEFGHIJ" << endl;
  277. cout << " +----------" << endl;
  278. for(int i=0; i<N; i++){
  279. if(i+1!=10){
  280. cout << " " << i+1 << "|";
  281. }
  282. else if(i+1==10){
  283. cout << i+1 << "|";
  284. }
  285. for (int j=0; j<N; j++){
  286. cout << karte[i][j];
  287. }
  288. cout << endl;
  289. }
  290. }
  291. //----------------------------------------------------------------------------
  292. int parbaude (char karte[][N+1], char karte2[][N+1], int rin, int kol){ //Parbauda vai traapiits
  293. if(karte2[rin-1][kol-1]=='.'){
  294. cout << "GARAAM!" << endl;
  295. karte[rin-1][kol-1]= 'x';
  296. return 0;
  297. }
  298. 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'){
  299. cout << "TRAPITS!" << endl;
  300. karte[rin-1][kol-1] = (char)254;
  301. return 1;
  302. }
  303. }
  304. //---------------------------------------------------------------------------
  305. int nogrimis (char karte2[][N+1], int rin, int kol, int skaitlis){ //Paarbauda vai nogrimis
  306. if (karte2[rin-1][kol-1]=='1' && skaitlis==1){
  307. return 1;
  308. }
  309. else if (karte2[rin-1][kol-1]=='2' && skaitlis==2){
  310. return 2;
  311. }
  312. else if (karte2[rin-1][kol-1]=='3' && skaitlis==3){
  313. return 3;
  314. }
  315. else if (karte2[rin-1][kol-1]=='4' && skaitlis==4){
  316. return 4;
  317. }
  318. else {
  319. return 0;
  320. }
  321. }
  322. //---------------------------------------------------------------------------
  323. int meklesana(string user, string name){ //Paarbauda vai failaa eksistee vaards
  324. ifstream lietotaji; //Atver failu lasiishanai
  325. lietotaji.open("lietotaji.txt");
  326. while (!lietotaji.eof()){
  327. lietotaji >> name; //Lasa katru vaardu pa vienam
  328. if (user == name){ //Ja nolasiitais vaards sakriit ar name
  329. lietotaji.clear(); //Notiira un aizver
  330. lietotaji.close();
  331. return 1;
  332. }
  333. }
  334. lietotaji.clear(); //Notiira un aizver
  335. lietotaji.close();
  336. return 0;
  337. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement