用c++帮我写个俄罗斯方块
时间: 2023-03-03 12:52:01 浏览: 61
好的,下面是一个简单的俄罗斯方块的 C 代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define HEIGHT 20
#define WIDTH 10
int board[HEIGHT][WIDTH] = {0};
int current_piece[4][4] = {0};
int current_row = 0, current_col = 0;
int score = 0;
int pieces[7][4][4] = {
// I piece
{
{0,0,0,0},
{1,1,1,1},
{0,0,0,0},
{0,0,0,0}
},
// J piece
{
{1,0,0,0},
{1,1,1,0},
{0,0,0,0},
{0,0,0,0}
},
// L piece
{
{0,0,1,0},
{1,1,1,0},
{0,0,0,0},
{0,0,0,0}
},
// O piece
{
{1,1,0,0},
{1,1,0,0},
{0,0,0,0},
{0,0,0,0}
},
// S piece
{
{0,1,1,0},
{1,1,0,0},
{0,0,0,0},
{0,0,0,0}
},
// T piece
{
{0,1,0,0},
{1,1,1,0},
{0,0,0,0},
{0,0,0,0}
},
// Z piece
{
{1,1,0,0},
{0,1,1,0},
{0,0,0,0},
{0,0,0,0}
}
};
void init() {
// 设置随机种子
srand(time(NULL));
// 初始化当前方块
int piece_type = rand() % 7;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
current_piece[i][j] = pieces[piece_type][i][j];
}
}
current_row = 0;
current_col = WIDTH / 2 - 2;
}
void draw_board() {
system("cls"); // 清屏
printf("Score: %d\n\n", score);
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
if (board[i][j] || (i >= current_row && i < current_row + 4 && j >= current_col && j < current_col + 4 && current_piece[i-current_row][j-current_col])) {
printf("#");
} else {
printf(".");
}
}
printf("\n");
}
}
int check_collision(int row, int col, int piece[4][4]) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (piece[i][j] && (row+i >= HEIGHT || col+j