1. 编程学习网 > 编程资源 > 源码分享 > C语言实现简单的飞机大战

C语言实现简单的飞机大战

C语言实现简单的飞机大战


#include<stdio.h>
#include<windows.h>
#include<conio.h>
//定义全局变量 
int high,width; //定义边界 
int position_x,position_y; //飞机位置 
int bullet_x,bullet_y; //子弹位置 
int enemy_x,enemy_y;
int score;
int flag; //飞机状态 
void gotoxy(int x,int y)   //光标移动到(x,y)位置
{
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(handle,pos);
}
void HideCursor() // 用于隐藏光标
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};  // 第二个值为0表示隐藏光标
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
 
 
void startup() //数据初始化 
{
high=18;
width=26;
 
position_x=high-3;
position_y=width/2;
 
bullet_x=0;
bullet_y=position_y; 
 
enemy_x=0;
enemy_y=position_y;
 
score=0;
 
flag=0; //飞机完好 
 
HideCursor();
}
void show() //显示界面 
{
int i,j;
for(i=0;i<high;i++)
{
for(j=0;j<width;j++)
{
if(flag)
break;
 
else if((i==position_x)&&(j==position_y)) //飞机坐标 
printf("*");
else if((i==enemy_x)&&(j==enemy_y)) //敌机坐标 
printf("*");
else if((i==bullet_x)&&(j==bullet_y)) //子弹坐标 
printf("|");
else if ((j==width-1)||(i==high-1)||(j==0)||(i==0)) //打印边界 
printf("#");
else
printf(" ");
}
printf("\n"); 
}
printf("\n");
if((position_x==enemy_x)&&(position_y==enemy_y))
{
flag=1; //飞机撞毁 游戏结束 
printf("得分: %d\n",score);
printf("游戏结束");
}
else
printf("得分: %d\n",score);
}
void withoutInpute() //与用户输入无关
{
if(bullet_x>0) //子弹上升效果 
bullet_x--;
if((bullet_x==enemy_x)&&(bullet_y==enemy_y)) //子弹命中敌机 
{
score++;
bullet_x=-1;
enemy_x=1;
enemy_y=2+rand()%width-2;
}
 
 
static int speed;
if(speed<30) //减慢敌机速度,不影响飞机和子弹速度 
speed++;
if(speed==30)
{
if(enemy_x<high)
enemy_x++;
else 
{
enemy_x=0;
enemy_y=2+rand()%width-2;
}
speed=0;
}
 
 
 
 
}
void withInpute() //与用户输入有关 
{
char input;
if(kbhit()) //控制飞机方向 
{
input=getch();
if((input=='w')&&position_x>1)
position_x--;
if((input=='s')&&position_x<high-2)
position_x++;
if((input=='a')&&position_y>1)
position_y--;
if((input=='d')&&position_y<width-2)
position_y++;
if(input==' ')
{
bullet_x=position_x-1;
bullet_y=position_y;
}
}
}
int main()
{
system("color 2f");
startup(); // 数据初始化
while(1) //  游戏循环执行
{
gotoxy(0,0);
show(); // 显示画面
withoutInpute(); // 与用户输入无关的更新
withInpute(); // 与用户输入有关的更新
}
}

本文由IT教学网整理发布,转载请注明出处:http://www.itjx.com/ziyuan/yuanma/551.html

联系我们

在线咨询:点击这里给我发消息

咨询电话:400-998-2681

工作时间:7*24小时无休