#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);//sfjdksl;asldkfjkdsla;slkdfjjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjadjad;fkakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakaka;lsfdjlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdlksfdjlkdsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsf
}
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();
C++小游戏 (俄罗斯方块).zip
5星 · 超过95%的资源 需积分: 27 45 浏览量
2023-01-14
16:52:44
上传
评论 2
收藏 4KB ZIP 举报
Sirius·Black
- 粉丝: 1711
- 资源: 45
最新资源
- 农村信用社联合社计算机信息系统投产与变更管理办.docx
- 农村信用社联合社计算机信息系统数据管理办法.docx
- 利用SPSS作临床效度分析线上计算网站介绍-医学研究部统计谘.(医学PPT课件).ppt
- 利用Zabbix监控mysqldump定时备份数据库状态.docx
- 利用计算机解决问题的基本过程.doc
- 化工铁路通信工程总结.doc
- 北京大学网络教育软件工程作业.docx
- 医药公司(连锁店)计算机操作规程未新系统的自行按照旧制修改-新系统过制的编号加修模版.doc
- 医药公司(连锁店)计算机系统操作规程模版.doc
- 医药连锁门店计算机系统的操作和管理程序未新系统的自行按照旧制修改-新系统过制的编号加修模版.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页