论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

蛇吃蛋

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:44:26

#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= 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(); }
上一篇:{实例}小迷宫 人气:5044
下一篇:{实例}图形与动画-01 人气:4651
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058