首页阅读

新俄罗斯方块

新俄罗斯方块

简易型俄罗斯方块代码:

#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:

以上就是(新俄罗斯方块)全部内容,收藏起来下次访问不迷路!

86%的人还看了:淘宝好店大推荐