Вы находитесь на странице: 1из 24

C++ console game!

Score: 3.5/5 (456 votes)

Hello guys,

This is very simple and one of my old projects I've created.It's probably the best one,as it really looks like a game,mind you the code is
not very complicated.It has 11 levels you can try, every level the speed and the amount of "birds" is increasing.The controls are arrow
keys for moving and 1 / 2 for shooting.

Have fun ! Foxefde

1 #include <iostream>
2 #include <conio.h>
3 #include <windows.h>
4 #include <ctime>
5 #include <vector>
6
7 class game
8 {
9 private:
10 std::vector <int> fake;
11 char map[1800];
12 int x;//COORDINATES
13 int c;
14 int speed;
15 int points ;
16 int CurrentLevel;
17 bool check;
18 public:
19 game()
20 {
21 x = 1940;
22 speed = 215;
23 check = 0;
24 points = 0;
25 }
26 void PrepareGraphics();
27 void graphics();
28 void LevelMenu();
29 void Levels();
30 void LOGIC();
31 void gameover();
32 friend void cls();
33 friend void sp();
34 friend void s();
35 };
36 void cls()
37 {
38 HANDLE hOut;
39 COORD Position;
40
41 hOut = GetStdHandle(STD_OUTPUT_HANDLE);
42
43 Position.X = 0;
44 Position.Y = 0;
45 SetConsoleCursorPosition(hOut, Position);
46 }
47 void game::Levels() //Just minimize this function
48 ////////////////////////////////////////////////////////////////////
49 ////////*//
50 {
51 speed-=20;
52 for(int a = 0;a < 1800;a++)
53 {
54 map[a] = ' '; //CLEAN IT FIRST
55 }
56 switch(CurrentLevel)
57 {
58 case
59 1://///////////////////////////////////////////////////////////////*
60 //
61 for(int b = 0;b < 26;b++)
62 {
63 map[b + 7] = char(253);
64 }
65 for(int b = 0;b < 26;b++)
66 {
67 map[b + 47] = char(253);
68 }
69 for(int b = 0;b < 26;b++)
70 {
71 map[b + 87] = char(253);
72 }
73 for(int b = 0;b < 26;b++)
74 {
75 map[b + 127] = char(253);
76 }
77 for(int b = 0;b < 26;b++)
78 {
79 map[b + 167] = char(253);
80 }
81 for(int b = 0;b < 26;b++)
82 {
83 map[b + 207] = char(253);
84 }
85 break;
86 case
87 2://///////////////////////////////////////////////////////////////*
88 //
89 for(int b = 0;b < 26;b++)
90 {
91 map[b + 7] = char(253);
92 }
93 for(int b = 0;b < 26;b++)
94 {
95 map[b + 47] = char(253);
96 }
97 for(int b = 0;b < 26;b++)
98 {
99 map[b + 87] = char(253);
100 }
101 for(int b = 0;b < 26;b++)
102 {
103 map[b + 127] = char(253);
104 }
105 for(int b = 0;b < 26;b++)
106 {
107 map[b + 167] = char(253);
108 }
109 for(int b = 0;b < 26;b++)
110 {
111 map[b + 207] = char(253);
112 }
113 for(int b = 0;b < 40;b++)
114 {
115 map[b + 240] = char(253);
116 }
117 for(int b = 0;b < 40;b++)
118 {
119 map[b + 280] = char(253);
120 }
121 break;
122 case
123 3://///////////////////////////////////////////////////////////////*
124 //
125 for(int b = 0;b < 30;b++)
126 {
127 map[b + 5] = char(253);
128 }
129 for(int b = 0;b < 30;b++)
130 {
131 map[b + 45] = char(253);
132 }
133 for(int b = 0;b < 30;b++)
134 {
135 map[b + 85] = char(253);
136 }
137 for(int b = 0;b < 30;b++)
138 {
139 map[b + 125] = char(253);
140 }
141 for(int b = 0;b < 30;b++)
142 {
143 map[b + 165] = char(253);
144 }
145 for(int b = 0;b < 30;b++)
146 {
147 map[b + 205] = char(253);
148 }
149 for(int b = 0;b < 40;b++)
150 {
151 map[b + 240] = char(253);
152 }
153 for(int b = 0;b < 40;b++)
154 {
155 map[b + 280] = char(253);
156 }
157 for(int b = 0;b < 40;b++)
158 {
159 map[b + 320] = char(253);
160 }
161 break;
162 case
163 4://///////////////////////////////////////////////////////////////*
164 //
165 for(int b = 0;b < 34;b++)
166 {
167 map[b + 3] = char(253);
168 }
169 for(int b = 0;b < 34;b++)
170 {
171 map[b + 43] = char(253);
172 }
173 for(int b = 0;b < 34;b++)
174 {
175 map[b + 83] = char(253);
176 }
177 for(int b = 0;b < 34;b++)
178 {
179 map[b + 123] = char(253);
180 }
181 for(int b = 0;b < 34;b++)
182 {
183 map[b + 163] = char(253);
184 }
185 for(int b = 0;b < 34;b++)
186 {
187 map[b + 203] = char(253);
188 }
189 for(int b = 0;b < 40;b++)
190 {
191 map[b + 240] = char(253);
192 }
193 for(int b = 0;b < 40;b++)
194 {
195 map[b + 280] = char(253);
196 }
197 for(int b = 0;b < 40;b++)
198 {
199 map[b + 320] = char(253);
200 }
201 for(int b = 0;b < 40;b++)
202 {
203 map[b + 360] = char(253);
204 }
205 break;
206 case
207 5://///////////////////////////////////////////////////////////////*
208 //
209
210 for(int b = 0;b < 38;b++)
211 {
212 map[b + 1] = char(253);
213 }
214 for(int b = 0;b < 38;b++)
215 {
216 map[b + 41] = char(253);
217 }
218 for(int b = 0;b < 38;b++)
219 {
220 map[b + 81] = char(253);
221 }
222 for(int b = 0;b < 38;b++)
223 {
224 map[b + 121] = char(253);
225 }
226 for(int b = 0;b < 38;b++)
227 {
228 map[b + 161] = char(253);
229 }
230 for(int b = 0;b < 38;b++)
231 {
232 map[b + 201] = char(253);
233 }
234 for(int b = 0;b < 40;b++)
235 {
236 map[b + 240] = char(253);
237 }
238 for(int b = 0;b < 40;b++)
239 {
240 map[b + 280] = char(253);
241 }
242 for(int b = 0;b < 40;b++)
243 {
244 map[b + 320] = char(253);
245 }
246 break;
247 case
248 6://///////////////////////////////////////////////////////////////*
249 //
250 for(int b = 0;b < 34;b++)
251 {
252 map[b + 3] = char(253);
253 }
254 for(int b = 0;b < 34;b++)
255 {
256 map[b + 43] = char(253);
257 }
258 for(int b = 0;b < 34;b++)
259 {
260 map[b + 83] = char(253);
261 }
262 for(int b = 0;b < 34;b++)
263 {
264 map[b + 123] = char(253);
265 }
266 for(int b = 0;b < 34;b++)
267 {
268 map[b + 163] = char(253);
269 }
270 for(int b = 0;b < 34;b++)
271 {
272 map[b + 203] = char(253);
273 }
274 for(int b = 0;b < 40;b++)
275 {
276 map[b + 240] = char(253);
277 }
278 for(int b = 0;b < 40;b++)
279 {
280 map[b + 280] = char(253);
281 }
282 for(int b = 0;b < 40;b++)
283 {
284 map[b + 320] = char(253);
285 }
286 for(int b = 0;b < 40;b++)
287 {
288 map[b + 360] = char(253);
289 }
290 for(int b = 0;b < 40;b++)
291 {
292 map[b + 400] = char(253);
293 }
294 break;
295 case
296 7://///////////////////////////////////////////////////////////////*
297 //
298 for(int b = 0;b < 40;b++)
299 {
300 map[b] = char(253);
301 }
302 for(int b = 0;b < 40;b++)
303 {
304 map[b + 40] = char(253);
305 }
306 for(int b = 0;b < 40;b++)
307 {
308 map[b + 80] = char(253);
309 }
310 for(int b = 0;b < 40;b++)
311 {
312 map[b + 120] = char(253);
313 }
314 for(int b = 0;b < 40;b++)
315 {
316 map[b + 160] = char(253);
317 }
318 for(int b = 0;b < 40;b++)
319 {
320 map[b + 200] = char(253);
321 }
322 for(int b = 0;b < 40;b++)
323 {
324 map[b + 240] = char(253);
325 }
326 for(int b = 0;b < 40;b++)
327 {
328 map[b + 280] = char(253);
329 }
330 for(int b = 0;b < 40;b++)
331 {
332 map[b + 320] = char(253);
333 }
334 for(int b = 0;b < 40;b++)
335 {
336 map[b + 360] = char(253);
337 }
338 break;
339 case
340 8://///////////////////////////////////////////////////////////////*
341 //
342 for(int b = 0;b < 40;b++)
343 {
344 map[b] = char(253);
345 }
346 for(int b = 0;b < 40;b++)
347 {
348 map[b + 40] = char(253);
349 }
350 for(int b = 0;b < 40;b++)
351 {
352 map[b + 80] = char(253);
353 }
354 for(int b = 0;b < 40;b++)
355 {
356 map[b + 120] = char(253);
357 }
358 for(int b = 0;b < 40;b++)
359 {
360 map[b + 160] = char(253);
361 }
362 for(int b = 0;b < 40;b++)
363 {
364 map[b + 200] = char(253);
365 }
366 for(int b = 0;b < 40;b++)
367 {
368 map[b + 240] = char(253);
369 }
370 for(int b = 0;b < 40;b++)
371 {
372 map[b + 280] = char(253);
373 }
374 for(int b = 0;b < 40;b++)
375 {
376 map[b + 320] = char(253);
377 }
378 for(int b = 0;b < 40;b++)
379 {
380 map[b + 360] = char(253);
381 }
382 for(int b = 0;b < 40;b++)
383 {
384 map[b + 400] = char(253);
385 }
386 for(int b = 0;b < 40;b++)
387 {
388 map[b + 440] = char(253);
389 }
390 for(int b = 0;b < 40;b++)
391 {
392 map[b + 480] = char(253);
393 }
394 break;
395 case
396 9://///////////////////////////////////////////////////////////////*
397 //
398 for(int b = 0;b < 40;b++)
399 {
400 map[b] = char(253);
401 }
402 for(int b = 0;b < 40;b++)
403 {
404 map[b + 40] = char(253);
405 }
406 for(int b = 0;b < 40;b++)
407 {
408 map[b + 80] = char(253);
409 }
410 for(int b = 0;b < 40;b++)
411 {
412 map[b + 120] = char(253);
413 }
414 for(int b = 0;b < 40;b++)
415 {
416 map[b + 160] = char(253);
417 }
418 for(int b = 0;b < 40;b++)
419 {
420 map[b + 200] = char(253);
421 }
422 for(int b = 0;b < 40;b++)
423 {
424 map[b + 240] = char(253);
425 }
426 for(int b = 0;b < 40;b++)
427 {
428 map[b + 280] = char(253);
429 }
430 for(int b = 0;b < 40;b++)
431 {
432 map[b + 320] = char(253);
433 }
434 for(int b = 0;b < 40;b++)
435 {
436 map[b + 360] = char(253);
437 }
438 for(int b = 0;b < 40;b++)
439 {
440 map[b + 400] = char(253);
441 }
442 for(int b = 0;b < 20 ;b++)
443 {
444 map[400 + 2 * b] = char(253);
445 }
446 for(int b = 0;b < 20 ;b++)
447 {
448 map[440 + 2 * b] = char(253);
449 }
450 break;
451 case
452 10://///////////////////////////////////////////////////////////////
453 *//
454 for(int b = 0;b < 40;b++)
455 {
456 map[b] = char(253);
457 }
458 for(int b = 0;b < 40;b++)
459 {
460 map[b + 40] = char(253);
461 }
462 for(int b = 0;b < 40;b++)
463 {
464 map[b + 80] = char(253);
465 }
466 for(int b = 0;b < 40;b++)
467 {
468 map[b + 120] = char(253);
469 }
470 for(int b = 0;b < 40;b++)
471 {
472 map[b + 160] = char(253);
473 }
474 for(int b = 0;b < 40;b++)
475 {
476 map[b + 200] = char(253);
477 }
478 for(int b = 0;b < 40;b++)
479 {
480 map[b + 240] = char(253);
481 }
482 for(int b = 0;b < 40;b++)
483 {
484 map[b + 280] = char(253);
485 }
486 for(int b = 0;b < 40;b++)
487 {
488 map[b + 320] = char(253);
489 }
490 for(int b = 0;b < 40;b++)
491 {
492 map[b + 360] = char(253);
493 }
494 for(int b = 0;b < 40;b++)
495 {
496 map[b + 400] = char(253);
497 }
498 for(int b = 0;b < 20 ;b++)
499 {
500 map[400 + 2 * b] = char(253);
501 }
502 for(int b = 0;b < 20 ;b++)
503 {
504 map[440 + 2 * b] = char(253);
505 }
506 for(int b = 0;b < 20 ;b++)
507 {
508 map[480 + 2 * b] = char(253);
509 }
510 for(int b = 0;b < 20 ;b++)
511 {
512 map[520 + 2 * b] = char(253);
513 }
514 for(int b = 0;b < 20 ;b++)
515 {
516 map[560 + 2 * b] = char(253);
517 }
518 break;
519 case 11:
520 for(int b = 0;b < 40;b++)
521 {
522 map[b] = char(253);
523 }
524 for(int b = 0;b < 40;b++)
525 {
526 map[b + 40] = char(253);
527 }
528 for(int b = 0;b < 40;b++)
529 {
530 map[b + 80] = char(253);
531 }
532 for(int b = 0;b < 40;b++)
533 {
534 map[b + 120] = char(253);
535 }
536 for(int b = 0;b < 40;b++)
537 {
538 map[b + 160] = char(253);
539 }
540 for(int b = 0;b < 40;b++)
541 {
542 map[b + 200] = char(253);
543 }
544 for(int b = 0;b < 40;b++)
545 {
546 map[b + 240] = char(253);
547 }
548 for(int b = 0;b < 40;b++)
549 {
550 map[b + 280] = char(253);
551 }
552 for(int b = 0;b < 40;b++)
553 {
554 map[b + 320] = char(253);
555 }
556 for(int b = 0;b < 40;b++)
557 {
558 map[b + 360] = char(253);
559 }
560 for(int b = 0;b < 40;b++)
561 {
562 map[b + 400] = char(253);
563 }
564 for(int b = 0;b < 20 ;b++)
565 {
566 map[400 + 2 * b] = char(253);
567 }
568 for(int b = 0;b < 20 ;b++)
569 {
570 map[440 + 2 * b] = char(253);
571 }
572 for(int b = 0;b < 20 ;b++)
573 {
574 map[480 + 2 * b] = char(253);
575 }
576 for(int b = 0;b < 20 ;b++)
577 {
578 map[520 + 2 * b] = char(253);
579 }
580 for(int b = 0;b < 20 ;b++)
581 {
582 map[560 + 2 * b] = char(253);
583 }
584 break;
585
586 default:
587 system("cls");
588 std::cout << "CONGRULATIONS ";
589 Sleep(5000);
590 }
591 PrepareGraphics();
592 }
593 ////////////////////////////////////////////////////////////////////
594 //////
595 void sp(int spalva)
596 {
597 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
598 spalva);
599 }
600 void game::LevelMenu()
601 {
602 std::cout <<"CONTROLS: > ^ < for moving and 1 / 2 for
603 shooting...";
604 Sleep(4500);
605 system("cls");
606 system("color a5");
607 sp(481);
608 std::cout << "CHOOSE YOUR LEVEL:";
609 std::cout <<"1." << std::endl;
610 std::cout <<"2." << std::endl;
611 std::cout <<"3." << std::endl;
612 std::cout <<"4." << std::endl;
613 std::cout <<"5." << std::endl;
614 std::cout <<"6." << std::endl;
615 std::cout <<"7." << std::endl;
616 std::cout <<"8." << std::endl;
617 std::cout <<"9." << std::endl;
618 std::cout <<"10."<< std::endl;
619 std::cout <<"11."<< std::endl;
620 int y;
621 while(y > 12 || y < 1)
622 {
623 std::cin >> y;
624 }
625 if(y == 1)
626 {
627 CurrentLevel = 1;
628 speed = 215;
629 }
630 else if(y == 2)
631 {
632 CurrentLevel = 2;
633 speed = 195;
634 }
635 else if(y == 3)
636 {
637 CurrentLevel = 3;
638 speed = 175;
639 }
640 else if(y == 4)
641 {
642 CurrentLevel = 4;
643 speed = 155;
644 }
645 else if(y == 5)
646 {
647 CurrentLevel = 5;
648 speed = 135;
649 }
650 else if(y == 6)
651 {
652 CurrentLevel = 6;
653 speed = 115;
654 }
655 else if(y == 7)
656 {
657 CurrentLevel = 7;
658 speed = 95;
659 }
660 else if(y == 8)
661 {
662 CurrentLevel = 8;
663 speed = 75;
664 }
665 else if(y == 9)
666 {
667 CurrentLevel = 9;
668 speed = 55;
669 }
670 else if(y == 10)
671 {
672 CurrentLevel = 10;
673 speed =35 ;
674 }
675 else if(y == 11)
676 {
677 CurrentLevel = 11;
678 speed = 28;
679 }
680 std::cout << "GET READY.";
681 Sleep(2500);
682 Levels();
683 }
684
685 void game::PrepareGraphics()
686 {
687 x = 1140;
688 map[x] = 'H';
689 graphics();
690 }
691
692 void game::graphics()
693 {
694 c = 0;
695 for(int CheckingForWin = 0;CheckingForWin < 40;CheckingForWin++)
696 {
697 if(map[CheckingForWin] == ' ')
698 {
699 c++;
700 }
701 }
702 if(c == 40)
703 {
704 CurrentLevel++;
705 std::cout << "Congrulations,you have passed this
706 level\n,let's try another one!";
707 Sleep(4000);
708 Levels();
709 }
710 std::cout << std::endl;
711 for(int k = 0;k < 40;k++ )
712 {
713 std::cout << char(219);
714 }
715 std::cout << std::endl;
716
717 for(int u = 0;u < 1800;u++)
718 {
719 if(u!= 0 && u % 40 == 0)
720 {
721 std::cout << std::endl;
722 }
723 /////////////////////////////////////
724 /////////////////////////////////////
725 /////////////////////////////////////
726 if(map[u + 40] == char(173))
727 {
728 map[u + 40] = ' ';
729 if(map[u]!=char(253))
730 {
731 map[u] = char(173);
732 }
733 else
734 {
735 map[u] = ' ';
736 points++;
737 }
738 }
739 else if(u <= 39 && map[u] == char(173))
740 {
741 map[u] = ' ';
742 }
743 if(map[u] == char(253) && map[u + 40 ] != char(253))
744 {
745 c = rand() % speed + 1;
746 if(c == 5)
747 {
748 map[u + 40] = 'o';
749 }
750 };
751 if(map[u] == 'o')
752 {
753 for(unsigned int g = 0;g != fake.size();g++)
754 {
755 if(fake[g] == u)
756 {
757 g = fake.size() - 1;
758 check = 1;
759 }
760 }
761 if(!check)
762 {
763 map[u] = ' ';
764 if(x == u + 40)
765 {
766 gameover();
767 }
768 map[u + 40] = 'o';
769 fake.push_back(u + 40);
770 }
771 };
772 check = 0;
773 std::cout << map[u];
774 }
775 for(int h = 1760;h < 1800;h++)
776 {
777 if(map[h] == 'o')
778 {
779 map[h] = ' ';
780 }
781 }
782 fake.clear();
783 std::cout << std::endl;
784 for(int k = 0;k < 40;k++ )
785 {
786 std::cout << char(219);
787 }
788 std::cout << std::endl;
789 std::cout << "\n\n\n\n Points:" << points;
790 LOGIC();
791 }
792
793 void game::gameover()
794 {
795 system("cls");
796 std::cout <<"GG,YOU'VE JUST LOSE!";
797 std::cout <<"You scored " << points << " points\n";
798 Sleep(2000);
799 std::cout <<"Restarting...";
800 Sleep(2000);
801 system("cls");
802 system("color a5");
803 sp(481);
804 LevelMenu();
805 }
806 void game::LOGIC()
807 {
808 if (GetAsyncKeyState(VK_LEFT))
809 {
810 if(x % 40 != 0)
811 {
812 if(map[x - 1] == 'o')
813 {
814 gameover();
815 };
816 x--;
817 map[x + 1] = ' ';
818 map[x] = 'H';
819 }
820 }
821 else if (GetAsyncKeyState(VK_RIGHT))
822 {
823 if((x + 1) % 40 != 0)
824 {
825 if(map[x + 1] == 'o')
826 {
827 gameover();
828 };
829 x++;
830 map[x - 1] = ' ';
831 map[x] = 'H';
832 }
833 }
834 else if (GetAsyncKeyState(VK_UP))
835 {
836 if(x > 480)
837 {
838 x-=40;
839 map[x+40] = ' ';
840 map[x] = 'H';
841 }
842 }
843 else if (GetAsyncKeyState(VK_DOWN))
844 {
845 if(x < 1760 )
846 {
847 x+=40;
848 map[x - 40] = ' ';
map[x] = 'H';
}
}
else{}
if(_kbhit())
{
char l = _getch();
if(l == '1' || l == '2')
{
map[x - 40] = char(173);
};
}
cls();
graphics();
}

int main()
{
system("color a5");
sp(481);
srand((unsigned)time(0));
game *memb;
memb = new game;
memb->LevelMenu();
}

Вам также может понравиться