首页 > 学院 > 开发设计 > 正文

蛇吃蛋

2019-11-17 05:48:07
字体:
来源:转载
供稿:网友
#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 4strUCt 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[]=;int gamedelay2[]=;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);<br> } 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); s<a href="http://pr.VeVb.com/">PR</a>intf(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);<br> } setvisualpage(p); }}closegraph();}


上一篇:如何学好C

下一篇:骑士漫游和八皇后

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表