跑酷天堂C++小黑框版

上:跳跃

左右:行走

  1 #include <bits/stdc++.h>
  2 #include <windows.h>
  3 #include <conio.h>
  4 
  5 using namespace std;
  6 
  7 char mmp[1001][1001] = {"                                                                                                                                                                                                        ",
  8                         "                                                                                                                                                                                                        ",
  9                         "                                                                                   ###                            #  #  #  #  #  #  #  ###         ####                              ###                ",
 10                         "                                                                                                             ##                              ####          ###  # # # #  ###     ##                      ",
 11                         "                                                                 ##         #####         ####                                                                                             ###          ",
 12                         "                                                                       ##                              ##                                                                                               ",
 13                         "                                                                                                ####                                                                                                    ",
 14                         "                                                                                                                                                                                               ###      ",
 15                         "                                                            ##                                                                                                                                          ",
 16                         "                                                                                                                                                                                                    ####",
 17                         "                                                                                                                                                                                                        ",
 18                         "                                      ##              ###                                                                                                                                               ",
 19                         "                          ##                   ####                                                                                                                                                     ",
 20                         "                  ###           ####                                                                                                                                                                    ",
 21                         "         ###                             ##                                                                                                                                                             ",
 22                         "                                                                                                                                                                                                        ",
 23                         "  O                                                                                                                                                                                                     ",
 24                         "#####                                                                                                                                                                                                   ",
 25                         "#####                                                                                                                                                                                                   ",
 26                         "#####                                                                                                                                                                                                   "
 27                        };//20 * 200;
 28 
 29 char putmmp[20][16];
 30 
 31 int jump[20] = {0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1};
 32 
 33 int main() {
 34 
 35     char ch;
 36     
 37     bool t = 1;
 38 
 39     int x = 16, y = 2, delayjump = 0;
 40     
 41     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
 42     
 43     while (1) {
 44 
 45         Sleep(40);
 46 
 47         if (y - 7 < 0) {
 48 
 49             for (register int i = 0; i < 20; i++) {
 50 
 51                 for (register int j = 0; j < 15; j++) {
 52 
 53                     putmmp[i][j] = mmp[i][j];
 54 
 55                 }
 56 
 57             }
 58 
 59         } else if (y + 7 > 199) {
 60 
 61             for (register int i = 0; i < 20; i++) {
 62 
 63                 int k = 14;
 64 
 65                 for (register int j = 199; j >= 85; j--, k--) {
 66 
 67                     putmmp[i][k] = mmp[i][j];
 68 
 69                 }
 70 
 71             }
 72 
 73         } else {
 74 
 75             for (register int i = 0; i < 20; i++) {
 76 
 77                 int k = 0;
 78 
 79                 for (register int j = y - 7; j <= y + 7; j++, k++) {
 80 
 81                     putmmp[i][k] = mmp[i][j];
 82 
 83                 }
 84 
 85             }
 86 
 87         }
 88         
 89         HANDLE hout;
 90         COORD coord;
 91         coord.X=0;
 92         coord.Y=0;
 93         hout=GetStdHandle(STD_OUTPUT_HANDLE);
 94         SetConsoleCursorPosition(hout,coord);
 95         
 96         for (register int i = 0; i < 20; i++) {
 97             
 98             bool t = 0;
 99             
100             for (register int j = 0; j < 15; j++) {
101                 
102                 if (putmmp[i][j] == 'O') {
103                     
104                     t = 1;
105                     
106                 }
107                 
108             }
109             
110             if (t) {
111                 
112                 for (register int j = 0; j < 15; j++) {
113                     
114                     if (putmmp[i][j] == 'O') {
115                         
116                         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
117                         putchar('O');
118                         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
119                         
120                     } else {
121                         
122                         putchar(putmmp[i][j]);
123                         
124                     }
125                     
126                 }
127                 
128                 putchar('
');
129                 
130             } else {
131                 
132                 puts(putmmp[i]);
133                 
134             }
135             
136         }
137         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
138         printf("%d %d
", x, y);
139         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
140 
141         if (delayjump > 0) {
142 
143             if (delayjump > 8 && (x + jump[delayjump] == -1 || mmp[x + jump[delayjump]][y] == '#')) {
144 
145                 delayjump = 5;
146 
147             } else {
148                 
149                 if (delayjump <= 8 && x + jump[delayjump] == 19) {
150                     
151                     mmp[x][y] = ' ';
152                     x = 16, y = 2;
153                     mmp[x][y] = 'O';
154                     
155                 }
156                 
157                 if (delayjump <= 8 && (x + jump[delayjump] == 20 || mmp[x + jump[delayjump]][y] == '#')) {
158 
159                     delayjump = 0;
160 
161                 } else {
162 
163                     mmp[x][y] = ' ';
164                     x += jump[delayjump];
165                     mmp[x][y] = 'O';
166                     delayjump--;
167 
168                 }
169 
170             }
171 
172 
173         }
174         
175         if (!delayjump) {
176             
177             if (x + 1 == 20) {
178                 
179                 mmp[x][y] = ' ';
180                 x = 16, y = 2;
181                 mmp[x][y] = 'O';
182                 
183             }
184             
185             if (mmp[x + 1][y] == ' ' && x < 19 && t) {
186                 
187                 t = !t;
188                 mmp[x][y] = ' ';
189                 x++;
190                 mmp[x][y] = 'O';
191                 
192             } else {
193                 
194                 t = !t;
195                 
196             }
197             
198         }
199 
200         if (kbhit()) {
201 
202             ch = getch();
203 
204             switch(ch) {
205 
206                 case 27 :
207 
208                     exit(0);
209 
210                     break;
211 
212                 case -32 :
213 
214                     ch = getch();
215 
216                     switch(ch) {
217 
218                         case 75 :
219 
220                             if (y > 0 && mmp[x][y - 1] == ' ') {
221 
222                                 mmp[x][y] = ' ';
223                                 y--;
224                                 mmp[x][y] = 'O';
225 
226                             }
227 
228                             break;
229 
230                         case 77 :
231 
232                             if (y < 199 && mmp[x][y + 1] == ' ') {
233 
234                                 mmp[x][y] = ' ';
235                                 y++;
236                                 mmp[x][y] = 'O';
237 
238                             }
239 
240                             break;
241 
242                         case 72 :
243 
244                             if (!delayjump && mmp[x + 1][y] == '#') {
245 
246                                 delayjump = 18;
247 
248                             }
249 
250                             break;
251 
252                     }
253 
254                     break;
255 
256             }
257 
258         }
259 
260     }
261 
262     return 0;
263 
264 }

 自动版:

  1 #include <bits/stdc++.h>
  2 #include <conio.h>
  3 #include <windows.h>
  4 
  5 using namespace std;
  6 
  7 char mmp[1001][1001] = {"                                                                                                    ",
  8                         "                                                                                                    ",
  9                         "                                              ####                                                  ",
 10                         "                                              #                                                     ",
 11                         "                                            ###         ###                 #####                   ",
 12                         "                                      ####                                           ####           ",
 13                         "                                      #                       ###     ###                           ",
 14                         "                  ####               ##                                                     ####    ",
 15                         "O         ####               ######                                                                 ",
 16                         "#####                                                                                              #"
 17                        };
 18 
 19 char putmmp[101][101];
 20 int jp[9] = {0, 1, 0, 1, 0, 1, 0, 1, 1};
 21 
 22 int main() {
 23 
 24     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
 25 
 26     int x = 8, y = 0, dj = 0, tick = 0;
 27 
 28     int clock2 = clock();
 29 
 30     while (1) {
 31 
 32         int clock1 = clock();
 33         clock2 = clock1;
 34 
 35         while (clock1 - clock2 <= 70) {
 36 
 37             Sleep(10);
 38             clock1 = clock();
 39 
 40         }
 41 
 42 
 43         if (y < 7) {
 44 
 45             for (register int i = 0; i < 10; i++) {
 46 
 47                 for (register int j = 0; j < 15; j++) {
 48 
 49                     putmmp[i][j] = mmp[i][j];
 50 
 51                 }
 52 
 53             }
 54 
 55         } else if (y > 92) {
 56 
 57             for (register int i = 0; i < 10; i++) {
 58 
 59                 for (register int j = 84, k = 0; j < 100; j++, k++) {
 60 
 61                     putmmp[i][k] = mmp[i][j];
 62 
 63                 }
 64 
 65             }
 66 
 67         } else {
 68 
 69             for (register int i = 0; i < 10; i++) {
 70 
 71                 for (register int j = y - 7, k = 0; j < y + 7; j++, k++) {
 72 
 73                     putmmp[i][k] = mmp[i][j];
 74 
 75                 }
 76 
 77             }
 78 
 79         }
 80 
 81         HANDLE hout;
 82         COORD coord;
 83         coord.X=0;
 84         coord.Y=0;
 85         hout=GetStdHandle(STD_OUTPUT_HANDLE);
 86         SetConsoleCursorPosition(hout,coord);
 87 
 88         for (register int i = 0; i < 10; i++) {
 89 
 90             if (i ^ x) {
 91 
 92                 puts(putmmp[i]);
 93 
 94             } else {
 95 
 96                 for (register int j = 0; j < 15; j++) {
 97 
 98                     if (putmmp[i][j] == 'O') {
 99 
100                         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
101 
102                         putchar('O');
103 
104                         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
105 
106                     } else {
107 
108                         putchar(putmmp[i][j]);
109 
110                     }
111 
112                 }
113 
114                 putchar('
');
115 
116             }
117 
118         }
119 
120         printf("%d
", y);
121 
122         if (kbhit()) {
123 
124             char ch = getch();
125 
126             if (ch == ' ' && (mmp[x + 1][y] == '#' || mmp[x + 1][y - 1] == '#')) {
127 
128                 dj = 8;
129 
130             }
131 
132             if (ch == 27) {
133 
134                 exit(0);
135 
136             }
137 
138         }
139 
140         if (dj > 0) {
141 
142             if (x - jp[dj] >= 0 && mmp[x - jp[dj]][y] == ' ') {
143 
144                 mmp[x][y] = ' ';
145                 x -= jp[dj];
146                 mmp[x][y] = 'O';
147 
148                 dj--;
149 
150             } else {
151 
152                 dj = 0;
153 
154             }
155 
156         } else {
157 
158             if (x == 9) {
159 
160                 mmp[x][y] = ' ';
161                 x = 8, y = 0;
162                 mmp[x][y] = 'O';
163                 y--;
164 
165             } else {
166 
167                 if (mmp[x + 1][y] == ' ') {
168 
169                     if (tick % 2 == 0) {
170 
171                         mmp[x][y] = ' ';
172                         x++;
173                         mmp[x][y] = 'O';
174 
175                     }
176 
177                 }
178 
179             }
180 
181         }
182 
183         mmp[x][y] = ' ';
184         y++;
185         if (mmp[x][y] == '#') {
186 
187             y--;
188 
189         }
190         if (y == 100) {
191 
192             y = 0;
193 
194             for (register int i = 0; i < 10; i++) {
195 
196                 putmmp[i][15] = ' ';
197 
198             }
199 
200         }
201         mmp[x][y] = 'O';
202         tick++;
203 
204     }
205 
206     return 0;
207 
208 }

转载请注明©Ice_watermelon233

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