用c++写一个别踩白块的游戏代码
时间: 2023-08-24 14:16:24 浏览: 43
好的,下面是一个简单的 C++ 别踩白块游戏的代码示例:
```c++
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
const int WIDTH = 40;
const int HEIGHT = 20;
const int SPEED = 100;
int x = 0;
int y = 0;
int score = 0;
bool gameOver = false;
char board[HEIGHT][WIDTH];
void initBoard() {
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
if (i == HEIGHT - 1) {
board[i][j] = '_';
} else {
board[i][j] = ' ';
}
}
}
}
void drawBoard() {
system("cls");
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
cout << board[i][j];
}
cout << endl;
}
cout << "Score: " << score << endl;
}
void updateBoard() {
for (int i = HEIGHT - 1; i > 0; i--) {
for (int j = 0; j < WIDTH; j++) {
board[i][j] = board[i - 1][j];
}
}
int randNum = rand() % WIDTH;
for (int j = 0; j < WIDTH; j++) {
if (j == randNum) {
board[0][j] = '_';
} else {
board[0][j] = ' ';
}
}
}
void processInput() {
if (_kbhit()) {
switch (_getch()) {
case 'a':
if (x > 0) {
x--;
}
break;
case 'd':
if (x < WIDTH - 1) {
x++;
}
break;
case 'q':
gameOver = true;
break;
}
}
}
void checkCollision() {
if (board[y][x] == '_') {
score++;
y++;
} else if (board[y][x] == ' ') {
gameOver = true;
}
}
int main() {
srand(time(NULL));
initBoard();
while (!gameOver) {
drawBoard();
updateBoard();
processInput();
checkCollision();
Sleep(SPEED);
}
cout << "Game Over!" << endl;
cout << "Final Score: " << score << endl;
return 0;
}
```
这个游戏的原理是在控制台中打印出一个 20 行 40 列的棋盘,然后在棋盘的最上面随机出现一个白块,玩家需要控制一个小黑块左右移动,通过按下 'a' 键向左移动,按下 'd' 键向右移动,避免踩到白块,踩到白块得分。游戏会不断地更新棋盘,让白块不断地向下移动。当玩家踩到白块,得分,白块消失,然后下一个白块出现在最上面;当玩家踩到黑块或者游戏结束,游戏结束,显示最终得分。