自闭枪战C++

Player1: ad左右移动,w跳,jk发射子弹

Player2: 左右键左右移动,上键跳,23发射子弹

  1 #include <bits/stdc++.h>
  2 #include <conio.h>
  3 #include <windows.h>
  4 
  5 using namespace std;
  6 
  7 int jump[20] = {0, -1, -1, -1, -1};
  8 
  9 char mmp[21][42] = {"
O    #                            #    @",
 10                     "
##                                    ##",
 11                     "
     ###                        ###     ",
 12                     "
                                        ",
 13                     "
####                                ####",
 14                     "
                                        ",
 15                     "
        ########################        ",
 16                     "
                                        ",
 17                     "
                                        ",
 18                     "
############                ############",
 19                     "
                                        ",
 20                     "
                                        ",
 21                     "
          ######        ######          ",
 22                     "
                                        ",
 23                     "
                                        ",
 24                     "
                 ######                 ",
 25                     "
                                        ",
 26                     "
########                        ########",
 27                     "
            ######    ######            ",
 28                     "
                                        "
 29                    };
 30 
 31 int main() {
 32 
 33     int xp1 = 0, yp1 = 1, xp2 = 0, yp2 = 40, tick = 0;
 34     char ch;
 35     int score1 = 0, score2 = 0, jumpdelay1 = 0, jumpdelay2 = 0;
 36 
 37     while (1) {
 38 
 39         Sleep(40);
 40         HANDLE hout;
 41         COORD coord;
 42         coord.X=0;
 43         coord.Y=0;
 44         hout=GetStdHandle(STD_OUTPUT_HANDLE);
 45         SetConsoleCursorPosition(hout,coord);
 46         fwrite(mmp, 1, 20 * 40, stdout);
 47         printf("
score: 1:%d  2:%d", score1, score2);
 48 
 49         if (jumpdelay1 > 0) {
 50 
 51             if (xp1 + jump[jumpdelay1] > 0 && mmp[xp1 + jump[jumpdelay1]][yp1] == ' ') {
 52 
 53                 mmp[xp1][yp1] = ' ';
 54                 xp1 += jump[jumpdelay1];
 55                 mmp[xp1][yp1] = 'O';
 56 
 57             }
 58             if (xp1 + jump[jumpdelay1] > 0 && (mmp[xp1 + jump[jumpdelay1]][yp1] == '<' || mmp[xp1 + jump[jumpdelay1]][yp1] == '>')) {
 59 
 60                 mmp[xp1][yp1] = ' ';
 61                 xp1 = 0, yp1 = 1;
 62                 mmp[xp1][yp1] = 'O';
 63                 score2++;
 64 
 65             }
 66             if (xp1 + jump[jumpdelay1] > 0 && mmp[xp1 + jump[jumpdelay1]][yp1] == '#') {
 67 
 68                 jumpdelay1 = 1;
 69 
 70             }
 71             if (xp1 + jump[jumpdelay1] > 0 && mmp[xp1 + jump[jumpdelay1]][yp1] == '@') {
 72 
 73                 jumpdelay1 = 1;
 74 
 75             }
 76             jumpdelay1--;
 77 
 78         } else {
 79 
 80             if (xp1 == 19) {
 81 
 82                 mmp[xp1][yp1] = ' ';
 83                 xp1 = 0, yp1 = 1;
 84                 mmp[xp1][yp1] = 'O';
 85                 score2++;
 86 
 87             } else {
 88 
 89                 if (mmp[xp1 + 1][yp1] == ' ') {
 90 
 91                     mmp[xp1][yp1] = ' ';
 92                     xp1++;
 93                     mmp[xp1][yp1] = 'O';
 94 
 95                 }
 96                 if (mmp[xp1 + 1][yp1] == '<' || mmp[xp1 + 1][yp1] == '>') {
 97 
 98                     mmp[xp1][yp1] = ' ';
 99                     xp1 = 0, yp1 = 1;
100                     mmp[xp1][yp1] = 'O';
101                     score2++;
102 
103                 }
104 
105             }
106 
107         }
108         if (jumpdelay2 > 0) {
109 
110             if (xp2 + jump[jumpdelay2] > 0 && mmp[xp2 + jump[jumpdelay2]][yp2] == ' ') {
111 
112                 mmp[xp2][yp2] = ' ';
113                 xp2 += jump[jumpdelay2];
114                 mmp[xp2][yp2] = '@';
115 
116             }
117             if (xp2 + jump[jumpdelay2] >=0 && (mmp[xp2 + jump[jumpdelay2]][yp2] == '<' || mmp[xp2 + jump[jumpdelay2]][yp2] == '>')) {
118 
119                 mmp[xp2][yp2] = ' ';
120                 xp2 = 0, yp2 = 40;
121                 mmp[xp2][yp2] = '@';
122                 score1++;
123 
124             }
125             if (xp2 + jump[jumpdelay2] >=0 && mmp[xp2 + jump[jumpdelay2]][yp2] == '#') {
126 
127                 jumpdelay2 = 1;
128 
129             }
130             if (xp2 + jump[jumpdelay2] >=0 && mmp[xp2 + jump[jumpdelay2]][yp2] == '#') {
131 
132                 jumpdelay2 = 1;
133 
134             }
135             jumpdelay2--;
136 
137         } else {
138 
139             if (xp2 == 19) {
140 
141                 mmp[xp2][yp2] = ' ';
142                 xp2 = 0, yp2 = 40;
143                 mmp[xp2][yp2] = '@';
144                 score1++;
145 
146             } else {
147 
148                 if (mmp[xp2 + 1][yp2] == ' ') {
149 
150                     mmp[xp2][yp2] = ' ';
151                     xp2++;
152                     mmp[xp2][yp2] = '@';
153 
154                 }
155                 if (mmp[xp2 + 1][yp2] == '<' || mmp[xp2 + 1][yp2] == '>') {
156 
157                     mmp[xp2][yp2] = ' ';
158                     xp2 = 0, yp2 = 40;
159                     mmp[xp2][yp2] = '@';
160                     score1++;
161 
162                 }
163 
164             }
165 
166         }
167 
168         for (register int i = 0; i < 20; i++) {
169 
170             for (register int j = 1; j <= 40; j++) {
171 
172                 if (mmp[i][j] == '<') {
173 
174                     if (j - 1 <= 0) {
175 
176                         mmp[i][j] = ' ';
177                         continue;
178 
179                     }
180 
181                     if (mmp[i][j - 1] == 'O') {
182 
183                         mmp[xp1][yp1] = ' ';
184                         xp1 = 0, yp1 = 1;
185                         mmp[xp1][yp1] = 'O';
186                         score2++;
187                         mmp[i][j - 1] = '<';
188 
189                     }
190                     if (mmp[i][j - 1] == '@') {
191 
192                         mmp[xp2][yp2] = ' ';
193                         xp2 = 0, yp2 = 40;
194                         mmp[xp2][yp2] = '@';
195                         score1++;
196 
197                     }
198                     if (mmp[i][j - 1] == '#') {
199 
200                         mmp[i][j] = ' ';
201 
202                     }
203                     if (mmp[i][j - 1] == ' ') {
204 
205                         mmp[i][j] = ' ';
206                         mmp[i][j - 1] = '<';
207 
208                     }
209                     if (mmp[i][j - 1] == '>') {
210 
211                         mmp[i][j] = mmp[i][j - 1] = ' ';
212 
213                     }
214 
215                 }
216 
217             }
218 
219         }
220         for (register int i = 19; i >= 0; i--) {
221 
222             for (register int j = 40; j >= 1; j--) {
223 
224                 if (mmp[i][j] == '>') {
225 
226                     if (j + 1 >= 41) {
227 
228                         mmp[i][j] = ' ';
229                         continue;
230 
231                     }
232 
233                     if (mmp[i][j + 1] == 'O') {
234 
235                         mmp[xp1][yp1] = ' ';
236                         xp1 = 0, yp1 = 1;
237                         mmp[xp1][yp1] = 'O';
238                         score2++;
239                         mmp[i][j + 1] = '>';
240 
241                     }
242                     if (mmp[i][j + 1] == '@') {
243 
244                         mmp[xp2][yp2] = ' ';
245                         xp2 = 0, yp2 = 40;
246                         mmp[xp2][yp2] = '@';
247                         score1++;
248 
249                     }
250                     if (mmp[i][j + 1] == '#') {
251 
252                         mmp[i][j] = ' ';
253 
254                     }
255                     if (mmp[i][j + 1] == ' ') {
256 
257                         mmp[i][j] = ' ';
258                         mmp[i][j + 1] = '>';
259 
260                     }
261                     if (mmp[i][j + 1] == '<') {
262 
263                         mmp[i][j] = mmp[i][j + 1] = ' ';
264 
265                     }
266 
267                 }
268 
269             }
270 
271         }
272 
273         if (kbhit()) {
274 
275             ch = getch();
276 
277             switch (ch) {
278 
279                 case 27 :
280 
281                     exit(0);
282 
283                     break;
284 
285                 case 'a' :
286 
287                     if (yp1 - 1 > 0 && mmp[xp1][yp1 - 1] == ' ') {
288 
289                         mmp[xp1][yp1] = ' ';
290                         yp1--;
291                         mmp[xp1][yp1] = 'O';
292 
293                     }
294 
295                     if (yp1 - 1 > 0 && (mmp[xp1][yp1 - 1] == '<' || mmp[xp1][yp1 - 1] == '>')) {
296 
297                         mmp[xp1][yp1] = ' ';
298                         xp1 = 0, yp1 = 1;
299                         mmp[xp1][yp1] = 'O';
300                         score2++;
301 
302                     }
303 
304                     break;
305 
306                 case 'd' :
307 
308                     if (yp1 + 1 <= 40 && mmp[xp1][yp1 + 1] == ' ') {
309 
310                         mmp[xp1][yp1] = ' ';
311                         yp1++;
312                         mmp[xp1][yp1] = 'O';
313 
314                     }
315 
316                     if (yp1 + 1 <= 40 && (mmp[xp1][yp1 + 1] == '<' || mmp[xp1][yp1 + 1] == '>')) {
317 
318                         mmp[xp1][yp1] = ' ';
319                         xp1 = 0, yp1 = 1;
320                         mmp[xp1][yp1] = 'O';
321                         score2++;
322 
323                     }
324 
325                     break;
326 
327                 case 'w' :
328 
329                     if (jumpdelay1 == 0 && mmp[xp1 + 1][yp1] == '#') {
330 
331                         jumpdelay1 = 4;
332 
333                     }
334 
335                     break;
336 
337                 case -32 :
338 
339                     ch = getch();
340 
341                     switch (ch) {
342 
343                         case 75 :
344 
345                             if (yp2 - 1 > 0 && mmp[xp2][yp2 - 1] == ' ') {
346 
347                                 mmp[xp2][yp2] = ' ';
348                                 yp2--;
349                                 mmp[xp2][yp2] = '@';
350 
351                             }
352 
353                             if (yp2 - 1 > 0 && (mmp[xp2][yp2 - 1] == '*' || mmp[xp2][yp2 - 1] == '*')) {
354 
355                                 mmp[xp2][yp2] = ' ';
356                                 xp2 = 0, yp2 = 40;
357                                 mmp[xp2][yp2] = '@';
358                                 score1++;
359 
360                             }
361 
362                             break;
363 
364                         case 77 :
365 
366                             if (yp2 + 1 <= 40 && mmp[xp2][yp2 + 1] == ' ') {
367 
368                                 mmp[xp2][yp2] = ' ';
369                                 yp2++;
370                                 mmp[xp2][yp2] = '@';
371 
372                             }
373 
374                             if (yp2 + 1 <= 40 && (mmp[xp2][yp2 + 1] == '<' || mmp[xp2][yp2 + 1] == '>')) {
375 
376                                 mmp[xp2][yp2] = ' ';
377                                 xp2 = 0, yp2 = 40;
378                                 mmp[xp2][yp2] = '@';
379                                 score1++;
380 
381                             }
382 
383                             break;
384 
385                         case 72 :
386 
387                             if (jumpdelay2 == 0 && mmp[xp2 + 1][yp2] == '#') {
388 
389                                 jumpdelay2 = 4;
390 
391                             }
392 
393                             break;
394 
395                     }
396 
397                     break;
398 
399                 case 'j' :
400 
401                     if (yp1 > 1) {
402 
403                         if (mmp[xp1][yp1 - 1] == '@') {
404 
405                             mmp[xp2][yp2] = ' ';
406                             xp2 = 0, yp2 = 40;
407                             mmp[xp2][yp2] = '@';
408                             score1++;
409 
410                         }
411 
412                         if (mmp[xp1][yp1 - 1] == ' ') {
413 
414                             mmp[xp1][yp1 - 1] = '<';
415 
416                         }
417 
418                     }
419 
420                     break;
421                 case 'k' :
422 
423                     if (yp1 < 40) {
424 
425                         if (mmp[xp1][yp1 + 1] == '@') {
426 
427                             mmp[xp2][yp2] = ' ';
428                             xp2 = 0, yp2 = 40;
429                             mmp[xp2][yp2] = '@';
430                             score1++;
431 
432                         }
433 
434                         if (mmp[xp1][yp1 + 1] == ' ') {
435 
436                             mmp[xp1][yp1 + 1] = '>';
437 
438                         }
439 
440                     }
441                     break;
442                 case '2' :
443 
444                     if (yp2 > 1) {
445 
446                         if (mmp[xp2][yp2 - 1] == 'O') {
447 
448                             mmp[xp1][yp1] = ' ';
449                             xp1 = 0, yp1 = 1;
450                             mmp[xp1][yp1] = 'O';
451                             score2++;
452 
453                         }
454 
455                         if (mmp[xp2][yp2 - 1] == ' ') {
456 
457                             mmp[xp2][yp2 - 1] = '<';
458 
459                         }
460 
461                     }
462 
463                     break;
464                 case '3' :
465 
466                     if (yp2 < 40) {
467 
468                         if (mmp[xp2][yp2 + 1] == 'O') {
469 
470                             mmp[xp1][yp1] = ' ';
471                             xp1 = 0, yp1 = 1;
472                             mmp[xp1][yp1] = 'O';
473                             score2++;
474 
475                         }
476 
477                         if (mmp[xp2][yp2 + 1] == ' ') {
478 
479                             mmp[xp2][yp2 + 1] = '>';
480 
481                         }
482 
483                     }
484 
485                     break;
486 
487             }
488 
489         }
490 
491     }
492 
493 
494     return 0;
495 
496 }

转载请注明©Ice_watermelon233

原文地址:https://www.cnblogs.com/Ice-watermelon233/p/Autistic_gungame_C_with_class.html