C++俄罗斯方块代码Word文件下载.docx
- 文档编号:21725322
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:36
- 大小:19.32KB
C++俄罗斯方块代码Word文件下载.docx
《C++俄罗斯方块代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++俄罗斯方块代码Word文件下载.docx(36页珍藏版)》请在冰豆网上搜索。
75
#defineright
77
#defineesc
27
HANDLEhandle;
inta1[4][4]={{1},{1,1,1}};
//七种方块的二维数组
inta2[4][4]={{0,1},{1,1,1}};
inta3[4][4]={{1,1},{0,1,1}};
inta4[4][4]={{0,0,1},{1,1,1}};
inta5[4][4]={{0,1,1},{1,1}};
inta6[4][4]={{1,1,1,1}};
inta7[4][4]={{1,1},{1,1}};
introw=0;
//列数
intscore=0;
intlevel=0;
int*block1=NULL;
int*block2=NULL;
int*block3=NULL;
intcoordinate[12][18]={0};
//坐标数组,边框12*18(最后一行,两边边框
计算在内)
intjudge=0;
intscorex=0;
inttemp[4][4]={0};
voidmain()//主函数
{
intt=1;
handle=initiate();
while(t)
t=0;
begin();
sndPlaySound("
music.wav"
SND_LOOP|SND_ASYNC);
frame();
WORDwColors[1];
wColors[0]=FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY
;
for(intk=1;
k<
=999999;
k++)
if(ifgameover())//判断是否结束
textout(handle,34,10,wColors,1,"
GameOver"
);
Sleep(800);
end();
}
else
if(k==1)
block2=getblocks();
block3=block2;
//block2指向将出现的方块地址
//获取下一个新的方块
block1=block3;
row=52;
clearsquare(16);
//擦除next的方块
block1=block2;
drawblocks(15);
//在next显示下一块方块图形
row=34;
for(inti=4;
i<
=7;
i++)//所构建的方块图形最多只有占有两排,所以只
用4-7即可对应
if(*(block1+i))
textout(handle,26+i*2,4,wColors,1,"
■"
//方块先露出下面
部分
Sleep(500-50*level);
for(intline=4;
line<
=22;
line++)//方块自主下
落,方块从第四排开始出现
if(isavailable(line))//检验刚产生的
方块是否碰壁,碰到已落方块
clearsquare(line);
//消除方块先
露初的下面分
drawblocks(line);
//产生完整
的下落方块
move(line);
remember(line);
//落定后将
这些位置对应的all数组中元素置1
deleteline(line);
//消行以及加
分
if(line==4)
judge=1;
break;
voidbegin()
inti=1;
wColors[0]=FOREGROUND_GREEN|FOREGROUND_INTENSITY;
WORDwColors1[2];
wColors1[0]=FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTE
NSITY;
wColors1[1]=FOREGROUND_RED|FOREGROUND_INTENSITY;
textout(handle,18,4,wColors,1,"
◢◣◢◣"
textout(handle,18,5,wColors,1,"
◢◎◣◢◎◣"
textout(handle,18,6,wColors,1,"
◢█████████◣"
textout(handle,18,7,wColors,1,"
██◤^^◥██"
textout(handle,18,8,wColors,1,"
██
██"
textout(handle,18,9,wColors,1,"
◢██
██◣"
textout(handle,18,10,wColors,1,"
██◤●
●◥██"
textout(handle,18,11,wColors,1,"
██◎
◎██"
textout(handle,18,12,wColors,1,"
◥█◣
T
◢█◤"
textout(handle,18,13,wColors,1,"
██◣
◢██"
textout(handle,18,14,wColors,1,"
◥███████◤"
textout(handle,18,15,wColors,1,"
"
textout(handle,18,16,wColors,1,"
简单◥███████◤中等"
textout(handle,18,17,wColors,1,"
请按1
█
请按2"
textout(handle,18,18,wColors,1,"
█"
textout(handle,18,19,wColors,1,"
◢██◣"
textout(handle,18,20,wColors,1,"
困难
请按3"
textout(handle,54,22,wColors,1,"
MADEBY"
while(i)
textout(handle,30,8,wColors1,2,"
俄罗斯方块"
"
if(_kbhit())//输入等级
switch(_getch())
case'
1'
:
level=1;
i=0;
//跳出循环
2'
level=4;
3'
level=7;
system("
cls"
//清屏
voidframe()//边框的设定
wColors[0]=FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTE
WORDwColors1[1];
wColors1[0]=FOREGROUND_RED|FOREGROUND_INTENSITY;
for(inti=0;
=11;
i++)
coordinate[i][17]=1;
//底排边框定义为
1
for(intj=0;
j<
=17;
j++)
coordinate[0][j]=1;
//两边边框定义为
coordinate[11][j]=1;
charstring[5];
textout(handle,59,5,wColors,1,itoa(level,string,10));
textout(handle,52,5,wColors,1,"
level:
textout(handle,52,9,wColors,1,"
score:
0"
textout(handle,52,13,wColors,1,"
next:
textout(handle,10,6,wColors1,1,"
暂停SPACE"
textout(handle,10,7,wColors1,1,"
退出ESC"
textout(handle,10,8,wColors1,1,"
翻转↑"
textout(handle,10,9,wColors1,1,"
向右→"
textout(handle,10,10,wColors1,1,"
向左←"
textout(handle,10,11,wColors1,1,"
加速↓"
textout(handle,33,2,wColors,1,"
来~战个痛"
for(intm=13;
m<
=24;
m++)
textout(handle,2*m,3,wColors,1,"
═"
//上边框
for(intn=4;
n<
=21;
n++)
textout(handle,26,n,wColors,1,"
‖"
//左边框
for(intk=4;
textout(handle,48,k,wColors,1,"
//右边框
for(intl=13;
l<
=23;
l++)
textout(handle,2*l,21,wColors,1,"
//下边框
textout(handle,26,3,wColors,1,"
◤"
textout(handle,48,3,wColors,1,"
◥"
textout(handle,26,21,wColors,1,"
◣"
textout(handle,48,21,wColors,1,"
◢"
int*getblocks()//随机方块生成
int*m=NULL;
srand(time(NULL));
intn=rand()%7;
switch(n)
case0:
m=&
a1[0][0];
case1:
a2[0][0];
case2:
a3[0][0];
case3:
a4[0][0];
case4:
a5[0][0];
case5:
a6[0][0];
case6:
a7[0][0];
returnm;
voiddrawblocks(intline)//出现方块
wColors[0]=FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTEN
SITY;
=15;
inttemp;
temp=j/4;
if(*(block1+j))
textout(handle,row+j*2-temp*8,line+temp,wColors,1,"
voidclearsquare(intline)//方块消失
wColors[0]=FOREGROUND_BLUE|FOREGROUND_INTENSITY;
if(line==4)//针对消除刚产生的下排
textout(handle,34,4,wColors,1,"
textout(handle,36,4,wColors,1,"
textout(handle,38,4,wColors,1,"
textout(handle,40,4,wColors,1,"
for(intm=0;
temp=m/4;
//得0-3对应方块数组1-4行
if(*(block1+m))
textout(handle,row+m*2-temp*8,line-1+temp,wColors,1,"
voidmove(intline)//方块的左右移动,加速下落,翻转等
intmid=0,speed=100-10*level;
while(mid<
speed)
if(_kbhit())
case72:
//翻转
turn(line);
case75:
//左移
row=row-2;
//纵坐标减2
if(isavailable(line))//判断是否能移动
row=row+2;
clearsquare(line+1);
//消除原来图案,line+1是避免line=4
程序出错
//出现新图案
//若不能移动则纵坐标不变
case77:
//右移
if(isavailable(line))
case80:
//加速下落,即直接跳除循环
mid=speed;
case27:
//终止游戏
case32:
//暂停
intflag=1;
while(flag)
if(_getch()==32)
flag=0;
Sleep(10);
default:
Sleep(8);
//使方块延迟
mid++;
voidturn(intline)
//消除原来的图案
intb[4][4]={0};
//保存旋转前的方块
intnum=0,l=0;
=3;
for(intn=0;
b[m][n]=*(block1+m*4+n);
//把b[4][4]全赋值为当前图形数组
temp[m][n]=0;
for(inti=3;
i>
=0;
i--)//按行从下向上扫描
4;
j++)//按列从左向右扫描
if(b[i][j])//如果为有效点,则进行90度旋转
temp[j][l]=b[i][j];
num=1;
if(num)
l++;
num=0;
block1=&
temp[0][0];
for(intp=0;
p<
p++)
for(intq=0;
q<
q++)
temp[p][q]=b[p][q];
boolisavailable(intline)//检验,即看方块即将存在位置是否已经有1
intx,y;
x=row/2-13-4*temp+m;
//边框左边已有13个位置
y=line-4+temp;
//上面已有4个位置
if(*(block1+m)&
&
coordinate[x][y])//相与为1则返回0,否则跳出并循环继续
return0;
voidremember(intline)//记忆
x=row/2-13-temp*4+m;
if(*(block1+m))//如果当前位置为1,则返回原位置,并设
置为1
coordinate[x][y-1]=1;
voiddeleteline(intl)//消行
intsnum=0,b=0;
=16;
m++)//从上向下消去方块
if(coordinate[1][m]==1&
coordinate[2][m]==1&
coordinate[3][m]==1&
coordi
nate[4][m]==1&
coordinate[5][m]==1&
coordinate[6][m]==1&
coordinate[7][
m]==1&
coordinate[8][m]==1&
coordinate[9][m]==1&
coordinate[10][m]==1
)
textout(handle,28,m+4,wColors,1,"
﹌﹌﹌﹌good﹌﹌﹌﹌"
Sleep(750);
for(intn=1;
=m;
for(intj=1;
=10;
coordinate[j][m-n+1]=coor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 俄罗斯方块 代码