SorinAlex

Untitled

Jan 29th, 2014
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.35 KB | None | 0 0
  1. /* #include */
  2. #include <iostream>
  3. #include <string>
  4. using namespace std;
  5. #include <windows.h>
  6. #include <cstdlib>
  7. #include <ctime>
  8. #include <conio.h>
  9. char tabla[10],tasta;
  10. short scor1=0,scor2=0,modjoc;
  11. char nume1[20],nume2[20]="Calculator";
  12. HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
  13. CONSOLE_CURSOR_INFO CursorInfo;
  14. struct Culoare
  15. {
  16. Culoare(unsigned short c): cul(c) {}
  17. Culoare() {}
  18. unsigned short cul;
  19. };
  20.  
  21. ostream& operator<< (ostream& os,Culoare c)
  22. {
  23. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c.cul);
  24. return os;
  25. }
  26.  
  27. Culoare arraycul[9];
  28. const Culoare NC=7;
  29. const Culoare ROSU=12;
  30. const Culoare VERDE=10;
  31. const Culoare GOLD=6;
  32.  
  33. void curataecran()
  34. {
  35. COORD home;home.X=0;home.Y=0;DWORD Written;
  36. FillConsoleOutputCharacter(hOut,(TCHAR)' ',(80*300),home,&Written);
  37. FillConsoleOutputAttribute(hOut,7,(80*300),home,&Written);
  38. SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),home);
  39. SetConsoleTextAttribute(hOut,7);
  40. }
  41. void asteapta()
  42. {
  43. INPUT_RECORD InputRecord;
  44. DWORD Writtten;
  45. HANDLE hStdIn = GetStdHandle(STD_INPUT_HANDLE);
  46. while(true)
  47. {
  48. ReadConsoleInputA(hStdIn,&InputRecord,1,&Writtten);
  49. if(InputRecord.EventType==KEY_EVENT&&InputRecord.Event.KeyEvent.bKeyDown) break;
  50. }
  51. }
  52. void AiMove()
  53. {
  54. srand(time(0));
  55. do{
  56. tasta=rand()%9;
  57. }while(tabla[tasta]=='X'||tabla[tasta]=='0');
  58. tasta+=49;
  59. if(tabla[0]=='0'&&tabla[1]=='0'&&tabla[2]=='3') tasta='3';
  60. if(tabla[1]=='0'&&tabla[2]=='0'&&tabla[0]=='1') tasta='1';
  61. if(tabla[0]=='0'&&tabla[2]=='0'&&tabla[1]=='2') tasta='2';
  62. if(tabla[3]=='0'&&tabla[4]=='0'&&tabla[5]=='6') tasta='6';
  63. if(tabla[4]=='0'&&tabla[5]=='0'&&tabla[3]=='4') tasta='4';
  64. if(tabla[3]=='0'&&tabla[5]=='0'&&tabla[4]=='5') tasta='5';
  65. if(tabla[6]=='0'&&tabla[7]=='0'&&tabla[8]=='9') tasta='9';
  66. if(tabla[7]=='0'&&tabla[8]=='0'&&tabla[6]=='7') tasta='7';
  67. if(tabla[0]=='0'&&tabla[4]=='0'&&tabla[8]=='9') tasta='9';
  68. if(tabla[4]=='0'&&tabla[8]=='0'&&tabla[0]=='1') tasta='1';
  69. if(tabla[0]=='0'&&tabla[8]=='0'&&tabla[4]=='5') tasta='5';
  70. if(tabla[2]=='0'&&tabla[4]=='0'&&tabla[6]=='7') tasta='7';
  71. if(tabla[4]=='0'&&tabla[6]=='0'&&tabla[2]=='3') tasta='3';
  72. if(tabla[2]=='0'&&tabla[6]=='0'&&tabla[4]=='5') tasta='5';
  73. if(tabla[0]=='0'&&tabla[3]=='0'&&tabla[6]=='7') tasta='7';
  74. if(tabla[3]=='0'&&tabla[6]=='0'&&tabla[0]=='1') tasta='1';
  75. if(tabla[0]=='0'&&tabla[6]=='0'&&tabla[3]=='4') tasta='4';
  76. if(tabla[1]=='0'&&tabla[4]=='0'&&tabla[7]=='8') tasta='8';
  77. if(tabla[4]=='0'&&tabla[7]=='0'&&tabla[1]=='2') tasta='2';
  78. if(tabla[1]=='0'&&tabla[7]=='0'&&tabla[4]=='5') tasta='5';
  79. if(tabla[2]=='0'&&tabla[5]=='0'&&tabla[8]=='9') tasta='9';
  80. if(tabla[5]=='0'&&tabla[8]=='0'&&tabla[2]=='3') tasta='3';
  81. if(tabla[2]=='0'&&tabla[8]=='0'&&tabla[5]=='6') tasta='6';
  82. if(tabla[6]=='0'&&tabla[8]=='0'&&tabla[7]=='8') tasta='8';
  83. if(tabla[0]=='0'&&tabla[4]=='0'&&tabla[8]=='9') tasta='9';
  84. ////// blocare
  85. if(tabla[0]=='X'&&tabla[1]=='X'&&tabla[2]=='3') tasta='3';
  86. if(tabla[1]=='X'&&tabla[2]=='X'&&tabla[0]=='1') tasta='1';
  87. if(tabla[0]=='X'&&tabla[2]=='X'&&tabla[1]=='2') tasta='2';
  88. if(tabla[3]=='X'&&tabla[4]=='X'&&tabla[5]=='6') tasta='6';
  89. if(tabla[4]=='X'&&tabla[5]=='X'&&tabla[3]=='4') tasta='4';
  90. if(tabla[3]=='X'&&tabla[5]=='X'&&tabla[4]=='5') tasta='5';
  91. if(tabla[6]=='X'&&tabla[7]=='X'&&tabla[8]=='9') tasta='9';
  92. if(tabla[7]=='X'&&tabla[8]=='X'&&tabla[6]=='7') tasta='7';
  93. if(tabla[0]=='X'&&tabla[4]=='X'&&tabla[8]=='9') tasta='9';
  94. if(tabla[4]=='X'&&tabla[8]=='X'&&tabla[0]=='1') tasta='1';
  95. if(tabla[0]=='X'&&tabla[8]=='X'&&tabla[4]=='5') tasta='5';
  96. if(tabla[2]=='X'&&tabla[4]=='X'&&tabla[6]=='7') tasta='7';
  97. if(tabla[4]=='X'&&tabla[6]=='X'&&tabla[2]=='3') tasta='3';
  98. if(tabla[2]=='X'&&tabla[6]=='X'&&tabla[4]=='5') tasta='5';
  99. if(tabla[0]=='X'&&tabla[3]=='X'&&tabla[6]=='7') tasta='7';
  100. if(tabla[3]=='X'&&tabla[6]=='X'&&tabla[0]=='1') tasta='1';
  101. if(tabla[0]=='X'&&tabla[6]=='X'&&tabla[3]=='4') tasta='4';
  102. if(tabla[1]=='X'&&tabla[4]=='X'&&tabla[7]=='8') tasta='8';
  103. if(tabla[4]=='X'&&tabla[7]=='X'&&tabla[1]=='2') tasta='2';
  104. if(tabla[1]=='X'&&tabla[7]=='X'&&tabla[4]=='5') tasta='5';
  105. if(tabla[2]=='X'&&tabla[5]=='X'&&tabla[8]=='9') tasta='9';
  106. if(tabla[5]=='X'&&tabla[8]=='X'&&tabla[2]=='3') tasta='3';
  107. if(tabla[2]=='X'&&tabla[8]=='X'&&tabla[5]=='6') tasta='6';
  108. if(tabla[6]=='X'&&tabla[8]=='X'&&tabla[7]=='8') tasta='8';
  109. if(tabla[0]=='X'&&tabla[4]=='X'&&tabla[8]=='9') tasta='9';
  110. }
  111. void deseneaza_tabla()
  112. {
  113. cout
  114. <<nume1<<" : "<<scor1<<" "<<nume2<<" : "<<scor2<<endl<<endl
  115. <<" | | "<<endl
  116. <<" "<<arraycul[0]<<tabla[0]<<NC<<" | "<<arraycul[1]<<tabla[1]<<NC<<" | "<<arraycul[2]<<tabla[2]<<NC<<endl
  117. <<" | | "<<endl
  118. <<"-----|-----|-----"<<endl
  119. <<" | | "<<endl
  120. <<" "<<arraycul[3]<<tabla[3]<<NC<<" | "<<arraycul[4]<<tabla[4]<<NC<<" | "<<arraycul[5]<<tabla[5]<<NC<<endl
  121. <<" | | "<<endl
  122. <<"-----|-----|-----"<<endl
  123. <<" "<<arraycul[6]<<tabla[6]<<NC<<" | "<<arraycul[7]<<tabla[7]<<NC<<" | "<<arraycul[8]<<tabla[8]<<NC<<endl
  124. <<" | | "<<endl
  125. <<" | | "<<endl;
  126.  
  127. }
  128. short joculsaterminat()
  129. {
  130. if(tabla[0]==tabla[1]&&tabla[1]==tabla[2]) {arraycul[0].cul=13;arraycul[1].cul=13;arraycul[2].cul=13;return 1;}
  131. if(tabla[3]==tabla[4]&&tabla[4]==tabla[5]) {arraycul[3].cul=13;arraycul[4].cul=13;arraycul[5].cul=13;return 1;}
  132. if(tabla[6]==tabla[7]&&tabla[7]==tabla[8]) {arraycul[6].cul=13;arraycul[7].cul=13;arraycul[8].cul=13;return 1;}
  133. if(tabla[0]==tabla[3]&&tabla[3]==tabla[6]) {arraycul[0].cul=13;arraycul[3].cul=13;arraycul[6].cul=13;return 1;}
  134. if(tabla[1]==tabla[4]&&tabla[4]==tabla[7]) {arraycul[1].cul=13;arraycul[4].cul=13;arraycul[7].cul=13;return 1;}
  135. if(tabla[2]==tabla[5]&&tabla[5]==tabla[8]) {arraycul[2].cul=13;arraycul[5].cul=13;arraycul[8].cul=13;return 1;}
  136. if(tabla[0]==tabla[4]&&tabla[4]==tabla[8]) {arraycul[0].cul=13;arraycul[4].cul=13;arraycul[8].cul=13;return 1;}
  137. if(tabla[2]==tabla[4]&&tabla[4]==tabla[6]) {arraycul[2].cul=13;arraycul[4].cul=13;arraycul[6].cul=13;return 1;}
  138. if(!(tabla[0]=='1'||tabla[1]=='2'||tabla[2]=='3'||tabla[3]=='4'))
  139. if(!(tabla[4]=='5'||tabla[5]=='6'||tabla[6]=='7'||tabla[7]=='8'||tabla[8]=='9'))
  140. return -1;
  141. return 0;
  142. }
  143. void gotoxy_s(int x,int y,string text)
  144. {
  145. COORD CursorPos;
  146. CursorPos.X=x;CursorPos.Y=y;
  147. SetConsoleCursorPosition(hOut,CursorPos);
  148. cout<<text;
  149. }
  150. void gotoxy(short x,short y)
  151. {
  152. COORD CursorPos;
  153. CursorPos.X=x;CursorPos.Y=y;
  154. SetConsoleCursorPosition(hOut,CursorPos);
  155. }
  156. void curata()
  157. {
  158. gotoxy(0,0);
  159. for(int j=0;j<19;j++,cout<<" \n",Sleep(80));
  160. SetConsoleTextAttribute(hOut,7);
  161. gotoxy(0,0);
  162.  
  163. }
  164. short MainMenu()
  165. {
  166. GetConsoleCursorInfo(hOut,&CursorInfo);
  167. CursorInfo.bVisible=FALSE;
  168. SetConsoleCursorInfo(hOut,&CursorInfo);
  169. int len,y,i=0,border,j,cursor=0;
  170. string MainMenu[]={"In doi","Vs calculator","Instructiuni","Credite","Iesi din joc"};
  171. short MenuCords[]={3,5,7,9,11};
  172. string holder=" ";
  173. string X[]=
  174. {" "
  175. ," "
  176. ," "
  177. ," "
  178. ," "
  179. ," "
  180. ,"X X"
  181. ," X X "
  182. ," X X "
  183. ," X "
  184. ," X X "
  185. ," X X "
  186. ,"X X"
  187. ," "
  188. ," "
  189. ," "
  190. ," "
  191. ," "
  192. };
  193. string Zero[]=
  194. {" "
  195. ," "
  196. ," "
  197. ," "
  198. ," "
  199. ," O "
  200. ," O O "
  201. ,"O O"
  202. ,"O O"
  203. ,"O O"
  204. ," O O "
  205. ," O "
  206. ," "
  207. ," "
  208. ," "
  209. ," "
  210. ," "
  211. ," "
  212. };
  213.  
  214. len=17;
  215. MenuBeg:
  216. gotoxy(0,0);
  217. SetConsoleTextAttribute(hOut,FOREGROUND_BLUE|FOREGROUND_GREEN);
  218. cout<<"######################";for(int border=0;border<20;++border,cout<<'\xcd');cout<<'\xbb'<<endl;
  219. cout<<"# # \xba"<<endl
  220. <<"# # \xba"<<endl
  221. <<"# # \xba"<<endl
  222. <<"# # \xba"<<endl
  223. <<"# # \xba"<<endl
  224. <<"# # \xba"<<endl
  225. <<"# # \xba"<<endl
  226. <<"# # \xba"<<endl
  227. <<"# # \xba"<<endl
  228. <<"# # \xba"<<endl
  229. <<"# # \xba"<<endl
  230. <<"# # \xba"<<endl
  231. <<"# # \xba"<<endl
  232. <<"# # \xba"<<endl
  233. <<"# # \xba"<<endl
  234. <<"# # \xba"<<endl
  235. <<"# # \xba"<<endl
  236. <<"######################";for(int border=0;border<20;++border,cout<<'\xcd');cout<<'\xbc'<<endl;
  237. while(true){
  238. i++;
  239. for (y=0;y<len;y++)
  240. {
  241. SetConsoleTextAttribute(hOut,FOREGROUND_GREEN);
  242. gotoxy_s(2,1+y,X[y]);
  243. }
  244. for (y=0;y<len;y++)
  245. {
  246. SetConsoleTextAttribute(hOut,FOREGROUND_RED);
  247. gotoxy_s(13,1+y,Zero[y]);
  248. }
  249. holder = X[len];
  250. for (y=len;y>0;y--)
  251. {
  252. X[y]=X[y-1];
  253. }
  254. X[0]=holder;
  255. holder =Zero[0];
  256. for (y=0;y<len;y++)
  257. {
  258. Zero[y]=Zero[y+1];
  259. }
  260. Zero[len]=holder;
  261. for(j=0;j<5;j++)
  262. {
  263. gotoxy(24,MenuCords[j]);
  264. SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_INTENSITY);
  265. cout<<' '<<MainMenu[j];
  266. if(j==cursor)
  267. {
  268. gotoxy(24,MenuCords[j]);
  269. SetConsoleTextAttribute(hOut,BACKGROUND_BLUE|BACKGROUND_RED|BACKGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
  270. cout<<'>'<<MainMenu[cursor];
  271. SetConsoleTextAttribute(hOut,FOREGROUND_GREEN|FOREGROUND_INTENSITY);
  272. }
  273. }
  274. Sleep(80);
  275. if(GetAsyncKeyState(VK_UP)) {if(cursor==0) cursor=4; else --cursor;}
  276. if(GetAsyncKeyState(VK_DOWN)) {if(cursor==4) cursor=0; else ++cursor;}
  277. if(_kbhit()) if(getch()=='\r')
  278. {
  279. switch (cursor)
  280. {
  281. case 0: curata(); return 1; break;
  282. case 1: curata(); return 2; break;
  283. case 2: curata();
  284. SetConsoleTextAttribute(hOut,FOREGROUND_BLUE|FOREGROUND_GREEN);
  285. cout<<"###########################################"<<endl
  286. <<"# #"<<endl
  287. <<"# #"<<endl
  288. <<"# #"<<endl
  289. <<"# #"<<endl
  290. <<"# #"<<endl
  291. <<"# #"<<endl
  292. <<"# #"<<endl
  293. <<"# #"<<endl
  294. <<"# #"<<endl
  295. <<"# #"<<endl
  296. <<"# #"<<endl
  297. <<"# #"<<endl
  298. <<"# #"<<endl
  299. <<"# #"<<endl
  300. <<"# #"<<endl
  301. <<"# #"<<endl
  302. <<"# #"<<endl
  303. <<"###########################################"<<endl;
  304. gotoxy(16,3);
  305. cout<<GOLD<<"Instructiuni";
  306. gotoxy(5,5);
  307. cout<<"Tastele 1,2,3,4,5,6,7,8,9 pentru a";
  308. gotoxy(2,8);
  309. cout<<"selecta casuta ,ENTER pentru a confirma";
  310. gotoxy(12,16);
  311. cout<<"Apasa ENTER pentru a continua";
  312. while(getch()!='\r'); goto MenuBeg; break;
  313. case 3: curata();
  314. SetConsoleTextAttribute(hOut,FOREGROUND_BLUE|FOREGROUND_GREEN);
  315. cout<<"###########################################"<<endl
  316. <<"# #"<<endl
  317. <<"# #"<<endl
  318. <<"# #"<<endl
  319. <<"# #"<<endl
  320. <<"# #"<<endl
  321. <<"# #"<<endl
  322. <<"# #"<<endl
  323. <<"# #"<<endl
  324. <<"# #"<<endl
  325. <<"# #"<<endl
  326. <<"# #"<<endl
  327. <<"# #"<<endl
  328. <<"# #"<<endl
  329. <<"# #"<<endl
  330. <<"# #"<<endl
  331. <<"# #"<<endl
  332. <<"# #"<<endl
  333. <<"###########################################"<<endl;
  334. gotoxy(18,3);
  335. cout<<GOLD<<"Credite";
  336. gotoxy(7,5);
  337. cout<<"Programator : Paraschiv Sorin";
  338. gotoxy(9,8);
  339. cout<<"Designer : Popa Alexandru";
  340. gotoxy(5,11);
  341. cout<<"Inginer animatii : Silaghi Cosmin";
  342. gotoxy(12,16);
  343. cout<<"Apasa ENTER pentru a continua";
  344. while(getch()!='\r'); goto MenuBeg; break;
  345. case 4: return 3; break;
  346. }
  347. }
  348. if(i==len+1)
  349. {
  350. Sleep(100);i=0;
  351. }
  352. }
  353. }
  354. int main()
  355. {
  356. SetConsoleTitle("X si 0");
  357. modjoc=MainMenu();
  358. CursorInfo.bVisible=TRUE;
  359. CursorInfo.dwSize=100;
  360. SetConsoleCursorInfo(hOut,&CursorInfo);
  361. curataecran();
  362. if(modjoc==1)
  363. {
  364. cout<<"Nume jucator 1 : ";cin>>nume1;
  365. cout<<"Nume jucator 2 : ";cin>>nume2;
  366. }
  367. if(modjoc==2)
  368. {
  369. cout<<"Nume jucator : ";cin>>nume1;
  370. }
  371. if(modjoc==3) return 0;
  372. short numarmiscari=1;int verif;
  373. char simbol;char dinnou=' ';
  374. srand(time(0));
  375. inceput:
  376. verif=0;
  377. for(int i=0;i<10;i++) tabla[i]=i+49;
  378. for(int i=0;i<10;i++) arraycul[i].cul=8;
  379. while(verif==0)
  380. {
  381. curataecran();
  382. simbol=(numarmiscari%2)?'X':'0';
  383. deseneaza_tabla();
  384. if(simbol=='X') cout<<"Este randul lui "<<nume1<<" (X) "<<endl;
  385. if(simbol=='0') cout<<"Este randul lui "<<nume2<<" (0) "<<endl;
  386. if(modjoc==1)
  387. cin>>tasta;
  388. if(modjoc==2)
  389. {
  390. if(simbol=='X')
  391. cin>>tasta;
  392. if(simbol=='0')
  393. {
  394. Sleep(rand()%400+200);
  395. AiMove();
  396. }
  397. }
  398. switch(tasta)
  399. {
  400. case '1':if(tabla[0]=='1') {tabla[0]=simbol;++numarmiscari;if(simbol=='X') arraycul[0].cul=10;
  401. if(simbol=='0') arraycul[0].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
  402. case '2':if(tabla[1]=='2') {tabla[1]=simbol;++numarmiscari;if(simbol=='X') arraycul[1].cul=10;
  403. if(simbol=='0') arraycul[1].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
  404. case '3':if(tabla[2]=='3') {tabla[2]=simbol;++numarmiscari;if(simbol=='X') arraycul[2].cul=10;
  405. if(simbol=='0') arraycul[2].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
  406. case '4':if(tabla[3]=='4') {tabla[3]=simbol;++numarmiscari;if(simbol=='X') arraycul[3].cul=10;
  407. if(simbol=='0') arraycul[3].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
  408. case '5':if(tabla[4]=='5') {tabla[4]=simbol;++numarmiscari;if(simbol=='X') arraycul[4].cul=10;
  409. if(simbol=='0') arraycul[4].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
  410. case '6':if(tabla[5]=='6') {tabla[5]=simbol;++numarmiscari;if(simbol=='X') arraycul[5].cul=10;
  411. if(simbol=='0') arraycul[5].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
  412. case '7':if(tabla[6]=='7') {tabla[6]=simbol;++numarmiscari;if(simbol=='X') arraycul[6].cul=10;
  413. if(simbol=='0') arraycul[6].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
  414. case '8':if(tabla[7]=='8') {tabla[7]=simbol;++numarmiscari;if(simbol=='X') arraycul[7].cul=10;
  415. if(simbol=='0') arraycul[7].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
  416. case '9':if(tabla[8]=='9') {tabla[8]=simbol;++numarmiscari;if(simbol=='X') arraycul[8].cul=10;
  417. if(simbol=='0') arraycul[8].cul=12;} else {cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();}break;
  418. default:cout<<ROSU<<"\nMiscare invalida\n"<<NC;asteapta();
  419. }
  420. verif=joculsaterminat();
  421. if(verif==1)
  422. {
  423. curataecran();deseneaza_tabla();
  424. if(simbol=='X') {cout<<nume1<<" a castigat !\n\n";++scor1;cout<<"Doriti sa jucati din nou <y/n> : ";cin>>dinnou;}
  425. if(simbol=='0') {cout<<nume2<<" a castigat !\n\n";++scor2;cout<<"Doriti sa jucati din nou <y/n> : ";cin>>dinnou;}
  426. }
  427. if(verif==-1)
  428. {
  429. curataecran();deseneaza_tabla();
  430. cout<<VERDE<<"\nEgalitate !\n\n"<<NC;cout<<"Doriti sa jucati din nou <y/n> : ";cin>>dinnou;
  431. }
  432. if(dinnou=='y'||dinnou=='Y') {dinnou=0;goto inceput;}
  433. }
  434. asteapta();
  435. return 0;
  436. }
Advertisement
Add Comment
Please, Sign In to add comment