找大佬的修改了一下

上代码!!

​
#include<iostream>
#include<string>
#include<ctime>
#include<cstdlib>
#include<windows.h>
#include<conio.h>using namespace std;int block00[4][4] = { { 10,0,0,0 },{ 1,1,1,1 },{ 0,0,0,0 },{ 0,0,0,0 } };
int block01[4][4] = { { 11,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 } };
int block02[4][4] = { { 12,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,1,0,0 } };
int block03[4][4] = { { 13,0,0,0 },{ 0,1,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } };
int block04[4][4] = { { 14,0,0,0 },{ 0,0,0,0 },{ 0,1,0,0 },{ 1,1,1,0 } };
int block05[4][4] = { { 15,0,0,0 },{ 0,1,0,0 },{ 0,1,1,0 },{ 0,1,0,0 } };
int block06[4][4] = { { 16,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 1,0,0,0 } };
int block07[4][4] = { { 17,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 },{ 0,1,0,0 } };
int block08[4][4] = { { 18,0,0,0 },{ 0,0,0,0 },{ 0,0,1,0 },{ 1,1,1,0 } };
int block09[4][4] = { { 19,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 0,1,1,0 } };
int block10[4][4] = { { 20,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,0,1,0 } };
int block11[4][4] = { { 21,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 1,1,0,0 } };
int block12[4][4] = { { 22,0,0,0 },{ 0,0,0,0 },{ 1,0,0,0 },{ 1,1,1,0 } };
int block13[4][4] = { { 23,0,0,0 },{ 0,1,1,0 },{ 0,1,0,0 },{ 0,1,0,0 } };
int block14[4][4] = { { 24,0,0,0 },{ 0,0,0,0 },{ 0,1,1,0 },{ 1,1,0,0 } };
int block15[4][4] = { { 25,0,0,0 },{ 1,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } };
int block16[4][4] = { { 26,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 0,1,1,0 } };
int block17[4][4] = { { 27,0,0,0 },{ 0,0,1,0 },{ 0,1,1,0 },{ 0,1,0,0 } };
int block18[4][4] = { { 28,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 1,1,0,0 } };void initialWindow(HANDLE hOut);//初始化窗口
void initialPrint(HANDLE hOut);//初始化界面
void gotoXY(HANDLE hOut, int x, int y);//移动光标
void roundBlock(HANDLE hOut, int block[4][4]);//随机生成方块并打印到下一个方块位置
bool collisionDetection(int block[4][4], int map[21][12], int x, int y);//检测碰撞
void printBlock(HANDLE hOut, int block[4][4], int x, int y);//打印方块
void clearBlock(HANDLE hOut, int block[4][4], int x, int y);//消除方块
void myLeft(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//左移
void myRight(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//右移
void myUp(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//顺时针旋转90度
int myDown(HANDLE hOut, int block[4][4], int map[21][12], int &x, int y);//加速下落
void myStop(HANDLE hOut, int block[4][4]);//游戏暂停
void gameOver(HANDLE hOut, int block[4][4], int map[21][12]);//游戏结束
void eliminateRow(HANDLE hOut, int map[21][12], int &val, int &fraction, int &checkpoint);//判断是否能消行并更新分值
int main()
{int map[21][12];int blockA[4][4];//候选区的方块int blockB[4][4];//下落中的方块int positionX, positionY;//方块左上角的坐标bool check;//检查方块还能不能下落char key;//用来存储按键int val;//用来控制下落速度int fraction;//用来存储得分int checkpoint;//用来存储关卡int times;HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//获取标准输出设备句柄initialWindow(hOut);
initial:gotoXY(hOut, 0, 0);initialPrint(hOut);check = true;val = 50;fraction = 0;checkpoint = 1;times = val;for (int i = 0; i < 20; ++i){for (int j = 1; j < 11; ++j){map[i][j] = 0;}}for (int i = 0; i < 20; ++i){map[i][0] = map[i][11] = 1;}for (int i = 0; i < 12; ++i){map[20][i] = 1;}srand((unsigned)time(NULL));roundBlock(hOut, blockA);while (true){if (check){eliminateRow(hOut, map, val, fraction, checkpoint);check = false;positionX = -3;positionY = 4;if (collisionDetection(blockA, map, positionX, positionY)){for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){blockB[i][j] = blockA[i][j];}}roundBlock(hOut, blockA);}else{gameOver(hOut, blockA, map);goto initial;}}printBlock(hOut, blockB, positionX, positionY);if (_kbhit()){key = _getch();switch (key){case 72:myUp(hOut, blockB, map, positionX, positionY);break;case 75:myLeft(hOut, blockB, map, positionX, positionY);break;case 77:myRight(hOut, blockB, map, positionX, positionY);break;case 80:switch (myDown(hOut, blockB, map, positionX, positionY)){case 0:check = false;break;case 1:check = true;break;case 2:gameOver(hOut, blockB, map);goto initial;default:break;}break;case 32:myStop(hOut, blockA);break;case 27:exit(0);default:break;}}Sleep(20);if (0 == --times){switch (myDown(hOut, blockB, map, positionX, positionY)){case 0:check = false;break;case 1:check = true;break;case 2:gameOver(hOut, blockB, map);goto initial;default:break;}times = val;}}cin.get();return 0;
}void initialWindow(HANDLE hOut)
{SetConsoleTitle("俄罗斯方块");COORD size = { 80, 25 };SetConsoleScreenBufferSize(hOut, size);SMALL_RECT rc = { 0, 0, 79, 24 };SetConsoleWindowInfo(hOut, true, &rc);CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };SetConsoleCursorInfo(hOut, &cursor_info);
}void initialPrint(HANDLE hOut)
{SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);for (int i = 0; i < 20; ++i){cout << "■                    ■☆                      ☆" << endl;}gotoXY(hOut, 26, 0);cout << "☆☆☆☆☆☆☆☆☆☆☆";gotoXY(hOut, 0, 20);cout << "■■■■■■■■■■■■☆☆☆☆☆☆☆☆☆☆☆☆☆";gotoXY(hOut, 26, 1);cout << "分    数:      ";gotoXY(hOut, 26, 2);cout << "关    卡:      ";gotoXY(hOut, 26, 4);cout << "下一方块:";gotoXY(hOut, 26, 9);cout << "操作方法:";gotoXY(hOut, 30, 11);cout << "↑:旋转 ↓:速降";gotoXY(hOut, 30, 12);cout << "→:右移 ←:左移";gotoXY(hOut, 30, 13);cout << "空格键:开始/暂停";gotoXY(hOut, 30, 14);cout << "Esc 键:退出";gotoXY(hOut, 26, 16);cout << "关    于:";gotoXY(hOut, 30, 18);cout << "俄罗斯方块V1.0";gotoXY(hOut, 35, 19);cout << "作者:潘约尔";
}void gotoXY(HANDLE hOut, int x, int y)
{COORD pos;pos.X = x;pos.Y = y;SetConsoleCursorPosition(hOut, pos);
}void roundBlock(HANDLE hOut, int block[4][4])
{clearBlock(hOut, block, 5, 15);switch (rand() % 19){case 0:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block00[i][j];}}break;case 1:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block01[i][j];}}break;case 2:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block02[i][j];}}break;case 3:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block03[i][j];}}break;case 4:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block04[i][j];}}break;case 5:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block05[i][j];}}break;case 6:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block06[i][j];}}break;case 7:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block07[i][j];}}break;case 8:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block08[i][j];}}break;case 9:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block09[i][j];}}break;case 10:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block10[i][j];}}break;case 11:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block11[i][j];}}break;case 12:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block12[i][j];}}break;case 13:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block13[i][j];}}break;case 14:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block14[i][j];}}break;case 15:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block15[i][j];}}break;case 16:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block16[i][j];}}break;case 17:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block17[i][j];}}break;case 18:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block18[i][j];}}break;default:break;}printBlock(hOut, block, 5, 15);
}bool collisionDetection(int block[4][4], int map[21][12], int x, int y)
{for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){if (x + i >= 0 && y + j >= 0 && map[x + i][y + j] == 1 && block[i][j] == 1){return false;}}}return true;
}void printBlock(HANDLE hOut, int block[4][4], int x, int y)
{switch (block[0][0]){case 10:case 11:SetConsoleTextAttribute(hOut, FOREGROUND_GREEN);break;case 12:case 13:case 14:case 15:SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);break;case 16:case 17:case 18:case 19:SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);break;case 20:case 21:case 22:case 23:SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);break;case 24:case 25:SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);break;case 26:case 27:SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_INTENSITY);break;case 28:SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);break;default:break;}for (int i = 0; i < 4; ++i){if (i + x >= 0){for (int j = 0; j < 4; ++j){if (block[i][j] == 1){gotoXY(hOut, 2 * (y + j), x + i);cout << "■";}}}}
}void clearBlock(HANDLE hOut, int block[4][4], int x, int y)
{for (int i = 0; i < 4; ++i){if (i + x >= 0){for (int j = 0; j < 4; ++j){if (block[i][j] == 1){gotoXY(hOut, 2 * (y + j), x + i);cout << "  ";}}}}
}void gameOver(HANDLE hOut, int block[4][4], int map[21][12])
{SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);gotoXY(hOut, 9, 8);cout << "GAME OVER";gotoXY(hOut, 8, 9);cout << "空格键:重来";gotoXY(hOut, 8, 10);cout << "ESC键:退出";char key;while (true){key = _getch();if (key == 32){return;}if (key == 27){exit(0);}}
}int myDown(HANDLE hOut, int block[4][4], int map[21][12], int &x, int y)
{if (collisionDetection(block, map, x + 1, y)){clearBlock(hOut, block, x, y);++x;return 0;}if (x < 0){return 2;}for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){if (block[i][j] == 1){map[x + i][y + j] = 1;SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);gotoXY(hOut, 2 * (y + j), x + i);cout << "■";}}}return 1;
}void myLeft(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{if (collisionDetection(block, map, x, y - 1)){clearBlock(hOut, block, x, y);--y;}
}void myRight(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{if (collisionDetection(block, map, x, y + 1)){clearBlock(hOut, block, x, y);++y;}
}void myUp(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{switch (block[0][0]){case 10:if (collisionDetection(block01, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block01[i][j];}}}break;case 11:if (collisionDetection(block00, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block00[i][j];}}}else if (collisionDetection(block00, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block00[i][j];}}--y;}else if (collisionDetection(block00, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block00[i][j];}}++y;}else if (collisionDetection(block00, map, x, y - 2)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block00[i][j];}}y = y - 2;}else if (collisionDetection(block00, map, x, y + 2)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block00[i][j];}}y = y + 2;}break;case 12:if (collisionDetection(block03, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block03[i][j];}}}else if (collisionDetection(block03, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block03[i][j];}}--y;}else if (collisionDetection(block03, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block03[i][j];}}++y;}break;case 13:if (collisionDetection(block04, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block04[i][j];}}}else if (collisionDetection(block04, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block04[i][j];}}--y;}else if (collisionDetection(block04, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block04[i][j];}}++y;}break;case 14:if (collisionDetection(block05, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block05[i][j];}}}else if (collisionDetection(block05, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block05[i][j];}}--y;}else if (collisionDetection(block05, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block05[i][j];}}++y;}break;case 15:if (collisionDetection(block02, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block02[i][j];}}}else if (collisionDetection(block02, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block02[i][j];}}--y;}else if (collisionDetection(block02, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block02[i][j];}}++y;}break;case 16:if (collisionDetection(block07, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block07[i][j];}}}else if (collisionDetection(block07, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block07[i][j];}}--y;}else if (collisionDetection(block07, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block07[i][j];}}++y;}break;case 17:if (collisionDetection(block08, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block08[i][j];}}}else if (collisionDetection(block08, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block08[i][j];}}--y;}else if (collisionDetection(block08, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block08[i][j];}}++y;}break;case 18:if (collisionDetection(block09, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block09[i][j];}}}else if (collisionDetection(block09, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block09[i][j];}}--y;}else if (collisionDetection(block09, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block09[i][j];}}++y;}break;case 19:if (collisionDetection(block06, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block06[i][j];}}}else if (collisionDetection(block06, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block06[i][j];}}--y;}else if (collisionDetection(block06, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block06[i][j];}}++y;}break;case 20:if (collisionDetection(block11, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block11[i][j];}}}else if (collisionDetection(block11, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block11[i][j];}}--y;}else if (collisionDetection(block11, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block11[i][j];}}++y;}break;case 21:if (collisionDetection(block12, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block12[i][j];}}}else if (collisionDetection(block12, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block12[i][j];}}--y;}else if (collisionDetection(block12, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block12[i][j];}}++y;}break;case 22:if (collisionDetection(block13, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block13[i][j];}}}else if (collisionDetection(block13, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block13[i][j];}}--y;}else if (collisionDetection(block13, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block13[i][j];}}++y;}break;case 23:if (collisionDetection(block10, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block10[i][j];}}}else if (collisionDetection(block10, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block10[i][j];}}--y;}else if (collisionDetection(block10, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block10[i][j];}}++y;}break;case 24:if (collisionDetection(block15, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block15[i][j];}}}else if (collisionDetection(block15, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block15[i][j];}}--y;}else if (collisionDetection(block15, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block15[i][j];}}++y;}break;case 25:if (collisionDetection(block14, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block14[i][j];}}}else if (collisionDetection(block14, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block14[i][j];}}--y;}else if (collisionDetection(block14, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block14[i][j];}}++y;}break;case 26:if (collisionDetection(block17, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block17[i][j];}}}else if (collisionDetection(block17, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block17[i][j];}}--y;}else if (collisionDetection(block17, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block17[i][j];}}++y;}break;case 27:if (collisionDetection(block16, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block16[i][j];}}}else if (collisionDetection(block16, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block16[i][j];}}--y;}else if (collisionDetection(block16, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block16[i][j];}}++y;}break;default:break;}
}void myStop(HANDLE hOut, int block[4][4])
{clearBlock(hOut, block, 5, 15);SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);gotoXY(hOut, 30, 7);cout << "游戏暂停";char key;while (true){key = _getch();if (key == 32){gotoXY(hOut, 30, 7);cout << "        ";printBlock(hOut, block, 5, 15);return;}if (key == 27){exit(0);}}
}void eliminateRow(HANDLE hOut, int map[21][12], int &val, int &fraction, int &checkpoint)
{SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);for (int i = 19; i >= 0; --i){int x = 0;for (int j = 1; j < 11; ++j){x += map[i][j];}if (x == 10){fraction += 100;if (val > 1 && fraction / 1000 + 1 != checkpoint){checkpoint = fraction / 1000 + 1;val -= 5;}for (int m = i; m > 0; --m){for (int n = 1; n < 11; ++n){map[m][n] = map[m - 1][n];gotoXY(hOut, 2 * n, m);if (map[m][n] == 1){cout << "■";}else{cout << "  ";}}}++i;}}gotoXY(hOut, 36, 1);cout << fraction;gotoXY(hOut, 36, 2);cout << checkpoint;
}​

