scanf控制飞机
#include<stdio.h>#include<stdlib.h>int main(){int i, j;int x = 5;int y = 10;char input;while(1){system("cls");for(i = 0; i < x; i++)printf("\n");for(j = 0; j < y; j++)printf(" ");printf("*");printf("\n");scanf("%c", &input);if(input == 'a')y--;if(input == 'd')y++;if(input == 'w')x--;if(input == 's')x++;}return 0;}
很明显,你需要输入字母后再敲击回车,这样游戏体验感非常不好,所以我们引入getch函数
getch控制飞机移动
#include<stdio.h>#include<stdlib.h>#include<conio.h>int main(){int i, j;int x = 5;int y = 10;char input;while(1){system("cls");for(i = 0; i < x; i++)printf("\n");for(j = 0; j < y; j++)printf(" ");printf("*\n");if(kbhit())//判断是否有输入 {//用户有键盘输入时返回1,否则返回0 input = getch();//不需要回车就可以得到输入的控制字符 if(input == 'a')y--;if(input == 'd')y++;if(input == 'w')x--;if(input == 's')x++;}}return 0;}
有没有觉得我们的飞机太丑了,只有一个点,那么我们来升级一下
#include<stdio.h>#include<stdlib.h>#include<conio.h>int main(){int i, j;int x = 5;int y = 10;char input;while(1){system("cls");for(i = 0; i < x; i++)printf("\n");for(j = 0; j < y; j++)printf(" ");printf("*\n");for(j = 0; j < y - 2; j++)printf(" ");printf(" * *\n");for(j = 0; j < y - 2; j++)printf(" ");printf("* * *\n");for(j = 0; j < y - 6; j++)printf(" ");printf("* * * * * * *\n");for(j = 0; j < y - 8; j++)printf(" ");printf("* * * * * * * * *\n");for(j = 0; j < y- 1; j++)printf(" ");printf("* * \n");if(kbhit()){input = getch();if(input == 'a')y--;if(input == 'd')y++;if(input == 'w')x--;if(input == 's')x++;}}return 0;}
是不是很帅
接下来我们就要射了(激光射线搞上)
激光飞机
空格表示射击
#include<stdio.h>#include<stdlib.h>#include<conio.h>int main(){int i, j;int x = 5;int y = 10;char input;int isFire = 0;while(1){system("cls");if(isFire == 0){for(i = 0; i < x; i++)printf("\n");}else{for(i = 0; i < x; i++){for(j = 0; j < y; j++)printf(" ");printf("|\n");}isFire = 0;}for(j = 0; j < y; j++)printf(" ");printf("*\n");for(j = 0; j < y - 2; j++)printf(" ");printf(" * *\n");for(j = 0; j < y - 2; j++)printf(" ");printf("* * *\n");for(j = 0; j < y - 6; j++)printf(" ");printf("* * * * * * *\n");for(j = 0; j < y - 8; j++)printf(" ");printf("* * * * * * * * *\n");for(j = 0; j < y- 1; j++)printf(" ");printf("* * \n");if(kbhit()){input = getch();if(input == 'a')y--;if(input == 'd')y++;if(input == 'w')x--;if(input == 's')x++;if(input == ' ')isFire = 1;}}return 0;}
传送门:
发射激光的飞机
打靶练习
既然我们的飞机都升级成功了,弹药也配备充足的,接下来就是……
#include<stdio.h>#include<stdlib.h>#include<conio.h>int main(){int i, j;int x = 5;int y = 10;int isFire = 0;char input;int ny = 30;int isKilled = 0;while(1){system("cls");if(!isKilled){for(j = 0; j < ny; j++)printf(" ");printf("+\n");}if(isFire == 0){for(i = 0; i < x; i++)printf("\n");}else{for(i = 0; i < x; i++){for(j = 0; j < y; j++){printf(" ");}printf("|\n");}if(y == ny)isKilled = 1;isFire = 0;}for(j = 0; j < y; j++)printf(" ");printf("*\n");for(j = 0; j < y - 2; j++)printf(" ");printf(" * *\n");for(j = 0; j < y - 2; j++)printf(" ");printf("* * *\n");for(j = 0; j < y - 6; j++)printf(" ");printf("* * * * * * *\n");for(j = 0; j < y - 8; j++)printf(" ");printf("* * * * * * * * *\n");for(j = 0; j < y- 1; j++)printf(" ");printf("* * \n");if(kbhit()){input = getch();if(input == 'a')y--;if(input == 'd')y++;if(input == 'w')x--;if(input == 's')x++;if(input == ' ')isFire = 1;}}return 0;}
激光飞机打靶游戏