标签:png pre nio get rpo hit position 左右 printf
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <conio.h> 4 #include <windows.h> 5 #include <stdlib.h> 6 #define MAX 100 7 8 long long int speed=0;//控制敌机速度 9 int position_x,position_y;//飞机的位置 10 int high,width;//地图的大小 11 int bullet_x,bullet_y;//子弹的位置 12 int enemy_x,enemy_y;//敌人的位置 13 int map[MAX][MAX]; 14 /*0表示空白,1表示战机的区域,2 表示敌人战机的位置。3表示上下围墙,4表示左右围墙,5表示子弹位置*/ 15 int score; 16 void startup()//初始化所有信息 17 { 18 high =20; 19 width =30; 20 position_x=high/2; 21 position_y=width/2; 22 bullet_x=0; 23 bullet_y=position_y; 24 enemy_x=2; 25 enemy_y=position_y-1; 26 score=0; 27 } 28 void startMap() 29 { 30 int i,j; 31 for(i=1;i<=high-1;i++){ 32 map[i][1]=4; 33 for(j=2;j<=width-1;j++){ 34 map[i][j]=0; 35 } 36 map[i][width]=4; 37 } 38 //下方围墙的初始化 39 i=high; 40 for (j=1;j<=width;j++){ 41 map[i][j]=3; 42 } 43 map[bullet_x][bullet_y]=5; 44 /*这里是战机大小初始化开始*/ 45 map[position_x-1][position_y]=1; 46 i=position_x; 47 for(j=position_y-2;j<=position_y+2;j++){ 48 map[i][j]=1; 49 } 50 map[position_x+1][position_y-1]=1; 51 map[position_x+1][position_y+1]=1; 52 /*初始化结束*/ 53 54 /*敌人战机初始化*/ 55 map[enemy_x][enemy_y]=2; 56 map[enemy_x-1][enemy_y-1]=2; 57 map[enemy_x-1][enemy_y+1]=2; 58 /*敌人战机初始化结束*/ 59 } 60 void HideCursor()//隐藏光标 61 { 62 CONSOLE_CURSOR_INFO cursor_info={1,0}; 63 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); 64 65 } 66 void gotoxy(int x,int y){//清理一部分屏幕 67 HANDLE handle =GetStdHandle(STD_OUTPUT_HANDLE); 68 COORD pos; 69 pos.X=x; 70 pos.Y=y; 71 SetConsoleCursorPosition(handle,pos); 72 } 73 void updateWithoutInput()//与输入无关的更新 74 { 75 if(bullet_x>0) 76 bullet_x--; 77 if((bullet_x==enemy_x)&&(bullet_x==enemy_y)) 78 { 79 //当敌人的飞机被击中时{ 80 score++; 81 enemy_x=0; 82 enemy_y=rand()%width; 83 bullet_x=0; 84 85 } 86 87 if(enemy_x>high){//当飞机超出区域 88 enemy_x=0; 89 enemy_y=rand()%width; 90 } 91 if(speed==1) 92 { 93 int i,j; 94 for(i=1;i<=10000;i++){//用来控制敌机的速度 95 for(j=1;j<=1000;j++){ 96 speed=1; 97 98 } 99 } 100 } 101 speed=0; 102 if(speed==0){ 103 enemy_x++; 104 speed=1; 105 106 } 107 } 108 109 void updateWithInput()//与输入有关的更新 110 { 111 char input; 112 if(_kbhit()){//vc6.0为 _kbhit() 113 input=_getch();//vc6.0为_getch() 114 if(input==‘a‘){ 115 position_y--; 116 117 } 118 if(input==‘s‘){ 119 position_x++; 120 121 } 122 if(input==‘d‘){ 123 position_y++; 124 125 } 126 if(input==‘w‘){ 127 position_x--; 128 129 } 130 if(input==‘ ‘){ 131 bullet_x=position_x-1; 132 bullet_y=position_y; 133 134 } 135 136 } 137 } 138 void show()//展示的内容 139 { 140 gotoxy(0,0); 141 int i,j; 142 for(i=1;i<=high;i++){ 143 for(j=1;j<=width;j++){ 144 if(map[i][j]==0){ 145 printf(" "); 146 147 } 148 if(map[i][j]==1){ 149 printf("*"); 150 151 } 152 if(map[i][j]==2){ 153 printf("#"); 154 155 } 156 if(map[i][j]==3){ 157 printf("~"); 158 159 } 160 if(map[i][j]==4){ 161 printf("|"); 162 163 } 164 if(map[i][j]==5){ 165 printf("|"); 166 167 } 168 } 169 printf("\n"); 170 171 } 172 printf("\n你的得分:%d\n\n",score); 173 printf("操作说明:asdw分别操作 左下右上"); 174 printf("\n**空格是发出子弹**\n"); 175 } 176 177 int main() 178 { 179 startup(); 180 while(1) 181 { 182 HideCursor(); 183 startMap(); 184 show(); 185 updateWithoutInput(); 186 updateWithInput(); 187 } 188 return 0; 189 }
运行结果:
标签:png pre nio get rpo hit position 左右 printf
原文地址:https://www.cnblogs.com/Catherinezhilin/p/10273595.html