俄罗斯方块代码(c++)相关推荐

  1. 用VB6写的一个简单俄罗斯方块代码

    网络上有很多俄罗斯方块代码.它们大都为了视觉效果,程序比较复杂,不利于学习游戏编程.所以我写了个简单俄罗斯方块代码,尽量用VB本身的功能,没有复杂的DirectX. 下载(注意修改下载后的扩展名) m ...

  2. 一个画质很好的俄罗斯方块代码(c++)

    最近网上有很多俄罗斯方块代码,但是我觉得画质不怎么好,于是改进了一下,希望对你有所帮助 老样子,直接上源码: #include <iostream> #include <string ...

  3. 俄罗斯方块代码——c++实现

    用codeblock实现不了,缺少库函数,windows的kpi.555 现在还么解决办法,不过代码挺好的,贴吧大神多. 2017-5-2 #include<windows.h> #inc ...

  4. python标准库pygame_用python基础百行之内以pygame为库的俄罗斯方块代码

    俄罗斯方块准备好久了,之前很多内容学的不太好,在网上找了找教程,结果都是用面向对象的方法,我要很仔细的看才能看懂,然而看懂了我自己还是不会写,于是我写了个仅仅用基础语法写明白的俄罗斯方块(if-eli ...

  5. python俄罗斯方块代码34行_python turtle实现俄罗斯方块 基础版

    本项目通过python自带库tkinter实现,无需安装第三方库 本项目基于python3版本开发(如果你的是python2.x,运行可能会有问题) 一.基础界面 1 搭建基础窗体 使用tkinter ...

  6. Python小项目俄罗斯方块代码基于pygame编写

    python实习作业或者期末作业,俄罗斯方块,基于pygame编写 有很多小伙伴想要找一些小项目练练手,下面是我在闲暇时写的一个俄罗斯方块的一个小游戏,它是基于pygame板块来实现的 这是它的首页界 ...

  7. python俄罗斯方块代码34行_少儿编程分享:码趣君教你用Python编写俄罗斯方块(四)...

    接下来要进入操作部分了 坚持才能获得最后的成就感噢 用移动变量处理用户输入 216. elif (event.key == K_LEFT or event.key == K_a): 217. movi ...

  8. java俄罗斯方块七中图形类_shell脚本俄罗斯方块--代码真正详解

    无意中看到代码,想仔细了解下源码实现,结果网上搜索都是抄袭的一个版本,有的就写了个开头的分析,没有具体代码分析.所以个人就花了点时间,详细分析了一下代码,在这里分享给大家. 排版不会弄,将就看吧,转载 ...

  9. php俄罗斯方块代码,JavaScript实现俄罗斯方块游戏过程分析及源码分享_javascript技巧...

    2)旋转, 需要数理逻辑, 一个点相对另外一个点旋转90度的问题. 3)定时和监听键盘事件机制让游戏自动运行下去. //开始 function begin(e){ e.disabled = true; ...

最新文章

  1. 一次性搞定权限树遍历(通用解决方案)
  2. 用matlab读取三角波及其频谱,信号与系统利用MATLAB分析信号频谱作业(第四章)以及结论.doc...
  3. 一个类型思考了 8 年,依旧是最好的! | 每日趣闻
  4. 计算机前端专业术语,学习计算机知识必须懂得50个专业术语
  5. Android 事件分发面试
  6. 从架构理解价值-我的软件世界观
  7. 抽象工厂和工厂方法示例_工厂方法设计模式示例
  8. 解决:未能将管道连接到虚拟机: 所有的管道范例都在使用中。
  9. Volley缓存说明——一个请求两次回调
  10. Linux用户与组命令之groupadd
  11. 第二讲:Obj-C 点语法
  12. 2.ubuntu 配置目录
  13. matlab 例题sin,matlab基础练习题(带答案).doc
  14. SpringBoot2.4.2+Vue集成Activiti6流程引擎
  15. php下载xlsx到本地,Laravel 5.8 实现Excel 下载(将信息数据导出成Excel下载到本地)...
  16. redis常用命令总结,一文足以(5种基本数据结构+bitmap+Geo+HyperLogLog+Streams)
  17. 那些以玩笑说出口的话,往往是最真的表达
  18. 企业为什么要做等保?不做等保有什么后果?
  19. 机器学习之朴素贝叶斯(一):朴素贝叶斯的介绍、概率基础(拉普拉斯平滑)、sklearn朴素贝叶斯实现API、朴素贝叶斯分类的优缺点、文本的特征工程
  20. 微软服务器为何时间总是慢,登录微软账户特别慢的原因

热门文章

  1. 【USACO】股票市场
  2. Qt的事件过滤器installEventFilter
  3. 2020低压电工实操考试视频及低压电工在线考试
  4. 租号玩服务器未响应,win10cf进度条不动
  5. 插件之ContentProvider的管理
  6. 基于python+opencv利用颜色,区分多个目标(附带详细代码)
  7. Spring boot项目上传Linux服务器后 上传图片后,图片路径报404,图片路径映射问题
  8. 暗黑3服务器维护到几点,暗黑3各大区的维护状态和维护时间
  9. 第八届蓝桥杯-第四题方格分割
  10. 批量下载oppo云中相册源文件