毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

C语言课程设计之贪吃蛇

更新时间:2007-10-22:  来源:毕业论文
C语言课程设计之贪吃蛇程序源代码|c语言程序代码编程小程序设计|c语言课程设计报告课程案例#include "graphics.h"
#include "stdio.h"

#define MAX 200
#define MAXX 30
#define MAXY 30

#define UP 18432
#define DOWN 20480
#define LEFT 19200
#define RIGHT 19712
#define ESC 283
#define ENTER 7181
#define PAGEUP 18688
#define PAGEDOWN 20736
#define KEY_U 5749
#define KEY_K 9579
#define CTRL_P 6512
#define TRUE 1
#define FALSE 0
#define GAMEINIT 1
#define GAMESTART 2
#define GAMEHAPPY 3
#define GAMEOVER 4

struct SPlace
{
int x;
int y;
int st;
} place[MAX];
int speed;
int count;
int score;
int control;
int head;
int tear;
int x,y;
int babyx,babyy;
int class;
int eat;
int game;
int gamedelay[]={5000,4000,3000,2000,1000,500,250,100};
int gamedelay2[]={1000,1};
static int hitme=TRUE,hit = TRUE;
void init(void);
void nextstatus(void);
void draw(void);

void init(void)
{
int i;
for(i=0;i<MAX;i++)
{
place[i].x = 0;
place[i].y = 0;
place[i].st = FALSE;
}
place[0].st = TRUE;
place[1].st = TRUE;
place[1].x = 1;
speed = 9;
count = 0;
score = 0;
control = 4;
head = 1;
tear = 0;
x = 1;
y = 0;
babyx = rand()%MAXX;
babyy = rand()%MAXY;
eat = FALSE;
game = GAMESTART;
}
void nextstatus(void)
{
int i;
int exit;
int xx,yy;
xx = x;
yy = y;
switch(control)
{
case 1: y--; yy = y-1; break;
case 2: y++; yy = y+1; break;
case 3: x--; xx = x-1; break;
case 4: x++; xx = x+1; break;
}
hit = TRUE;
if ( ((control == 1) || (control ==2 )) && ( (y < 1) ||(y >= MAXY-1)) ||
(((control == 3) || (control == 4)) && ((x < 1) ||(x >= MAXX-1) ) ) )
{
hit = FALSE;
}

if ( (y < 0) ||(y >= MAXY) ||
(x < 0) ||(x >= MAXX) )
{
game = GAMEOVER;
control = 0;
return;
}
for (i = 0; i < MAX; i++)
{
if ((place[i].st) &&
(x == place[i].x) &&
(y == place[i].y) )
{
game = GAMEOVER;
control = 0;
return;
}
if ((place[i].st) &&
(xx == place[i].x) &&
(yy == place[i].y) )
{
hit = FALSE;
goto OUT;
}

}
OUT:
if ( (x == babyx) && (y == babyy) )
{
eat = TRUE;
count ++;
score += (1+class) * 10;
}

head ++;
if (head >= MAX) head = 0;
place[head].x = x;
place[head].y = y;
place[head].st= TRUE;
if (eat == FALSE)
{
place[tear].st = FALSE;
tear ++;
if (tear >= MAX) tear = 0;
}
else
{
eat = FALSE;
exit = TRUE;
while(exit)
{
babyx = rand()%MAXX;
babyy = rand()%MAXY;
exit = FALSE;
for( i = 0; i< MAX; i++ )
if( (place[i].st)&&( place[i].x == babyx) && (place[i].y == babyy))
exit ++;
}

}
if (head == tear) game = GAMEHAPPY;

}
void draw(void)
{
char temp[50];
int i,j;
for (i = 0; i < MAX; i++ )
{
setfillstyle(1,9);
if (place[i].st)
bar(place[i].x*15+1,place[i].y*10+1,place[i].x*15+14,place[i].y*10+9);
}
setfillstyle(1,4);
bar(babyx*15+1,babyy*10+1,babyx*15+14,babyy*10+9);
setcolor(8);
setfillstyle(1,8);
bar(place[head].x*15+1,place[head].y*10+1,place[head].x*15+14,place[head].y*10+9);
/* for( i = 0; i <= MAXX; i++ )
line( i*15,0, i*15, 10*MAXY);
for( j = 0; j <= MAXY; j++ )
line( 0, j*10, 15*MAXX, j*10);
*/
rectangle(0,0,15*MAXX,10*MAXY);
sprintf(temp,"Count: %d",count);
settextstyle(1,0,2);
setcolor(8);
outtextxy(512,142,temp);
setcolor(11);
outtextxy(510,140,temp);
sprintf(temp,"1P: %d",score);
settextstyle(1,0,2);
setcolor(8);
outtextxy(512,102,temp);
setcolor(12);
outtextxy(510,100,temp);
sprintf(temp,"Class: %d",class);
setcolor(8);
outtextxy(512,182,temp);
setcolor(11);
outtextxy(510,180,temp);
}
main()
{
int pause = 0;
char temp[50];
int d,m;
int key;
int p;
static int keydown = FALSE;
int exit = FALSE;
int stchange = 0;
d = VGA;
m = VGAMED;
initgraph( &d, &m, "" );
setbkcolor(3);
class = 3;
init();
p = 1;
while(!exit)
{
if (kbhit())
{
key = bioskey(0);
switch(key)
{
case UP: if( (control != 2)&& !keydown)
control = 1;
keydown = TRUE;
break;
case DOWN: if( (control != 1)&& !keydown)
control = 2;
keydown = TRUE;
break;
case LEFT: if( (control != 4)&& !keydown)
control = 3;
keydown = TRUE;
break;
case RIGHT: if( (control != 3)&& !keydown)
control = 4;
keydown = TRUE;
break;
case ESC: exit = TRUE;break;
case ENTER: init();break;
case PAGEUP: class --; if (class<0) class = 0; break;
case PAGEDOWN: class ++;if (class>7) class = 7; break;
case KEY_U: if( ( (control ==1) ||(control ==2))&& !keydown)
control = 3;
else if(( (control == 3) || (control == 4))&& !keydown)
control = 1;
keydown = TRUE;
break;
case KEY_K: if( ( (control ==1) ||(control ==2))&& !keydown)
control = 4;
else if(( (control == 3) || (control == 4))&& !keydown)
control = 2;
keydown = TRUE;
break;
case CTRL_P:pause = 1 - pause; break;
}
}
stchange ++ ;
putpixel(0,0,0);
if (stchange > gamedelay[class] + gamedelay2[hit])
{
stchange = 0;
keydown = FALSE;
p = 1 - p;
setactivepage(p);
cleardevice();
if (!pause)
nextstatus();
else
{
settextstyle(1,0,4);
setcolor(12);
outtextxy(250,100,"PAUSE");
}
draw();

if(game==GAMEOVER)
{
settextstyle(0,0,6);
setcolor(8);
outtextxy(101,101,"GAME OVER");
setcolor(15);
outtextxy(99,99,"GAME OVER");
setcolor(12);
outtextxy(100,100,"GAME OVER");
sprintf(temp,"Last Count: %d",count);
settextstyle(0,0,2);
outtextxy(200,200,temp);
}

if(game==GAMEHAPPY)
{
settextstyle(0,0,6);
setcolor(12);
outtextxy(100,300,"YOU WIN");
sprintf(temp,"Last Count: %d",count);
settextstyle(0,0,2);
outtextxy(200,200,temp);
}
setvisualpage(p);
}
}
closegraph();
}
C语言课程设计之贪吃蛇下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。