Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- author: S. M. Shahriar Nirjon
- last modified: August 8, 2008
- */
- # include "iGraphics.h"
- # include "mmsystem.h"
- # include <conio.h>
- # include <stdlib.h>
- # define R 1
- # define L 2
- # define U 3
- # define D 4
- struct coordinate
- {
- int x;
- int y;
- int direction;
- };
- int len,length,key,f=0,fx,fy,p,x,y,start,b,die=0,d;
- struct coordinate temp,head,body[30],turn[50],food;
- void move()
- {
- PlaySound((LPCSTR)"1.wav", NULL, SND_ASYNC | SND_LOOP);
- int i=0,j=0,diff;
- if(f==0)
- {
- x=rand()%49;
- fx=50+10*x;
- y=rand()%29;
- fy=50+10*y;
- f=1;
- }
- if(start==0)
- {
- head.x+=10;
- for(i=0;i<len;i++)
- {
- body[i].x+=10;
- body[i].direction=R;
- }
- }
- if(head.direction==U)
- {
- if(head.x==fx&&head.y==fy)
- {
- f=0;
- PlaySound((LPCSTR)"2.wav", NULL, SND_ASYNC | SND_LOOP);
- /*if(body[len-1].x==fx&&body[len-1].y==fy)
- {
- body[len].x=fx;
- body[len].y=fy;
- }*/
- b=1;
- len++;
- }
- if(p==R)
- {
- turn[j]=head;
- head.y+=10;
- //body[0].y+=10;
- //body[0].direction=U;
- for(i=0;i<len;i++)
- {
- if(body[i].x==turn[j].x)
- {
- body[i].y+=10;
- body[i].direction=U;
- }
- else
- body[i].x+=10;
- }
- /*if(b==1)
- {
- body[len].x=turn[0].x;
- body[len].y=turn[0].y;
- b=0;
- }*/
- j++;
- }
- else if(p==L)
- {
- turn[j]=head;
- head.y+=10;
- //body[0].y+=10;
- //body[0].direction=U;
- for(i=0;i<len;i++)
- {
- if(body[i].x==turn[j].x)
- {
- body[i].y+=10;
- }
- else
- body[i].x-=10;
- }
- /*if(b==1)
- {
- body[len].x=turn[0].x;
- body[len].y=turn[0].y;
- b=0;
- }*/
- j++;
- }
- }
- else if(head.direction==R)
- {
- if(head.x==fx&&head.y==fy)
- {
- f=0;
- /*if(body[len-1].x==fx&&body[len-1].y==fy)
- {
- body[len].x=fx;
- body[len].y=fy;
- }*/
- PlaySound((LPCSTR)"2.wav", NULL, SND_ASYNC | SND_LOOP);
- b=1;
- len++;
- }
- if(p==U)
- {
- turn[j]=head;
- head.x+=10;
- //body[0].x+=10;
- //body[0].direction=R;
- for(i=0;i<len;i++)
- {
- if(body[i].y==turn[j].y)
- {
- body[i].x+=10;
- }
- else
- body[i].y+=10;
- }
- /*if(b==1)
- {
- body[len].x=turn[1].x;
- body[len].y=turn[1].y;
- b=0;
- }*/
- j++;
- }
- else if(p==D)
- {
- turn[j]=head;
- head.x+=10;
- //body[0].x+=10;
- //body[0].direction=R;
- for(i=0;i<len;i++)
- {
- if(body[i].y==turn[j].y)
- {
- body[i].x+=10;
- }
- else
- body[i].y-=10;
- }
- /*if(b==1)
- {
- body[len].x=turn[1].x;
- body[len].y=turn[1].y;
- b=0;
- }*/
- j++;
- }
- }
- if(head.direction==L)
- {
- if(head.x==fx&&head.y==fy)
- {
- f=0;
- /*if(body[len-1].x==fx&&body[len-1].y==fy)
- {
- body[len].x=fx;
- body[len].y=fy;
- }*/
- b=1;
- len++;
- }
- if(p==U)
- {
- turn[j]=head;
- head.x-=10;
- //body[0].x-=10;
- //body[0].direction=L;
- for(i=0;i<len;i++)
- {
- if(body[i].y==turn[j].y)
- {
- body[i].x-=10;
- }
- else
- body[i].y+=10;
- }
- /*if(b==1)
- {
- body[len].x=turn[2].x;
- body[len].y=turn[2].y;
- b=0;
- }*/
- j++;
- }
- else if(p==D)
- {
- turn[j]=head;
- head.x-=10;
- //body[0].x-=10;
- //body[0].direction=L;
- for(i=0;i<len;i++)
- {
- if(body[i].y==turn[j].y)
- {
- body[i].x-=10;
- }
- else
- body[i].y-=10;
- }
- /*if(b==1)
- {
- body[len].x=turn[2].x;
- body[len].y=turn[2].y;
- b=0;
- }*/
- j++;
- }
- }
- if(head.direction==D)
- {
- if(head.x==fx&&head.y==fy)
- {
- f=0;
- /*if(body[len-1].x==fx&&body[len-1].y==fy)
- {
- body[len].x=fx;
- body[len].y=fy;
- }*/
- PlaySound((LPCSTR)"2.wav", NULL, SND_ASYNC | SND_LOOP);
- b=1;
- len++;
- }
- if(p==R)
- {
- turn[j]=head;
- head.y-=10;
- //body[0].y-=10;
- //body[0].direction=D;
- for(i=0;i<len;i++)
- {
- if(body[i].x==turn[j].x)
- {
- body[i].y-=10;
- }
- else
- body[i].x+=10;
- }
- /*if(b==1)
- {
- body[len].x=turn[3].x;
- body[len].y=turn[3].y;
- b=0;
- }*/
- j++;
- }
- else if(p==L)
- {
- turn[j]=head;
- head.y-=10;
- //body[0].y-=10;
- //body[0].direction=D;
- for(i=0;i<len;i++)
- {
- if(body[i].x==turn[j].x)
- {
- body[i].y-=10;
- }
- else
- body[i].x-=10;
- }
- /*if(b==1)
- {
- body[len].x=turn[3].x;
- body[len].y=turn[3].y;
- b=0;
- }*/
- j++;
- }
- }
- if(head.x<=40||head.x>=540||head.y<=40||head.y>=340)
- {
- die=1;
- iPauseTimer(0);
- }
- }
- /*
- function iDraw() is called again and again by the system.
- */
- void iDraw()
- {
- //place your drawing codes here
- iClear();
- iShowBMP(0,0,"1.bmp");
- iSetColor(255,255,255);
- iRectangle(75,238,65,29);
- iRectangle(304,35,79,36);
- iRectangle(137,35,95,33);
- iRectangle(465,38,76,30);
- /*iSetColor(0,0,0);
- iRectangle(500,300,150,60);
- iText(535,320,"START",GLUT_BITMAP_TIMES_ROMAN_24);
- iRectangle(500,100,150,60);
- iText(540,120,"EXIT",GLUT_BITMAP_TIMES_ROMAN_24); */
- if(d==1)
- {
- iClear();
- iShowBMP(0,0,"10.bmp");
- iSetColor(255,255,255);
- if(die==1)
- {
- iText(250,200,"died");
- }
- iSetColor(255,255,255);
- iRectangle(40,40,500,300);
- iSetColor(100,0,0);
- iFilledCircle(head.x,head.y,5);
- iSetColor(160,0,0);
- if(b==1)
- {
- if(head.direction==L)
- {
- body[len-1].x=body[len-2].x+=10;
- body[len-1].y=body[len-2].y;
- b=0;
- iFilledCircle(body[len-1].x,body[len-1].y,5);
- }
- else if(head.direction==R)
- {
- body[len-1].x=body[len-2].x-=10;
- body[len-1].y=body[len-2].y;
- b=0;
- iFilledCircle(body[len-1].x,body[len-1].y,5);
- }
- else if(head.direction==U)
- {
- body[len-1].x=body[len-2].x;
- body[len-1].y=body[len-2].y-=10;
- b=0;
- iFilledCircle(body[len-1].x,body[len-1].y,5);
- }
- if(head.direction==D)
- {
- body[len-1].x=body[len-2].x;
- body[len-1].y=body[len-2].y+=10;
- b=0;
- iFilledCircle(body[len-1].x,body[len-1].y,5);
- }
- }
- //iSetColor(0,170,0);
- for(int i=0;i<100;i++)
- {
- if(i%2==0)
- iSetColor(200,0,0);
- else
- iSetColor(150,0,0);
- iFilledCircle(body[i].x,body[i].y,5);
- if(i==len)
- break;
- }
- //iFilledCircle(body[4].x,body[4].y,5);
- /*if(b==1)
- {
- body[i-1].x=body[i-2].x+10;
- iFilledCircle(body[i-1].x,body[i-1].y,5);
- b=0;
- }*/
- //iFilledCircle(body[5].x,body[5].y,5);
- /*if(b==1)
- {
- if(head.direction==L)
- {
- body[len].x=body[i-1].x+=10;
- body[len].y=body[i-1].y;
- b=0;
- }
- else if(head.direction==R)
- {
- body[len].x=body[i-1].x-=10;
- body[len].y=body[i-1].y;
- b=0;
- }
- else if(head.direction==U)
- {
- body[len].x=body[i-1].x;
- body[len].y=body[i-1].y-=10;
- b=0;
- }
- if(head.direction==D)
- {
- body[len].x=body[i-1].x;
- body[len].y=body[i-1].y+=10;
- b=0;
- }
- }*/
- if(f==1)
- {
- iSetColor(250,250,250);
- iFilledCircle(fx,fy,4);
- /*for(i=0;i<len;i++)
- {
- if(body[i].x!=fx&&body[i].y!=fy)
- {
- iFilledCircle(fx,fy,4);
- f=0;
- }
- else
- f=0;
- }*/
- }
- }
- else if(d==2)
- {
- iClear();
- iShowBMP(0,0,"4.bmp");
- }
- else if(d==3)
- {
- iClear();
- iShowBMP(0,0,"3.bmp");
- }
- else if(d==4)
- {
- iClear();
- iShowBMP(0,0,"5.bmp");
- //exit(0);
- }
- }
- /*
- function iMouseMove() is called when the user presses and drags the mouse.
- (mx, my) is the position where the mouse pointer is.
- */
- void iMouseMove(int mx, int my)
- {
- //place your codes here
- }
- /*
- function iMouse() is called when the user presses/releases the mouse.
- (mx, my) is the position where the mouse pointer is.
- */
- void iMouse(int button, int state, int mx, int my)
- {
- if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
- {
- //place your codes here
- if((mx>=76&&mx<=139)&&(my>=239&&my<=268))
- {
- d=1;
- iResumeTimer(0);
- }
- if((mx>=304&&mx<=383)&&(my>=36&&my<=74))
- {
- d=2;
- }
- if((mx>=137&&mx<=231)&&(my>=36&&my<=70))
- {
- d=3;
- }
- if((mx>=464&&mx<=540)&&(my>=39&&my<=70))
- {
- d=4;
- }
- printf("%d %d\n",mx,my);
- }
- if(button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN)
- {
- //place your codes here
- }
- }
- /*
- function iKeyboard() is called whenever the user hits a key in keyboard.
- key- holds the ASCII value of the key pressed.
- */
- void iKeyboard(unsigned char key)
- {
- if(key == 'p')
- {
- iPauseTimer(0);
- //do something with 'q'
- }
- if(key == 'r')
- {
- iResumeTimer(0);
- //do something with 'q'
- }
- //place your codes for other keys here
- }
- /*
- function iSpecialKeyboard() is called whenver user hits special keys like-
- function keys, home, end, pg up, pg down, arraows etc. you have to use
- appropriate constants to detect them. A list is:
- GLUT_KEY_F1, GLUT_KEY_F2, GLUT_KEY_F3, GLUT_KEY_F4, GLUT_KEY_F5, GLUT_KEY_F6,
- GLUT_KEY_F7, GLUT_KEY_F8, GLUT_KEY_F9, GLUT_KEY_F10, GLUT_KEY_F11, GLUT_KEY_F12,
- GLUT_KEY_LEFT, GLUT_KEY_UP, GLUT_KEY_RIGHT, GLUT_KEY_DOWN, GLUT_KEY_PAGE UP,
- GLUT_KEY_PAGE DOWN, GLUT_KEY_HOME, GLUT_KEY_END, GLUT_KEY_INSERT
- */
- void iSpecialKeyboard(unsigned char key)
- {
- if(key == GLUT_KEY_UP)
- {
- if(head.direction!=U&&head.direction!=D)
- {
- start=1;
- p=head.direction;
- head.direction=U;
- }
- }
- if(key == GLUT_KEY_DOWN)
- {
- if(head.direction!=U&&head.direction!=D)
- {
- start=1;
- p=head.direction;
- head.direction=D;
- }
- }
- if(key == GLUT_KEY_RIGHT)
- {
- if(head.direction!=R&&head.direction!=L)
- {
- start=1;
- p=head.direction;
- head.direction=R;
- }
- }
- if(key == GLUT_KEY_LEFT)
- {
- if(head.direction!=R&&head.direction!=L)
- {
- start=1;
- p=head.direction;
- head.direction=L;
- }
- }
- //place your codes for other keys here
- }
- int main()
- {
- //place your own initialization codes here.
- head.x=150;
- head.y=150;
- head.direction=R;
- //temp=head;
- len=7;
- srand(time(NULL));
- body[0]=head;
- body[0].x-=10;
- for(int i=1;i<len;i++)
- {
- body[i].x=body[i-1].x-10;
- body[i].y=body[i-1].y;
- body[i].direction=R;
- }
- //p=L;
- start=0;
- b=0;
- head.direction=R;
- iSetTimer(300,move);
- iPauseTimer(0);
- iInitialize(700, 394, "Snake");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement