Advertisement
Erfan7135

Untitled

Sep 17th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.65 KB | None | 0 0
  1. #include"iGraphics.h"
  2. #include"glut.h"
  3. #include<stdio.h>
  4.  
  5. int turn = 0;
  6. int index[6][7] = {0};
  7. int index2[6][7]= {0};
  8. int yStop[50] = {0};
  9. int gameOver=0;
  10. int x[50] = {0}, y[50] = {0};
  11.  
  12. int red=1,yellow=0;
  13. int rx,ry=750;
  14. int column;
  15. int check(void);
  16.  
  17. void drawBall_01(int p, int q)
  18. {
  19. iSetColor(255,0,0);
  20. iFilledCircle(p,q,45);
  21. // iSetColor(219,225,211);
  22. // iFilledCircle(p,q,4);
  23. }
  24.  
  25. void drawBall_02(int p, int q)
  26. {
  27. iSetColor(255,255,0);
  28. iFilledCircle(p,q,45);
  29. }
  30.  
  31. void drawBoard(void)
  32. {
  33. iSetColor(255,255,255);
  34. iRectangle(295,20,710,610);
  35. iRectangle(296,21,708,608);
  36. iRectangle(297,22,706,606);
  37. // iRectangle(298,23,704,604);
  38.  
  39. for(int i=0;i<7;i++){
  40. for(int j=0;j<6;j++){
  41. iCircle(350+i*100, 75+j*100, 44);
  42. iCircle(350+i*100, 75+j*100, 45);
  43. iCircle(350+i*100, 75+j*100, 46);
  44. // iCircle(350+i*100, 75+j*100, 47);
  45. }
  46. }
  47. }
  48. void moveBalls(void)
  49. {
  50. for(int i=0;i<turn;i++){
  51. if(y[i]>yStop[i]){
  52. y[i] = y[i]-20;
  53. }
  54. }
  55. if(y[turn-1]==yStop[turn-1]){
  56. if(gameOver==0) gameOver = check();
  57. }
  58. }
  59.  
  60. int check(void)
  61. {
  62. //vertical check
  63. for(int row=0;row<3;row++){
  64. for(int col=0;col<7;col++){
  65. if( (index[row][col] != 0) && (index[row][col] != 3) && (index[row][col] != 4) && (index [row][col] == index[row+1][col]) && (index [row][col] == index[row+2][col]) && (index [row][col] == index[row+3][col]) ){
  66. return index[row][col];
  67. }
  68. }
  69. }
  70.  
  71. //horizontal check
  72. for(int col=0;col<4;col++){
  73. for(int row=0;row<6;row++){
  74. if( (index[row][col] != 0) && (index[row][col] != 3) && (index[row][col] != 4) && (index [row][col] == index[row][col+1]) && (index [row][col] == index[row][col+2]) && (index [row][col] == index[row][col+3]) ){
  75. return index[row][col];
  76. }
  77. }
  78. }
  79.  
  80. //diagonal check
  81. for(int col=0;col<4;col++){
  82. //right and up
  83. for(int row=0;row<3;row++){
  84. if( (index[row][col] != 0) && (index[row][col] != 3) && (index[row][col] != 4) && (index [row][col] == index[row+1][col+1]) && (index [row][col] == index[row+2][col+2]) && (index [row][col] == index[row+3][col+3]) ){
  85. return index[row][col];
  86. }
  87. }
  88. //right and down
  89. for(int row=5;row>2;row--){
  90. if( (index[row][col] != 0) && (index[row][col] != 3) && (index[row][col] != 4) && (index [row][col] == index[row-1][col+1]) && (index [row][col] == index[row-2][col+2]) && (index [row][col] == index[row-3][col+3]) ){
  91. return index[row][col];
  92. }
  93. }
  94. }
  95.  
  96. if(index[5][0] && index[5][1] && index[5][2] && index[5][3] && index[5][4] && index[5][5] && index[5][6] && !gameOver)
  97. return 3;
  98.  
  99. return 0;
  100. }
  101. int check2(void)
  102. {
  103. //vertical check
  104. for(int row=0;row<3;row++){
  105. for(int col=0;col<7;col++){
  106. if( (index2[row][col] != 0) && (index2 [row][col] == index2[row+1][col]) && (index2 [row][col] == index2[row+2][col]) && (index2 [row][col] == index2[row+3][col]) ){
  107. return index2[row][col];
  108. }
  109. }
  110. }
  111.  
  112. //horizontal check
  113. for(int col=0;col<4;col++){
  114. for(int row=0;row<6;row++){
  115. if( (index2[row][col] != 0) && (index2 [row][col] == index2[row][col+1]) && (index2 [row][col] == index2[row][col+2]) && (index2 [row][col] == index2[row][col+3]) ){
  116. return index2[row][col];
  117. }
  118. }
  119. }
  120.  
  121. //diagonal check
  122. for(int col=0;col<4;col++){
  123. //right and up
  124. for(int row=0;row<3;row++){
  125. if( (index2[row][col] != 0) && (index2 [row][col] == index2[row+1][col+1]) && (index2 [row][col] == index2[row+2][col+2]) && (index2 [row][col] == index2[row+3][col+3]) ){
  126. return index2[row][col];
  127. }
  128. }
  129. //right and down
  130. for(int row=5;row>2;row--){
  131. if( (index2[row][col] != 0) && (index2 [row][col] == index2[row-1][col+1]) && (index2 [row][col] == index2[row-2][col+2]) && (index2 [row][col] == index2[row-3][col+3]) ){
  132. return index2[row][col];
  133. }
  134. }
  135. }
  136.  
  137. if(index2[5][0] && index2[5][1] && index2[5][2] && index2[5][3] && index2[5][4] && index2[5][5] && index2[5][6] && !gameOver)
  138. return 3;
  139.  
  140. return 0;
  141. }
  142.  
  143. int check3(void)
  144. {
  145. //vertical check
  146. for(int row=0;row<3;row++){
  147. for(int col=0;col<7;col++){
  148. if( (index2[row][col] != 0) && (index2 [row][col] == index2[row+1][col]) && (index2 [row][col] == index2[row+2][col]) ){
  149. return index2[row][col];
  150. }
  151. }
  152. }
  153.  
  154. //horizontal check
  155. for(int col=0;col<4;col++){
  156. for(int row=0;row<6;row++){
  157. if( (index2[row][col] != 0) && (index2 [row][col] == index2[row][col+1]) && (index2 [row][col] == index2[row][col+2])){
  158. return index2[row][col];
  159. }
  160. }
  161. }
  162.  
  163. //diagonal check
  164. for(int col=0;col<4;col++){
  165. //right and up
  166. for(int row=0;row<3;row++){
  167. if( (index2[row][col] != 0) && (index2 [row][col] == index2[row+1][col+1]) && (index2 [row][col] == index2[row+2][col+2])){
  168. return index2[row][col];
  169. }
  170. }
  171. //right and down
  172. for(int row=5;row>2;row--){
  173. if( (index2[row][col] != 0) && (index2 [row][col] == index2[row-1][col+1]) && (index2 [row][col] == index2[row-2][col+2])){
  174. return index2[row][col];
  175. }
  176. }
  177. }
  178.  
  179. if(index2[5][0] && index2[5][1] && index2[5][2] && index2[5][3] && index2[5][4] && index2[5][5] && index2[5][6] && !gameOver)
  180. return 3;
  181.  
  182. return 0;
  183. }
  184.  
  185.  
  186. void iDraw(){
  187. iClear();
  188. for(int i=0; i<turn; i++){
  189. if(i%2==0)
  190. drawBall_01(x[i],y[i]);
  191. else
  192. drawBall_02(x[i],y[i]);
  193. }
  194. drawBoard();
  195. }
  196.  
  197. void iKeyboard(unsigned char key){
  198.  
  199. }
  200.  
  201. void iSpecialKeyboard(unsigned char key){}
  202.  
  203. void AI(){
  204. int l=0,d=0;
  205.  
  206. for(int i=0;i<7;i++){
  207. int k=0;
  208. for(int j=0;j<6;j++){
  209. if(index2[j][i]==0){
  210. index2[j][i]=2;
  211. int m=check2();
  212. if(m==2){index2[j][i]=0;column=i;k=1;l=1;/*printf("2\n");*/}
  213. index2[j][i]=0;
  214. break;
  215. }
  216. }
  217. if(k)break;
  218. }
  219. if(!l){
  220. for(int i=0;i<7;i++){
  221. int k=0;
  222. for(int j=0;j<6;j++){
  223. if(index2[j][i]==0){
  224. index2[j][i]=1;
  225. int m=check2();
  226. if(m==1){index2[j][i]=0;column=i;k=1;d=1;/*printf("1\n");*/}
  227. index2[j][i]=0;
  228. break;
  229. }
  230. }
  231. if(k)break;
  232. }
  233. }
  234.  
  235. if(!l && !d){
  236. l=0;d=0;
  237. //printf("rand\n");
  238. again:
  239. for(int i=0;i<7;i++){
  240. int k=0;
  241. for(int j=0;j<6;j++){
  242. if(index2[j][i]==0){
  243. index2[j][i]=1;
  244. int m=check3();
  245. if(m==1){index2[j][i]=0;column=i;k=1;l=1;/*printf("2\n");*/}
  246. index2[j][i]=0;
  247. break;
  248. }
  249. }
  250. if(k)break;
  251. }
  252. if(!l){
  253. for(int i=0;i<7;i++){
  254. int k=0;
  255. for(int j=0;j<6;j++){
  256. if(index2[j][i]==0){
  257. index2[j][i]=2;
  258. int m=check3();
  259. if(m==2){index2[j][i]=0;column=i;k=1;d=1;/*printf("1\n");*/}
  260. index2[j][i]=0;
  261. break;
  262. }
  263. }
  264. if(k)break;
  265. }
  266. }
  267. // if(!l2 && !d2){
  268. // //printf("rand\n");
  269. // again:
  270. // column=(rand()%(rand()%100+rand()%150+rand()%300))%6;
  271. int row;
  272. for(int i=0;i<6;i++){
  273. //printf("%d ",i);
  274. if(index2[i][column]==0){
  275. row=i;
  276. //printf("\n");
  277. break;
  278. }
  279. }
  280. if(row==6)goto again;
  281. index2[row][column]=2;
  282. index2[row+1][column]=1;
  283. int m=check2();
  284. index2[row][column]=2;
  285. index2[row+1][column]=0;
  286. if(m==1)goto again;
  287. }
  288. // for(int i=5;i>=0;i--){
  289. // for(int j=6;j>=0;j--){
  290. // printf("%d ",index[i][j]);
  291. // }
  292. // printf("\n");
  293. // }
  294. x[turn]=350+column*100;
  295. y[turn]=675;
  296.  
  297. for(int i=5; i>=0; i--){
  298. if( index[i][column] ){
  299. yStop[turn] = 75+100*(i+1);
  300. index[i+1][column] = 2;
  301. break;
  302. }
  303. if(i==0 && index[i][column]==0){
  304. yStop[turn] = 75;
  305. index[i][column] = 2;
  306. break;
  307. }
  308. }
  309. turn++;
  310. }
  311.  
  312. void iMouse(int button, int state, int mx,int my){
  313. if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN && !gameOver && y[turn-1]==yStop[turn-1]){
  314.  
  315. // itoa(mx,str,10);
  316. // itoa(my,str2,10);
  317.  
  318. if(295<mx && mx<400 && index[5][0]==0){
  319. column=0;
  320. }
  321. else if(400<mx && mx<500 && index[5][1]==0){
  322. column=1;
  323. }
  324. else if(500<mx && mx<600 && index[5][2]==0){
  325. column=2;
  326. }
  327. else if(600<mx && mx<700 && index[5][3]==0){
  328. column=3;
  329. }
  330. else if(700<mx && mx<800 && index[5][4]==0){
  331. column=4;
  332. }
  333. else if(800<mx && mx<900 && index[5][5]==0){
  334. column=5;
  335. }
  336. else if(900<mx && mx<1005 && index[5][6]==0){
  337. column=6;
  338. }
  339.  
  340. if(mx>295 && mx<1005 && index[5][column]==0){
  341. x[turn]=350+column*100;
  342. y[turn]=675;
  343.  
  344. for(int i=5; i>=0; i--){
  345. if( index[i][column] ){
  346. yStop[turn] = 75+100*(i+1);
  347. if(turn%2==0)
  348. index[i+1][column] = 1;
  349. else
  350. index[i+1][column] = 2;
  351. break;
  352. }
  353. if(i==0 && index[i][column]==0){
  354. yStop[turn] = 75;
  355. if(turn%2==0)
  356. index[i][column] = 1;
  357. else
  358. index[i][column] = 2;
  359. break;
  360. }
  361. }
  362. turn++;
  363. if(check()!=1){
  364.  
  365. for(int i=5;i>=0;i--){
  366. for(int j=6;j>=0;j--){
  367. index2[i][j]=index[i][j];
  368. //printf("%d ",index[i][j]);
  369. }
  370. //printf("\n");
  371. }
  372. if(turn%2!=0)AI();
  373. }
  374. }
  375. }
  376. }
  377.  
  378. void iMouseMove(int mx,int my){
  379. if(mx>295 && mx<400)
  380. column = 0;
  381. else if(mx>400 && mx<500)
  382. column = 1;
  383. else if(mx>500 && mx<600)
  384. column = 2;
  385. else if(mx>600 && mx<700)
  386. column = 3;
  387. else if(mx>700 && mx<800)
  388. column = 4;
  389. else if(mx>800 && mx<900)
  390. column = 5;
  391. else if(mx>900 && mx<1000)
  392. column = 6;
  393. }
  394.  
  395. int main(){
  396. iSetTimer(1, moveBalls);
  397. iInitialize(1366,768,"4 in a Row");
  398. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement