当前位置:文档之家› C语言坦克游戏

C语言坦克游戏

//打下小酱油
#include
#include
#include
#include
void tank();
void tank2();
void shoot();
void jiemian();
void moveup();
void movedown();
void shoot2();
void moveleft();
void tank3();
void tank4();
void moveright();
void shoot3();
void shoot4();
void enemy();
void jieshu();
/*void moveright();
void moveleft();
void movedown();
void goodbye();*/
char key;
int a=216,b=200,c=200;
int d=432,e=447,f=463;
int m;
char pen;
void main()//主函数
{

initgraph(640, 480);//初始化图形系统
cleardevice();
jiemian();
while(1)
{ enemy();
tank();
if(kbhit())
goto lop;

//while(true)
tank();
lop: key=getch();
switch(key)
{case 's':switch(pen) {case '8':shoot(); goto lop;break;
case '5':shoot2();goto lop;break;
case'4':shoot3();goto lop;break;
case '6':shoot4();goto lop;break;}

case '8':moveup();goto lop; break;
case '5':movedown();goto lop;break;
case '4':moveleft();goto lop;break;
case '6':moveright();goto lop;break;
case '27':goto EXIT;
/*case '5':movedown();break;*/

}

EXIT:
// 退出部分
jieshu();

// 关闭图形界面
closegraph();

/*if(key==27)//27为ESC的ANSIC码
goto EXIT;

}
EXIT:
goodbye();//退出程序界面*/

}}

void jiemian()
{int c=255;

while(!kbhit())//感应是否有键盘输入
{
setcolor(YELLOW);//设置自此句以后的字体为黄色
setfont(64, 0, "黑体");//设置字体大小颜色 64为设置字体大小
outtextxy(180,50, "坦克大战");//在指定位置显示一字符串200,50是字体显示位置
setcolor(WHITE);
setfont(18, 0, "黑体");
outtextxy(180,200,"4/左移,6/右移,8/上移,5/下移,A/放子弹");
outtextxy(180,240,"ESC/退出游戏");
setcolor(RGB(c, 0, 0));//红绿蓝,改变颜色亮度c从0-255控制亮度
outtextxy(250, 400, "按任意键继续");

c-=8;
if (c<0)
c=255; //通俗说就是靠改变颜色亮度来实现闪烁
Sleep(20);//延时函数,包含在windows.h中


}
getch();
cleardevice();//清屏

}
void jieshu()
{cleardevice();
setcolor(RED);
setfont(30, 0, "黑体");
outtextxy(200, 200, "和风细雨淡淡忧伤");
outtextxy(200,230,"只为追求一种安逸");
outtextxy(260,270,"------雨落忧伤");
getch();

}

//设计坦克形状 属性、行为
void tank()//up
{
setcolor(RED);//设置自此句以后的字体为红色
setfont(16, 0, "黑体");//设置字体大小颜色 64为设置字体大小
outtextxy(a,d,"■");

outtextxy(b,e,"■■■");
outtextxy(c,f,"■ ■");//10,25,41(间距15 ,16.三行的比例间距)||116,100,100(竖向间距最上一个与下面两行差16)

}
void tank2()//down
{
setcolor(RED);
setfont(16,0,"黑体");
outtextxy(c,d,"■ ■");
outtextxy(b,e,"■■■");
outtextxy(a,f,"■");

}
void tank3()//left
{ outtextxy(a,d,"■■");

outtextxy(b,e,"■■");
outtextxy(c+16,f,"■■");//10,25,41(间距15 ,16.

三行的比例间距)||116,100,100(竖向间距最上一个与下面两行差6)



}

void tank4()//right
{outtextxy(a-16,d,"■■");

outtextxy(b+16,e,"■■");
outtextxy(c,f,"■■");//10,25,41(间距15 ,16.三行的比例间距)||116,100,100(竖向间距最上一个与下面两行差6)
}

//射击行为设计......................//////////////////////////////////////////////////////
void shoot()//up
{
setcolor(RED);//设置自此句以后的字体为红色
setfont(16, 0, "黑体");//设置字体大小颜色 16为设置字体大小


for(m=d;m>0;m--)
{
outtextxy(a,m,"■");
Sleep(0);//控制射速
}
if(m==0||m==480)
{ setcolor(BLACK);
outtextxy(a,m,"■");
}

}

void shoot2()//down
{setcolor(RED);//设置自此句以后的字体为红色
setfont(16, 0, "黑体");//设置字体大小颜色 16为设置字体大小

for(m=f;m<480;m++)
{outtextxy(a,m,"■");
Sleep(0);}
if(m==0||m==480)
{ setcolor(BLACK);
outtextxy(a,m,"■");
}
}

void shoot3()//left
{setcolor(RED);//设置自此句以后的字体为红色
setfont(16, 0, "黑体");//设置字体大小颜色 16为设置字体大小

for(m=e;m>0;m--)
{outtextxy(m,e,"■");
Sleep(0);}
if(m==0||m==640)
{ setcolor(BLACK);
outtextxy(m,e,"■");}
}
void shoot4()//right
{setcolor(RED);//设置自此句以后的字体为红色
setfont(16, 0, "黑体");//设置字体大小颜色 16为设置字体大小

for(m=e;m<640;m++)
{outtextxy(m,e,"■");
Sleep(0);}
if(m==0||m==640)
{ setcolor(BLACK);
outtextxy(m,e,"■");}
}
//移动行为设计+++++++++++++++++++++++++++++++++++++++++++++++++++++++///////////////////////////////
void moveup()
{ setcolor(BLACK);
outtextxy(a,d,"■");

outtextxy(b,e,"■■■");
outtextxy(c,f,"■ ■");//这三句用来消除行走后留下的痕迹
setcolor(RED);//设置自此句以后的字体为红色
setfont(16, 0, "黑体");//设置字体大小颜色 64为设置字体大小
d=d-20;
e=e-20;
f=f-20;
tank();
outtextxy(a,d,"■");//保持坦克形态不变
if(d==12)
tank();
pen='8';
}

void movedown()
{ //cleardevice();
setcolor(BLACK);
outtextxy(a,d,"■");
outtextxy(b,e,"■■■");
outtextxy(c,f,"■ ■");

outtextxy(c,d,"■ ■");
outtextxy(b,e,"■■■");
outtextxy(a,f,"■");//用来消除行走后留下的痕迹

d=d+20;
e=e+20;
f=f+20;
tank2();
pen='5';

}

void moveleft()
{setcolor(BLACK);
//cleardevice();
outtextxy(a,d,"■");

outtextxy(b,e,"■■■");
outtextxy(c,f,"■ ■");
setcolor(RED);//设置自此句以后的字体为红色
setfont(16, 0, "黑体");//设置字体大小颜色 16为设置字体大小
outtextxy(a,d,"■■");

outtextxy(b,e,"■■");
outtextxy(c+16,f,"■■");
//cleardevice();
setcolor(BLACK);
tank3();
/**///10,25,41(间距15 ,16.三行的比例间距)||116,100,100(竖向间距最上一个与

下面两行差6)
a=a-20;
b=b-20;
c=c-20;
setcolor(RED);//设置自此句以后的字体为红色
setfont(16, 0, "黑体");//设置字体大小颜色 16为设置字体大小
tank3();
pen='4';

/*outtextxy(a,d,"■■");

outtextxy(b,e,"■■");
outtextxy(c,f,"■■");//10,25,41(间距15 ,16.三行的比例间距)||116,100,100(竖向间距最上一个与下面两行差6)*/
}

void moveright()
{ cleardevice();
setcolor(RED);//设置自此句以后的字体为红色
setfont(16, 0, "黑体");//设置字体大小颜色 16为设置字体大小
tank4();
cleardevice();
a=a+20;
b=b+20;
c=c+20;
tank4();
pen='6';}
/***********************************我是分割线*****************************************************/







//敌方坦克设计+++++++++++++++++++++++++++++++++++++++++++++++++++//////////////////////////////////

int h=0,i=16,j=0;
int k=0,l=15,n=31;

void enemy()
{
setcolor(BLUE);
setfont(16,0,"黑体");

outtextxy(h,k,"■■");
outtextxy(i,l,"■■");
outtextxy(j,n,"■■");}
void enemygo()
{
setfont(16,0,"黑体");
setcolor(BLACK);
enemy();
setcolor(BLUE);
while(h<480||i<480||j<480)
{h=h+20;
i=i+20;
j=j+20;}
enemy();
}



相关主题
文本预览
相关文档 最新文档