Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2014
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.92 KB | None | 0 0
  1. /*
  2. author: S. M. Shahriar Nirjon
  3. last modified: August 8, 2008
  4. */
  5. # include "iGraphics.h"
  6. # include "mmsystem.h"
  7. # include <conio.h>
  8. # include <stdlib.h>
  9. # define R 1
  10. # define L 2
  11. # define U 3
  12. # define D 4
  13.  
  14. struct coordinate
  15. {
  16. int x;
  17. int y;
  18. int direction;
  19. };
  20.  
  21. int len,length,key,f=0,fx,fy,p,x,y,start,b,die=0,d;
  22.  
  23. struct coordinate temp,head,body[30],turn[50],food;
  24.  
  25. void move()
  26. {
  27. PlaySound((LPCSTR)"1.wav", NULL, SND_ASYNC | SND_LOOP);
  28. int i=0,j=0,diff;
  29. if(f==0)
  30. {
  31. x=rand()%49;
  32. fx=50+10*x;
  33. y=rand()%29;
  34. fy=50+10*y;
  35. f=1;
  36. }
  37. if(start==0)
  38. {
  39. head.x+=10;
  40. for(i=0;i<len;i++)
  41. {
  42. body[i].x+=10;
  43. body[i].direction=R;
  44. }
  45. }
  46. if(head.direction==U)
  47. {
  48. if(head.x==fx&&head.y==fy)
  49. {
  50. f=0;
  51. PlaySound((LPCSTR)"2.wav", NULL, SND_ASYNC | SND_LOOP);
  52. /*if(body[len-1].x==fx&&body[len-1].y==fy)
  53. {
  54. body[len].x=fx;
  55. body[len].y=fy;
  56. }*/
  57. b=1;
  58. len++;
  59. }
  60. if(p==R)
  61. {
  62. turn[j]=head;
  63. head.y+=10;
  64. //body[0].y+=10;
  65. //body[0].direction=U;
  66. for(i=0;i<len;i++)
  67. {
  68. if(body[i].x==turn[j].x)
  69. {
  70. body[i].y+=10;
  71. body[i].direction=U;
  72. }
  73. else
  74. body[i].x+=10;
  75. }
  76. /*if(b==1)
  77. {
  78. body[len].x=turn[0].x;
  79. body[len].y=turn[0].y;
  80. b=0;
  81. }*/
  82. j++;
  83. }
  84. else if(p==L)
  85. {
  86. turn[j]=head;
  87. head.y+=10;
  88. //body[0].y+=10;
  89. //body[0].direction=U;
  90. for(i=0;i<len;i++)
  91. {
  92. if(body[i].x==turn[j].x)
  93. {
  94. body[i].y+=10;
  95. }
  96. else
  97. body[i].x-=10;
  98. }
  99. /*if(b==1)
  100. {
  101. body[len].x=turn[0].x;
  102. body[len].y=turn[0].y;
  103. b=0;
  104. }*/
  105. j++;
  106. }
  107. }
  108. else if(head.direction==R)
  109. {
  110. if(head.x==fx&&head.y==fy)
  111. {
  112. f=0;
  113. /*if(body[len-1].x==fx&&body[len-1].y==fy)
  114. {
  115. body[len].x=fx;
  116. body[len].y=fy;
  117. }*/
  118. PlaySound((LPCSTR)"2.wav", NULL, SND_ASYNC | SND_LOOP);
  119. b=1;
  120. len++;
  121. }
  122. if(p==U)
  123. {
  124. turn[j]=head;
  125. head.x+=10;
  126. //body[0].x+=10;
  127. //body[0].direction=R;
  128. for(i=0;i<len;i++)
  129. {
  130. if(body[i].y==turn[j].y)
  131. {
  132. body[i].x+=10;
  133. }
  134. else
  135. body[i].y+=10;
  136. }
  137. /*if(b==1)
  138. {
  139. body[len].x=turn[1].x;
  140. body[len].y=turn[1].y;
  141. b=0;
  142. }*/
  143. j++;
  144. }
  145. else if(p==D)
  146. {
  147. turn[j]=head;
  148. head.x+=10;
  149. //body[0].x+=10;
  150. //body[0].direction=R;
  151. for(i=0;i<len;i++)
  152. {
  153. if(body[i].y==turn[j].y)
  154. {
  155. body[i].x+=10;
  156. }
  157. else
  158. body[i].y-=10;
  159. }
  160. /*if(b==1)
  161. {
  162. body[len].x=turn[1].x;
  163. body[len].y=turn[1].y;
  164. b=0;
  165. }*/
  166. j++;
  167. }
  168. }
  169. if(head.direction==L)
  170. {
  171. if(head.x==fx&&head.y==fy)
  172. {
  173. f=0;
  174. /*if(body[len-1].x==fx&&body[len-1].y==fy)
  175. {
  176. body[len].x=fx;
  177. body[len].y=fy;
  178. }*/
  179. b=1;
  180. len++;
  181. }
  182. if(p==U)
  183. {
  184. turn[j]=head;
  185. head.x-=10;
  186. //body[0].x-=10;
  187. //body[0].direction=L;
  188. for(i=0;i<len;i++)
  189. {
  190. if(body[i].y==turn[j].y)
  191. {
  192. body[i].x-=10;
  193. }
  194. else
  195. body[i].y+=10;
  196. }
  197. /*if(b==1)
  198. {
  199. body[len].x=turn[2].x;
  200. body[len].y=turn[2].y;
  201. b=0;
  202. }*/
  203. j++;
  204. }
  205. else if(p==D)
  206. {
  207. turn[j]=head;
  208. head.x-=10;
  209. //body[0].x-=10;
  210. //body[0].direction=L;
  211. for(i=0;i<len;i++)
  212. {
  213. if(body[i].y==turn[j].y)
  214. {
  215. body[i].x-=10;
  216. }
  217. else
  218. body[i].y-=10;
  219. }
  220. /*if(b==1)
  221. {
  222. body[len].x=turn[2].x;
  223. body[len].y=turn[2].y;
  224. b=0;
  225. }*/
  226. j++;
  227. }
  228. }
  229. if(head.direction==D)
  230. {
  231. if(head.x==fx&&head.y==fy)
  232. {
  233. f=0;
  234. /*if(body[len-1].x==fx&&body[len-1].y==fy)
  235. {
  236. body[len].x=fx;
  237. body[len].y=fy;
  238. }*/
  239. PlaySound((LPCSTR)"2.wav", NULL, SND_ASYNC | SND_LOOP);
  240. b=1;
  241. len++;
  242. }
  243. if(p==R)
  244. {
  245. turn[j]=head;
  246. head.y-=10;
  247. //body[0].y-=10;
  248. //body[0].direction=D;
  249. for(i=0;i<len;i++)
  250. {
  251. if(body[i].x==turn[j].x)
  252. {
  253. body[i].y-=10;
  254. }
  255. else
  256. body[i].x+=10;
  257. }
  258. /*if(b==1)
  259. {
  260. body[len].x=turn[3].x;
  261. body[len].y=turn[3].y;
  262. b=0;
  263. }*/
  264. j++;
  265. }
  266. else if(p==L)
  267. {
  268. turn[j]=head;
  269. head.y-=10;
  270. //body[0].y-=10;
  271. //body[0].direction=D;
  272. for(i=0;i<len;i++)
  273. {
  274. if(body[i].x==turn[j].x)
  275. {
  276. body[i].y-=10;
  277. }
  278. else
  279. body[i].x-=10;
  280. }
  281. /*if(b==1)
  282. {
  283. body[len].x=turn[3].x;
  284. body[len].y=turn[3].y;
  285. b=0;
  286. }*/
  287. j++;
  288. }
  289. }
  290. if(head.x<=40||head.x>=540||head.y<=40||head.y>=340)
  291. {
  292. die=1;
  293. iPauseTimer(0);
  294. }
  295. }
  296.  
  297.  
  298. /*
  299. function iDraw() is called again and again by the system.
  300. */
  301. void iDraw()
  302. {
  303. //place your drawing codes here
  304. iClear();
  305.  
  306. iShowBMP(0,0,"1.bmp");
  307. iSetColor(255,255,255);
  308. iRectangle(75,238,65,29);
  309. iRectangle(304,35,79,36);
  310. iRectangle(137,35,95,33);
  311. iRectangle(465,38,76,30);
  312.  
  313. /*iSetColor(0,0,0);
  314. iRectangle(500,300,150,60);
  315. iText(535,320,"START",GLUT_BITMAP_TIMES_ROMAN_24);
  316. iRectangle(500,100,150,60);
  317. iText(540,120,"EXIT",GLUT_BITMAP_TIMES_ROMAN_24); */
  318. if(d==1)
  319. {
  320. iClear();
  321. iShowBMP(0,0,"10.bmp");
  322.  
  323. iSetColor(255,255,255);
  324. if(die==1)
  325. {
  326. iText(250,200,"died");
  327. }
  328. iSetColor(255,255,255);
  329. iRectangle(40,40,500,300);
  330. iSetColor(100,0,0);
  331. iFilledCircle(head.x,head.y,5);
  332. iSetColor(160,0,0);
  333. if(b==1)
  334. {
  335. if(head.direction==L)
  336. {
  337. body[len-1].x=body[len-2].x+=10;
  338. body[len-1].y=body[len-2].y;
  339. b=0;
  340. iFilledCircle(body[len-1].x,body[len-1].y,5);
  341. }
  342. else if(head.direction==R)
  343. {
  344. body[len-1].x=body[len-2].x-=10;
  345. body[len-1].y=body[len-2].y;
  346. b=0;
  347. iFilledCircle(body[len-1].x,body[len-1].y,5);
  348. }
  349. else if(head.direction==U)
  350. {
  351. body[len-1].x=body[len-2].x;
  352. body[len-1].y=body[len-2].y-=10;
  353. b=0;
  354. iFilledCircle(body[len-1].x,body[len-1].y,5);
  355. }
  356. if(head.direction==D)
  357. {
  358. body[len-1].x=body[len-2].x;
  359. body[len-1].y=body[len-2].y+=10;
  360. b=0;
  361. iFilledCircle(body[len-1].x,body[len-1].y,5);
  362. }
  363. }
  364. //iSetColor(0,170,0);
  365.  
  366. for(int i=0;i<100;i++)
  367. {
  368. if(i%2==0)
  369. iSetColor(200,0,0);
  370. else
  371. iSetColor(150,0,0);
  372. iFilledCircle(body[i].x,body[i].y,5);
  373. if(i==len)
  374. break;
  375. }
  376. //iFilledCircle(body[4].x,body[4].y,5);
  377. /*if(b==1)
  378. {
  379. body[i-1].x=body[i-2].x+10;
  380. iFilledCircle(body[i-1].x,body[i-1].y,5);
  381. b=0;
  382. }*/
  383.  
  384. //iFilledCircle(body[5].x,body[5].y,5);
  385. /*if(b==1)
  386. {
  387. if(head.direction==L)
  388. {
  389. body[len].x=body[i-1].x+=10;
  390. body[len].y=body[i-1].y;
  391. b=0;
  392. }
  393. else if(head.direction==R)
  394. {
  395. body[len].x=body[i-1].x-=10;
  396. body[len].y=body[i-1].y;
  397. b=0;
  398. }
  399. else if(head.direction==U)
  400. {
  401. body[len].x=body[i-1].x;
  402. body[len].y=body[i-1].y-=10;
  403. b=0;
  404. }
  405. if(head.direction==D)
  406. {
  407. body[len].x=body[i-1].x;
  408. body[len].y=body[i-1].y+=10;
  409. b=0;
  410. }
  411. }*/
  412. if(f==1)
  413. {
  414. iSetColor(250,250,250);
  415. iFilledCircle(fx,fy,4);
  416. /*for(i=0;i<len;i++)
  417. {
  418. if(body[i].x!=fx&&body[i].y!=fy)
  419. {
  420. iFilledCircle(fx,fy,4);
  421. f=0;
  422. }
  423. else
  424. f=0;
  425. }*/
  426. }
  427. }
  428. else if(d==2)
  429. {
  430. iClear();
  431. iShowBMP(0,0,"4.bmp");
  432. }
  433. else if(d==3)
  434. {
  435. iClear();
  436. iShowBMP(0,0,"3.bmp");
  437. }
  438. else if(d==4)
  439. {
  440. iClear();
  441. iShowBMP(0,0,"5.bmp");
  442. //exit(0);
  443. }
  444. }
  445.  
  446. /*
  447. function iMouseMove() is called when the user presses and drags the mouse.
  448. (mx, my) is the position where the mouse pointer is.
  449. */
  450. void iMouseMove(int mx, int my)
  451. {
  452. //place your codes here
  453. }
  454.  
  455. /*
  456. function iMouse() is called when the user presses/releases the mouse.
  457. (mx, my) is the position where the mouse pointer is.
  458. */
  459. void iMouse(int button, int state, int mx, int my)
  460. {
  461. if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
  462. {
  463. //place your codes here
  464. if((mx>=76&&mx<=139)&&(my>=239&&my<=268))
  465. {
  466. d=1;
  467. iResumeTimer(0);
  468. }
  469. if((mx>=304&&mx<=383)&&(my>=36&&my<=74))
  470. {
  471. d=2;
  472. }
  473. if((mx>=137&&mx<=231)&&(my>=36&&my<=70))
  474. {
  475. d=3;
  476. }
  477. if((mx>=464&&mx<=540)&&(my>=39&&my<=70))
  478. {
  479. d=4;
  480. }
  481. printf("%d %d\n",mx,my);
  482. }
  483. if(button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN)
  484. {
  485. //place your codes here
  486. }
  487. }
  488.  
  489. /*
  490. function iKeyboard() is called whenever the user hits a key in keyboard.
  491. key- holds the ASCII value of the key pressed.
  492. */
  493. void iKeyboard(unsigned char key)
  494. {
  495. if(key == 'p')
  496. {
  497. iPauseTimer(0);
  498. //do something with 'q'
  499. }
  500. if(key == 'r')
  501. {
  502. iResumeTimer(0);
  503. //do something with 'q'
  504. }
  505. //place your codes for other keys here
  506. }
  507.  
  508. /*
  509. function iSpecialKeyboard() is called whenver user hits special keys like-
  510. function keys, home, end, pg up, pg down, arraows etc. you have to use
  511. appropriate constants to detect them. A list is:
  512. GLUT_KEY_F1, GLUT_KEY_F2, GLUT_KEY_F3, GLUT_KEY_F4, GLUT_KEY_F5, GLUT_KEY_F6,
  513. GLUT_KEY_F7, GLUT_KEY_F8, GLUT_KEY_F9, GLUT_KEY_F10, GLUT_KEY_F11, GLUT_KEY_F12,
  514. GLUT_KEY_LEFT, GLUT_KEY_UP, GLUT_KEY_RIGHT, GLUT_KEY_DOWN, GLUT_KEY_PAGE UP,
  515. GLUT_KEY_PAGE DOWN, GLUT_KEY_HOME, GLUT_KEY_END, GLUT_KEY_INSERT
  516. */
  517. void iSpecialKeyboard(unsigned char key)
  518. {
  519.  
  520. if(key == GLUT_KEY_UP)
  521. {
  522. if(head.direction!=U&&head.direction!=D)
  523. {
  524. start=1;
  525. p=head.direction;
  526. head.direction=U;
  527. }
  528. }
  529. if(key == GLUT_KEY_DOWN)
  530. {
  531. if(head.direction!=U&&head.direction!=D)
  532. {
  533. start=1;
  534. p=head.direction;
  535. head.direction=D;
  536. }
  537. }
  538. if(key == GLUT_KEY_RIGHT)
  539. {
  540. if(head.direction!=R&&head.direction!=L)
  541. {
  542. start=1;
  543. p=head.direction;
  544. head.direction=R;
  545. }
  546. }
  547. if(key == GLUT_KEY_LEFT)
  548. {
  549. if(head.direction!=R&&head.direction!=L)
  550. {
  551. start=1;
  552. p=head.direction;
  553. head.direction=L;
  554. }
  555. }
  556. //place your codes for other keys here
  557. }
  558.  
  559. int main()
  560. {
  561. //place your own initialization codes here.
  562. head.x=150;
  563. head.y=150;
  564. head.direction=R;
  565. //temp=head;
  566. len=7;
  567. srand(time(NULL));
  568. body[0]=head;
  569. body[0].x-=10;
  570. for(int i=1;i<len;i++)
  571. {
  572. body[i].x=body[i-1].x-10;
  573. body[i].y=body[i-1].y;
  574. body[i].direction=R;
  575. }
  576. //p=L;
  577. start=0;
  578. b=0;
  579.  
  580. head.direction=R;
  581. iSetTimer(300,move);
  582. iPauseTimer(0);
  583. iInitialize(700, 394, "Snake");
  584. return 0;
  585. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement