|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 svsv 于 2021-11-4 15:13 编辑
仅定义4个函数写控制台飞机大战
- #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(); // 与用户输入有关的更新
- }
- }
复制代码
别忘了评分支持下哦 |
|