新俄罗斯方块
新俄罗斯方块
简易型俄罗斯方块代码:
#include iostream
#include cstdlib
#include ctime
#include ctype.h
#include vector
#include math.h
#include iomanip
#include graphics.h
#include conio.h
#include windows.h
#include fstream
#include string
using namespace std;
struct Node
{
int posx,posy;
int num;
int lifenum;
int colornum;
};
Node box[211];
int exit1,exit2,exit3;
clock_t t1,t2,t3;
int flag,flag1;
int speed;
int seed1;
int point;
void W()
{
int i,j,k;
if(flag==flag1-1box[flag-10].lifenum==0){
if(box[flag-10].lifenum==0){box[flag-10].lifenum=1;box[flag-10].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1=flag-10;}
}
else if(flag==flag1+1box[flag+10].lifenum==0){
if(box[flag+10].lifenum==0){box[flag+10].lifenum=1;box[flag+10].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1=flag+10;}
}
else if(flag==flag1-10box[flag+1].lifenum==0flag%109){
if(box[flag+1].lifenum==0){box[flag+1].lifenum=1;box[flag+1].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1=flag+1;}
}
else if(flag==flag1+10flag%100){
if(box[flag-1].lifenum==0){box[flag-1].lifenum=1;box[flag-1].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1=flag-1;}
}
}
void A()
{
int i,j,k;
if(flag%100flag1%100){
if(flag==flag1-1box[flag-1].lifenum==0){
box[flag-1].lifenum=1;box[flag-1].colornum=box[flag].colornum;box[flag].lifenum=0;flag--;
box[flag1-1].lifenum=1;box[flag1-1].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1--;
}
else if(flag1==flag-1box[flag1-1].lifenum==0){
box[flag1-1].lifenum=1;box[flag1-1].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1--;
box[flag-1].lifenum=1;box[flag-1].colornum=box[flag].colornum;box[flag].lifenum=0;flag--;
}
else if(box[flag-1].lifenum==0box[flag1-1].lifenum==0){
box[flag-1].lifenum=1;box[flag-1].colornum=box[flag].colornum;box[flag].lifenum=0;flag--;
box[flag1-1].lifenum=1;box[flag1-1].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1--;
}
}
}
void D()
{
int i,j,k;
if(flag%109flag1%109){
if(flag==flag1+1box[flag+1].lifenum==0){
box[flag+1].lifenum=1;box[flag+1].colornum=box[flag].colornum;box[flag].lifenum=0;flag++;
box[flag1+1].lifenum=1;box[flag1+1].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1++;
}
else if(flag1==flag+1box[flag1+1].lifenum==0){
box[flag1+1].lifenum=1;box[flag1+1].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1++;
box[flag+1].lifenum=1;box[flag+1].colornum=box[flag].colornum;box[flag].lifenum=0;flag++;
}
else if(box[flag+1].lifenum==0box[flag1+1].lifenum==0){
box[flag+1].lifenum=1;box[flag+1].colornum=box[flag].colornum;box[flag].lifenum=0;flag++;
box[flag1+1].lifenum=1;box[flag1+1].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1++;
}
}
}
void check()
{
int i,j,k,t;
for(i=19;i=1;i--){
t=0;
for(j=0;j=9;j++){
if(box[i*10+j].lifenum==0){
t=1;
break;
}
}
if(t==0){
for(j=0;j=9;j++){
box[i*10+j].lifenum=0;
}
for(i=189;i=0;i--){
if(box[i+10].lifenum==0box[i].lifenum!=0){
box[i+10].lifenum=1;
box[i+10].colornum=box[i].colornum;
box[i].lifenum=0;
}
}
i=20;
point=point+10;
}
}
}
void draw()
{
int i,j,k;
FlushBatchDraw();
clearrectangle(0,0,400,400);
line(98,0,98,400);
line(302,0,302,400);
for(i=0;i200;i++){
if(box[i].lifenum==1){
fillrectangle(box[i].posx,box[i].posy,box[i].posx+20,box[i].posy+20);
}
}
}
void create()
{
int i,j;
if(box[4].lifenum!=0||box[14].lifenum!=0){
exit1=1;exit2=1;exit3=1;
}
else{
box[4].colornum=1;
box[14].colornum=box[4].colornum;
box[4].lifenum=1;
box[14].lifenum=1;
}
flag=4;flag1=14;
}
void S()
{
int i,j,k;
if(flag==flag1+10box[flag+10].lifenum==0){
box[flag+10].lifenum=1;box[flag+10].colornum=box[flag].colornum;box[flag].lifenum=0;flag+=10;
box[flag1+10].lifenum=1;box[flag1+10].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1+=10;
}
else if(flag==flag1-10box[flag1+10].lifenum==0){
box[flag1+10].lifenum=1;box[flag1+10].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1+=10;
box[flag+10].lifenum=1;box[flag+10].colornum=box[flag].colornum;box[flag].lifenum=0;flag+=10;
}
else if(box[flag+10].lifenum==0box[flag1+10].lifenum==0){
box[flag1+10].lifenum=1;box[flag1+10].colornum=box[flag1].colornum;box[flag1].lifenum=0;flag1+=10;
box[flag+10].lifenum=1;box[flag+10].colornum=box[flag].colornum;box[flag].lifenum=0;flag+=10;
}
else{
check();
create();
}
draw();
}
void initialization()
{
int i,j,k;
exit1=0;exit2=0;exit3=0;
seed1=0;
speed=300;
point=0;
initgraph(400, 400,SHOWCONSOLE);
setlinecolor(GREEN);
line(98,0,98,400);
line(302,0,302,400);
for(i=0;i200;i++){
box[i].num=i;
box[i].posx=100+20*(i%10);
box[i].posy=20*(i/10);
box[i].lifenum=0;
box[i].colornum=0;
}
for(i=200;i210;i++){
box[i].lifenum=1;
}
}
void move()
{
int i;
char j;
BeginBatchDraw();
create();
draw();
while(exit1==0){
Sleep(1000);
t1=clock();
t2=clock();
while(exit2==0){
if (_kbhit()){
j=_getch();
fflush(stdin);
switch(j){
case w:W();break;
case a:A();break;
case d:D();break;
case s:S();break;
case o:speed=0xffffff;break;
case i:speed=300;break;
case p:exit2=1;exit1=1;break;
default:break;
}
fflush(stdin);
}
t2=clock();
while(t2-t1=speed){
t1=clock();
S();
}
}
}
EndBatchDraw();
}
void carry()
{
int i,j,k;
initialization();
while(exit3==0){
move();
}
_getch();
closegraph();
cout得分:pointendl;
}
int main()
{
carry();
return 0;
}
消消乐俄罗斯方块代码:
#include iostream
#include cstdlib
#include ctime
#include ctype.h
#include vector
#include math.h
#include iomanip
#include graphics.h
#include conio.h
#include windows.h
#include fstream
#include string
using namespace std;
struct Node
{
int posx,posy;
int num;
int lifenum;
int colornum;
};
struct Node1
{
int num;
int lifenum;
int flagnum,flag1num;
};
struct Node2
{
int num;
int lifenum;
int boxnum;
};
Node box[211];
Node1 eat[100];
Node2 box1[200];
int exit1,exit2,exit3,exit4;
clock_t t1,t2,t3;
int flag,flag1;
int speed;
int seed1;
int point;
COLORREF img[8];
void W()
{
int i,j,k;
if(flag==flag1-1box[flag-10].lifenum==0){
if(box[flag-10].lifenum==0){box[flag-10].lifenum=1;box[flag-10].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1=flag-10;}
}
else if(flag==flag1+1box[flag+10].lifenum==0){
if(box[flag+10].lifenum==0){box[flag+10].lifenum=1;box[flag+10].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1=flag+10;}
}
else if(flag==flag1-10box[flag+1].lifenum==0flag%109){
if(box[flag+1].lifenum==0){box[flag+1].lifenum=1;box[flag+1].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1=flag+1;}
}
else if(flag==flag1+10flag%100){
if(box[flag-1].lifenum==0){box[flag-1].lifenum=1;box[flag-1].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1=flag-1;}
}
}
void A()
{
int i,j,k;
if(flag%100flag1%100){
if(flag==flag1-1box[flag-1].lifenum==0){
box[flag-1].lifenum=1;box[flag-1].colornum=box[flag].colornum;box[flag].lifenum=0;box[flag].colornum=0;flag--;
box[flag1-1].lifenum=1;box[flag1-1].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1--;
}
else if(flag1==flag-1box[flag1-1].lifenum==0){
box[flag1-1].lifenum=1;box[flag1-1].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1--;
box[flag-1].lifenum=1;box[flag-1].colornum=box[flag].colornum;box[flag].lifenum=0;box[flag].colornum=0;flag--;
}
else if(box[flag-1].lifenum==0box[flag1-1].lifenum==0){
box[flag-1].lifenum=1;box[flag-1].colornum=box[flag].colornum;box[flag].lifenum=0;box[flag].colornum=0;flag--;
box[flag1-1].lifenum=1;box[flag1-1].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1--;
}
}
}
void D()
{
int i,j,k;
if(flag%109flag1%109){
if(flag==flag1+1box[flag+1].lifenum==0){
box[flag+1].lifenum=1;box[flag+1].colornum=box[flag].colornum;box[flag].lifenum=0;box[flag].colornum=0;flag++;
box[flag1+1].lifenum=1;box[flag1+1].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1++;
}
else if(flag1==flag+1box[flag1+1].lifenum==0){
box[flag1+1].lifenum=1;box[flag1+1].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1++;
box[flag+1].lifenum=1;box[flag+1].colornum=box[flag].colornum;box[flag].lifenum=0;box[flag].colornum=0;flag++;
}
else if(box[flag+1].lifenum==0box[flag1+1].lifenum==0){
box[flag+1].lifenum=1;box[flag+1].colornum=box[flag].colornum;box[flag].lifenum=0;box[flag].colornum=0;flag++;
box[flag1+1].lifenum=1;box[flag1+1].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1++;
}
}
}
void check(int x)
{
int i,j,k,t,flag2;
for(i=0;i200;i++){
box1[i].num=i;
box1[i].lifenum=0;
box1[i].boxnum=101;
}
i=eat[x].flagnum;
box1[0].boxnum=eat[x].flagnum;
flag2=1;
for(i=0;iflag2;i++){
j=box1[i].boxnum;
if(j%10!=0){
j=j-1;
for(j;j%10!=9j=0;j--){
if(box[j].colornum==box[eat[x].flagnum].colornum){
exit3=0;
for(k=0;kflag2;k++){
if(box1[k].boxnum==j){
exit3=1;break;
}
}
if(exit3==0){box1[flag2].boxnum=j;flag2++;}
}
else{
break;
}
}
}
j=box1[i].boxnum;
if(j%10!=9){
j=j+1;
for(j;j%10!=0j=199;j++){
if(box[j].colornum==box[eat[x].flagnum].colornum){
exit3=0;
for(k=0;kflag2;k++){
if(box1[k].boxnum==j){
exit3=1;break;
}
}
if(exit3==0){box1[flag2].boxnum=j;flag2++;}
}
else{
break;
}
}
}
j=box1[i].boxnum;
if(j/10!=0){
j=j-10;
for(j;j=0;j-=10){
if(box[j].colornum==box[eat[x].flagnum].colornum){
exit3=0;
for(k=0;kflag2;k++){
if(box1[k].boxnum==j){
exit3=1;break;
}
}
if(exit3==0){box1[flag2].boxnum=j;flag2++;}
}
else{
break;
}
}
}
j=box1[i].boxnum;
if(j/10!=9){
j=j+10;
for(j;j=199;j+=10){
if(box[j].colornum==box[eat[x].flagnum].colornum){
exit3=0;
for(k=0;kflag2;k++){
if(box1[k].boxnum==j){
exit3=1;break;
}
}
if(exit3==0){box1[flag2].boxnum=j;flag2++;}
}
else{
break;
}
}
}
}
if(flag2=10){
point+=flag2;
for(i=0;iflag2;i++){
box[box1[i].boxnum].lifenum=0;
box[box1[i].boxnum].colornum=0;
j=0;
while(box1[i].boxnum!=eat[j].flagnumbox1[i].boxnum!=eat[j].flag1num){
j++;
}
eat[j].lifenum=0;
}
j=1;
while(j!=0){
j=0;
for(i=0;i100;i++){
if(eat[i].lifenum==1){
if(eat[i].flagnum==eat[i].flag1num+10box[eat[i].flagnum+10].lifenum==0){
box[eat[i].flagnum+10].lifenum=1;box[eat[i].flagnum+10].colornum=box[eat[i].flagnum].colornum;box[eat[i].flagnum].lifenum=0;box[eat[i].flagnum].colornum=0;eat[i].flagnum+=10;
box[eat[i].flag1num+10].lifenum=1;box[eat[i].flag1num+10].colornum=box[eat[i].flag1num].colornum;box[eat[i].flag1num].lifenum=0;box[eat[i].flag1num].colornum=0;eat[i].flag1num+=10;
j++;
}
else if(eat[i].flagnum==eat[i].flag1num-10box[eat[i].flag1num+10].lifenum==0){
box[eat[i].flag1num+10].lifenum=1;box[eat[i].flag1num+10].colornum=box[eat[i].flag1num].colornum;box[eat[i].flag1num].lifenum=0;box[eat[i].flag1num].colornum=0;eat[i].flag1num+=10;
box[eat[i].flagnum+10].lifenum=1;box[eat[i].flagnum+10].colornum=box[eat[i].flagnum].colornum;box[eat[i].flagnum].lifenum=0;box[eat[i].flagnum].colornum=0;eat[i].flagnum+=10;
j++;
}
else if(box[eat[i].flagnum+10].lifenum==0box[eat[i].flag1num+10].lifenum==0){
box[eat[i].flag1num+10].lifenum=1;box[eat[i].flag1num+10].colornum=box[eat[i].flag1num].colornum;box[eat[i].flag1num].lifenum=0;box[eat[i].flag1num].colornum=0;eat[i].flag1num+=10;
box[eat[i].flagnum+10].lifenum=1;box[eat[i].flagnum+10].colornum=box[eat[i].flagnum].colornum;box[eat[i].flagnum].lifenum=0;box[eat[i].flagnum].colornum=0;eat[i].flagnum+=10;
j++;
}
}
}
}
}
}
void draw()
{
int i,j,k;
FlushBatchDraw();
clearrectangle(0,0,400,400);
line(98,0,98,400);
line(302,0,302,400);
for(i=0;i200;i++){
if(box[i].lifenum==1box[i].colornum!=0){
setfillcolor(img[box[i].colornum]);
fillrectangle(box[i].posx,box[i].posy,box[i].posx+20,box[i].posy+20);
}
else if(box[i].lifenum==1box[i].colornum==0){
box[i].lifenum=0;
}
}
}
void create()
{
int i,j;
if(box[4].lifenum!=0||box[14].lifenum!=0){
exit1=1;exit2=1;exit4=1;
}
else{
seed1++;
srand(seed1);
box[4].colornum=rand()%5+1;
box[14].colornum=box[4].colornum;
box[4].lifenum=1;
box[14].lifenum=1;
}
flag=4;flag1=14;
}
void S()
{
int i,j,k,t;
if(flag==flag1+10box[flag+10].lifenum==0){
box[flag+10].lifenum=1;box[flag+10].colornum=box[flag].colornum;box[flag].lifenum=0;box[flag].colornum=0;flag+=10;
box[flag1+10].lifenum=1;box[flag1+10].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1+=10;
}
else if(flag==flag1-10box[flag1+10].lifenum==0){
box[flag1+10].lifenum=1;box[flag1+10].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1+=10;
box[flag+10].lifenum=1;box[flag+10].colornum=box[flag].colornum;box[flag].lifenum=0;box[flag].colornum=0;flag+=10;
}
else if(box[flag+10].lifenum==0box[flag1+10].lifenum==0){
box[flag1+10].lifenum=1;box[flag1+10].colornum=box[flag1].colornum;box[flag1].lifenum=0;box[flag1].colornum=0;flag1+=10;
box[flag+10].lifenum=1;box[flag+10].colornum=box[flag].colornum;box[flag].lifenum=0;box[flag].colornum=0;flag+=10;
}
else{
i=0;
while(eat[i].lifenum!=0){
i++;
}
eat[i].lifenum=1;
eat[i].flagnum=flag;
eat[i].flag1num=flag1;
check(i);
create();
}
draw();
}
void initialization()
{
int i,j,k;
exit1=0;exit2=0;exit3=0;exit4=0;
seed1=0;
speed=300;
point=0;
initgraph(400, 400,SHOWCONSOLE);
img[1]=LIGHTRED;
img[2]=YELLOW;
img[3]=LIGHTGREEN;
img[4]=LIGHTBLUE;
img[5]=LIGHTMAGENTA;
setlinecolor(GREEN);
line(98,0,98,400);
line(302,0,302,400);
for(i=0;i200;i++){
box[i].num=i;
box[i].posx=100+20*(i%10);
box[i].posy=20*(i/10);
box[i].lifenum=0;
box[i].colornum=0;
}
for(i=200;i210;i++){
box[i].lifenum=1;
}
}
void move()
{
int i;
char j;
BeginBatchDraw();
create();
draw();
while(exit1==0){
Sleep(1000);
t1=clock();
t2=clock();
while(exit2==0){
if (_kbhit()){
j=_getch();
fflush(stdin);
switch(j){
case w:W();break;
case a:A();break;
case d:D();break;
case s:S();break;
case o:speed=0xffffff;break;
case i:speed=300;break;
case p:exit2=1;exit1=1;break;
default:break;
}
fflush(stdin);
}
t2=clock();
while(t2-t1=speed){
t1=clock();
S();
}
}
}
EndBatchDraw();
}
void carry()
{
int i,j,k;
initialization();
while(exit4==0){
move();
}
_getch();
closegraph();
cout得分:pointendl;
}
int main()
{
carry();
return 0;
}
演示视频1:
演示视频2:
以上就是(新俄罗斯方块)全部内容,收藏起来下次访问不迷路!