永发信息网

在WIN_TC下写的程序,怎么没法运行啊,编译是成功的

答案:1  悬赏:10  手机版
解决时间 2021-04-28 23:17

#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<dos.h>

#define N 200
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b

int i,key;
int score=0;
int gamespeed=50000;
struct food
{
int x;
int y;
int yes;
}food;

struct snake
{
int x[N];
int y[N];
int node;
int direction;
int life;
}snake;

void init(void);
void close(void);
void drawk(void);
void gameover(void);
void gameplay(void);
void prscore(void);

main()
{
init();
drawk();
gameplay();
close();
}

void init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();
}

void drawk(void)
{
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
for(i=50;i<=600;i+=10)
{
rectangle(i,40,i+10,49);
rectangle(i,451,i+10,460);
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10);
rectangle(601,i,610,i+10);
}
}

void gameplay(void)
{
randomize();
food.yes=1;
snake.life=0;
snake.direction=1;
snake.x[0]=100;
snake.y[0]=100;
snake.x[1]=110;
snake.y[1]=100;
snake.node=2;
prscore();
while(1)
{
while(!kbhit())
{
if(food.yes==1)
{
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!=0)
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;
}
if(food.yes==0)
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--)
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
switch(snake.direction)
{
case 1:snake.x[0]+=10;break;
case 2:snake.x[0]-=10;break;
case 3:snake.y[0]-=10;break;
case 4:snake.y[0]+=10;break;
}
for(i=3;i<snake.node;i++)
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
gameover();
snake.life=1;
break;
}
}
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)
{
gameover();
snake.life=1;
}
if(snake.life==1)
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y)
{
setcolor(0);
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node]=-20;
snake.y[snake.node]=-20;
snake.node++;
food.yes=1;
score+=10;
prscore();
}
setcolor(4);
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
delay(gamespeed);
setcolor(0);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
}
if(snake.life==1)
break;
key=bioskey(0);
if(key==ESC)
break;
else if(key==UP&&snake.direction!=4)
snake.direction=3;
else if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}
}

void gameover(void)
{
cleardevice();
prscore();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER!");
getch();
}

void prscore(void)
{
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"score:%d",score);
outtextxy(55,20,str);
}

void close(void)
{
getch();
closegraph();
}

点完成后

这个窗口闪一下就过了,怎么解决?

最佳答案

在主函数最后添加一个getchar()试试。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电脑屏幕变暗了
邳州市启智蒙氏幼儿园沙埠园怎么去啊,有知道
步步高i泡泡508在武汉有没有买的?在哪买
我玩CF幽灵模式改了亮度!之后又调回去!下次
工作中遇到挫折该怎么办
教授的意思,教育的近义词是什么
现在什么舞曲最流行,要好听的
哈工大威海光信息科学与工程怎么样?
麦迪下赛季将会效力于哪支nba球队
如何免费加快QQ等级?
如果我变成回忆 谁唱的
如果你知道真相,你应该很生气吧
为什么我觉得我姐很讨厌
什么是Java异常指针
华通汽贸我想知道这个在什么地方
推荐资讯
丝丝心动17丝丝心动17集丝丝心动第17集在线观
用麦蒂换保罗来火箭,值不值,为什么?
为什么小天才的电话手表的sos设置在那么远
2010年8月现在北京有月薪不底于的1500有吗
太庙搬砖,如何得知每日哪国可以搬砖啊?
寻找电视《傻儿师长》
qq空间雨露指数 阳光指数和其它指数是怎样计
工作室包含广告设计、策划、制作、代理发布和
结婚后还能和初恋同居吗
求炫舞YY公会频道设计图
现在高清的电影都是是写HD吗?
2010年8月深圳富士康招工吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?