#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
int high,width;
int position_x,position_y;
int bullet_x,bullet_y;
int enemy_x,enemy_y;
int number;
int grade;
int speed,speedl;
void HideCursor()
{
CONSOLE_CURSOR_INFO cursor_info={1,0}; //第二个值为0表示隐藏光标
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void startup()
{
//grade=0;
//grade_x=0;
//grade_y=width-1;
number=1;
high=20; //游戏尺寸
width=30;
position_x=high/2; //战机初始位置
position_y=width/2;
bullet_x=-1; //子弹初始位置
bullet_y=position_y;
enemy_x=0; //敌机初始位置
enemy_y=position_y;
speed=0; //敌机运动速度
speedl=12;
}
void gotoxy(int x,int y)
{
HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X=x;
pos.Y=y;
SetConsoleCursorPosition(handle,pos);
}
void show() //显示画面
{
gotoxy(0,0); //代替清屏函数
//system("cls");
int i,j;
for(i=0;i<high;i++)
{
for(j=0;j<width;j++)
{
//if((i==grade_x) && j==grade_y)
// printf("成绩:%d",grade);
if((i==position_x) && (j==position_y))
{
printf("*");
}else{
if((i==enemy_x) && (j==enemy_y))
{
if((i==bullet_x) && (j==bullet_y))
{
printf("|");
number=0;
enemy_y=0;
enemy_x=0;
grade++;
}else{
printf("@");
number=1;
}
}else{
if((i==bullet_x) && (j==bullet_y))
{
printf("|");
/*if((bullet_x==enemy_x) && (bullet_y==enemy_y))
number=0;
enemy_y=0;*/
}else{
if((i==position_x+1) && (j>=position_y-2) && (j<=position_y+2)) //显示战机其他部位
{
printf("*");
}else{
if(((i==position_x+2) && (j==position_y-1)) || ((i==position_x+2) && (j==position_y+1)))
{
printf("*");
}else{
printf(" ");
}
}
}
}
}
}
printf("\n");
}
printf("成绩:%d",grade);
}
void updatwithoutinput()
{
if(bullet_x>-1)
bullet_x--;
if(number==0)
{
enemy_y=rand()%20;
}
switch(grade){ //根据得到的成绩改变敌机的速度
case 10:speedl=10;break;
case 15:speedl=8;break;
case 20:speedl=6;break;
case 25:speedl=4;break;
case 30:speedl=2;break;
case 35:speedl=0;break;
default:break;
}
if(speed<speedl) //敌机运动速度
speed++;
if(speed==speedl)
{
enemy_x++;
speed=0;
}
if(enemy_x>high)
{
enemy_x=0;
number=0;
}
}
void updatwithinput()
{
char input; //接受键盘信号
if(kbhit())
{
input=getch();
if(input=='w')
position_x--;
if(input=='s')
position_x++;
if(input=='a')
position_y--;
if(input=='d')
position_y++;
if(input==' ')
{
bullet_x=position_x-1;
bullet_y=position_y;
}
}
}
int main()
{
while(1)
{
system("cls");
char word[10];
char wo1[10]={'b','e','g','i','n'};
char wo2[10]={'e','n','d'};
int g;
for(g=0;g<10;g++)
printf("\n");
for(g=0;g<10;g++)
printf(" ");
printf("你是否选择开始游戏,如果选择开始游戏请输入‘begin’,如果不选择开始游戏请输入‘end’\n");
gets(word);
if(strcmp(word,wo1)==0)
{
system("cls");
break;
}else{
if(strcmp(word,wo2)==0)
goto over_;
}
}
startup(); //数据初始化
while(1)
{
HideCursor();
show();
if((position_x==enemy_x) && (position_y==enemy_y)) //战机碰到敌机结束游戏
goto over_;
if((position_x+1==enemy_x) && (enemy_y>=position_y-2) && (enemy_y<=position_y+2))
goto over_;
if(((position_x+2==enemy_x) && (enemy_y==position_y-1)) || ((position_x+2==enemy_x) && (enemy_y==position_y+1)))
goto over_;
updatwithoutinput(); //与用户无关的更新
Sleep(50);
updatwithinput(); //与用户有关的更新
}
int a;
over_:
system("cls");
for(a=0;a<10;a++)
printf("\n");
for(a=0;a<10;a++)
printf(" ");
printf("结束游戏你最后的得分为:%d",grade);
for(a=0;a<10;a++)
printf("\n");
return 0;
}
飞机游戏2
于 2022-03-18 22:56:15 首次发布