go语言实现俄罗斯方块,俄罗斯方块网络语言-成都创新互联网站建设

关于创新互联

多方位宣传企业产品与服务 突出企业形象

公司简介 公司的服务 荣誉资质 新闻动态 联系我们

go语言实现俄罗斯方块,俄罗斯方块网络语言

谁能帮帮我啊?

一个俄罗斯方块的源代码,自己写的,有点笨的……

创新互联公司专注于企业全网营销推广、网站重做改版、万州网站定制设计、自适应品牌网站建设、H5建站商城开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为万州等各大城市提供网站开发制作服务。

#includedos.h

#includestdlib.h

#includeconio.h

#includegraphics.h

#includestdio.h

#includebios.h

#define LEFT 0x4b

#define RIGHT 0x4d

#define DOWN 0x50

#define CHANGE 0x20

#define ESC 0x1b

#define INTR 0x1C

#define DefaultX 5

#define DefaultY 1

#ifdef __cplusplus

#define __CPPARGS ...

#else

#define __CPPARGS

#endif

static unsigned counter=0;

static unsigned shape[7][4][4][4]={

{

{{0,1,1,0},{0,1,1,0},{0,0,0,0},{0,0,0,0}},

{{0,1,1,0},{0,1,1,0},{0,0,0,0},{0,0,0,0}},

{{0,1,1,0},{0,1,1,0},{0,0,0,0},{0,0,0,0}},

{{0,1,1,0},{0,1,1,0},{0,0,0,0},{0,0,0,0}},

},

{

{{0,0,0,0},{1,1,1,1},{0,0,0,0},{0,0,0,0}},

{{0,0,1,0},{0,0,1,0},{0,0,1,0},{0,0,1,0}},

{{0,0,0,0},{1,1,1,1},{0,0,0,0},{0,0,0,0}},

{{0,0,1,0},{0,0,1,0},{0,0,1,0},{0,0,1,0}},

},

{

{{0,1,0,0},{1,1,1,0},{0,0,0,0},{0,0,0,0}},

{{0,1,0,0},{0,1,1,0},{0,1,0,0},{0,0,0,0}},

{{0,0,0,0},{1,1,1,0},{0,1,0,0},{0,0,0,0}},

{{0,1,0,0},{1,1,0,0},{0,1,0,0},{0,0,0,0}},

},

{

{{1,0,0,0},{1,1,0,0},{0,1,0,0},{0,0,0,0}},

{{0,0,0,0},{0,1,1,0},{1,1,0,0},{0,0,0,0}},

{{1,0,0,0},{1,1,0,0},{0,1,0,0},{0,0,0,0}},

{{0,0,0,0},{0,1,1,0},{1,1,0,0},{0,0,0,0}},

},

{

{{0,1,0,0},{1,1,0,0},{1,0,0,0},{0,0,0,0}},

{{0,0,0,0},{1,1,0,0},{0,1,1,0},{0,0,0,0}},

{{0,1,0,0},{1,1,0,0},{1,0,0,0},{0,0,0,0}},

{{0,0,0,0},{1,1,0,0},{0,1,1,0},{0,0,0,0}},

},

{

{{1,0,0,0},{1,0,0,0},{1,1,0,0},{0,0,0,0}},

{{0,0,0,0},{1,1,1,0},{1,0,0,0},{0,0,0,0}},

{{1,1,0,0},{0,1,0,0},{0,1,0,0},{0,0,0,0}},

{{0,0,0,0},{0,0,1,0},{1,1,1,0},{0,0,0,0}},

},

{

{{0,1,0,0},{0,1,0,0},{1,1,0,0},{0,0,0,0}},

{{0,0,0,0},{1,0,0,0},{1,1,1,0},{0,0,0,0}},

{{1,1,0,0},{1,0,0,0},{1,0,0,0},{0,0,0,0}},

{{0,0,0,0},{1,1,1,0},{0,0,1,0},{0,0,0,0}},

},

};

unsigned back[22][14]={{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,0,0,0,0,0,0,0,0,0,0,1,1},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1}};

char ShapeColor[7]={8,10,11,12,13,14,15};

char DigitalShape[10]={128+119,3,62,31,128+75,128+93,128+125,19,128+127,128+95};

char ZodiacBack[11]={4,6,12,13,11,10,2,3,9,1,8};

char ZodiacSoft[18][14]={{0,0,0,0,96,0,0,0,0,0,0,0,60,0},

{255,248,0,0,96,0,0,0,0,248,0,0,124,0},

{255,248,0,0,97,128,0,0,3,248,0,0,192,0},

{0,112,0,0,97,128,0,0,7,0,0,1,128,48},

{0,224,0,0,96,0,0,0,14,0,0,1,128,48},

{1,192,0,0,96,0,0,0,12,0,0,1,128,48},

{3,128,120,15,97,128,240,60,12,0,15,15,249,255},

{7,0,252,31,225,131,248,127,14,0,31,143,249,255},

{7,1,142,48,225,135,24,227,7,240,49,193,128,48},

{14,3,134,96,97,142,24,192,3,252,112,193,128,48},

{28,3,6,96,97,140,25,192,0,28,96,193,128,48},

{56,3,6,96,97,140,25,128,0,6,96,193,128,48},

{56,3,6,96,97,140,25,128,0,6,96,193,128,48},

{120,3,6,96,97,140,25,128,0,6,96,193,128,48},

{224,1,140,48,225,142,25,195,24,14,49,129,128,48},

{255,249,252,63,225,135,252,255,28,28,63,129,128,48},

{255,248,240,15,97,131,236,60,15,248,30,1,128,48},

{0,0,0,0,0,0,0,0,7,224,0,1,128,0}};

unsigned long TotalMark=0;

unsigned int Erasered=0,ETimes=0;

int Speed=0;

int CEr=0;

int NumOfLev[5]={0,0,0,0,0};

int TimeDelay[10]={21,18,17,15,13,11,9,7,5,3};

char NewShape[2];

unsigned PerOnce[4];

void interrupt ( *oldhandler)(__CPPARGS);

void interrupt handler(__CPPARGS)

{

++counter;

oldhandler();

}

void DrawBackground()

{

//setlinestyle

}

void DrawDigital(int x,int y,int a)

{

int i=7;

setcolor(((DigitalShape[a]i)1)*7+4);

//printf("%d",(DigitalShape[a]i)1);

i--;

line(x,y+1,x,y+15);

line(x+1,y+2,x+1,y+14);

line(x+2,y+3,x+2,y+13);

setcolor(((DigitalShape[a]i)1)*7+4);

i--;

line(x,y+17,x,y+31);

line(x+1,y+18,x+1,y+30);

line(x+2,y+19,x+2,y+29);

setcolor(((DigitalShape[a]i)1)*7+4);

i--;

line(x,y+17,x,y+31);

line(x+1,y+18,x+1,y+30);

line(x+2,y+19,x+2,y+29);

setcolor(((DigitalShape[a]i)1)*7+4);

i--;

line(x+1,y,x+16,y);

line(x+2,y+1,x+15,y+1);

line(x+3,y+2,x+14,y+2);

setcolor(((DigitalShape[a]i)1)*7+4);

i--;

line(x+2,y+15,x+15,y+15);

line(x+1,y+16,x+16,y+16);

line(x+2,y+17,x+15,y+17);

setcolor(((DigitalShape[a]i)1)*7+4);

i--;

line(x+3,y+30,x+14,y+30);

line(x+2,y+31,x+15,y+31);

line(x+1,y+32,x+16,y+32);

setcolor(((DigitalShape[a]i)1)*7+4);

i--;

line(x+15,y+3,x+15,y+13);

line(x+16,y+2,x+16,y+14);

line(x+17,y+1,x+17,y+15);

setcolor(((DigitalShape[a]i)1)*7+4);

line(x+15,y+19,x+15,y+29);

line(x+16,y+18,x+16,y+30);

line(x+17,y+17,x+17,y+31);

}

void ArtClear()

{

for(int i=480;i=0;i-=2)

{

setcolor(3);

line(0,i-6,639,i-6);

setcolor(9);

line(0,i-4,639,i-4);

setcolor(1);

line(0,i-2,639,i-2);

setcolor(getbkcolor());

line(0,i,639,i);

delay(1);

}

for(i=1;i480;i+=2)

{

setcolor(3);

line(0,i+6,639,i+6);

setcolor(9);

line(0,i+4,639,i+4);

setcolor(1);

line(0,i+2,639,i+2);

setcolor(getbkcolor());

line(0,i,639,i);

delay(1);

}

}

void end()

{

for(int j=0;j4;j++)

{

for(int i=j;i480;i+=4)

{

setcolor(3);

line(0,i+8,639,i+8);

setcolor(9);

line(0,i+4,639,i+4);

setcolor(1);

line(0,i,639,i);

setcolor(getbkcolor());

line(0,i,639,i);

delay(1);

}

delay(5);

}

setcolor(YELLOW);

outtextxy(260,200,"[ Game Over ]");

gotoxy(14,16);

printf("This freeware is written by Daniel.Qu ZodiacSoft 2000");

gotoxy(12,17);

printf("Please e-mail to swami@yeah.net or visit my homepage at");

gotoxy(12,18);

printf(" if you have question.");

gotoxy(14,20);

printf("I will soon provide something new,please wait...");

gotoxy(14,22);

printf("We hold these truths to be self-evident,that all codes");

gotoxy(12,23);

printf("are created FREE.");

getch();

clrscr();

closegraph();

exit(0);

}

void ShowTitle()

{

int gdriver=DETECT,gmode,errorcode,i,j,k;

initgraph(gdriver,gmode,"");

errorcode=graphresult();

if (errorcode!=grOk)

{

printf("Graphics error: %s\n\007",grapherrormsg(errorcode));

exit(1);

}

setbkcolor(9);//This line needs to be changed

for(i=0;i11;i++)

{

setcolor(ZodiacBack[i]);

line(200,i*8+100,440,i*8+100);

}

delay(1000);

for(j=0;j17;j++)

for(i=0;i11;i++)

{

setcolor(ZodiacBack[(i+j)%16]);

line(200,i*8+100,440,i*8+100);

delay(4);

}

for(j=0;j18;j++)

{

for(i=0;i14;i++)

{

for(k=7;k=0;k--)

if((ZodiacSoft[j][i]k)1)

{

putpixel(i*8-k+271,j+122,14);

}

}

delay(10);

}

for(j=17;j=0;j--)

{

for(i=0;i14;i++)

for(k=7;k=0;k--)

{

if((ZodiacSoft[j][i]k)1)

putpixel(i*8-k+271,158-j,5);

}

delay(10);

}

setcolor(15);

outtextxy(295,171,"Present");

getch();

ArtClear();

}

void DrawShape(int x,int y,int color)

{

//if(x2||x12||y19)

// return;

setcolor(color);

/*line(x4,y4,x4,(y4)+14);

line(x4,(y4)+14,(x4)+14,(y4)+14);

line((x4)+14,(y4)+14,(x4)+14,y*16);

line((x4)+14,y4,x4,y*16);

line((x4)+1,y4,(x4)+1,(y4)+14);

line((x4)+1,(y4)+13,(x4)+14,(y4)+13);

line((x4)+13,(y4)+13,(x4)+13,(y4)+1);

line((x4)+13,(y4)+1,x4,(y4)+1); */

for(int i=0;i15;i++)

line(x4,(y4)+i,(x4)+14,(y4)+i);

setcolor(8);

line((x4)+15,(y4)+1,(x4)+15,(y4)+15);

line((x4)+1,(y4)+15,(x4)+15,(y4)+15);

setcolor(color-8);

line((x4)+2,(y4)+2,(x4)+12,(y4)+2);

line((x4)+2,(y4)+2,(x4)+2,(y4)+12);

}

void DrawNull(int x,int y)

{

setcolor(getbkcolor());

for(int i=0;i16;i++)

line(x4,(y4)+i,(x4)+15,(y4)+i);

}

void show(int x,int y,int CurrentShape,int Status)

{

int temp;

for(int i=0;i20;i++)

for(int j=2;j12;j++)

{

if(back[i][j]==1)

DrawShape(6+j,4+i,8);

else

DrawNull(6+j,4+i);

} //no matter what the status be,I will draw the background

for(int l=0;l4;l++)

for(int p=0;p4;p++)

{

if(l+x2||x+l11||p+y19)

continue;

//if(shape[CurrentShape][Status][p][l]+back[y+p][x+l]==1)

// DrawShape(3+l+x,3+p+y,8+CurrentShape);

//else

//cout'O';

// DrawNull(3+j,3+i);

if(shape[CurrentShape][Status][p][l]==1)

DrawShape(6+l+x,4+p+y,ShapeColor[CurrentShape]);

if(back[y+p][x+l]==1)

DrawShape(6+l+x,4+p+y,8);

}

}

void DrawScore()

{

int temp=TotalMark;

for(int i=0;i7;i++)

{

DrawDigital(477-i*20,65,temp%10);

temp/=10;

}

temp=Erasered;

for(i=0;i4;i++)

{

DrawDigital(491-i*20,111,temp%10);

temp/=10;

}

if(Erasered==0)

return;

for(i=1;i5;i++)

{

setfillstyle(1,8);

bar(378,163+i*14,508,170+i*14);

setfillstyle(1,5);

bar(378,163+i*14,378+130*NumOfLev[i]/ETimes,170+i*14);

}

DrawDigital(466,293,Speed);

return;

}

int CreateNewShape()

{

NewShape[1]=NewShape[0];

NewShape[0]=rand()%7;

setfillstyle(1,0);

bar(447,240,514,288);

for(int l=0;l4;l++)

for(int p=0;p4;p++)

if(shape[NewShape[0]][0][p][l]==1)

DrawShape(28+l,15+p,ShapeColor[7]);

return NewShape[1];

}

int Possible(int x,int y,int CurrentShape,int Status)

{

for(int i=0;i4;i++)

{

for(int j=0;j4;j++)

{

if(shape[CurrentShape][Status][i][j]+back[y+i][x+j]==2)

//this line can also write as the following type:

//if(shape[CurrentShape][Status][i][j]back[y+i][x+j])

return 0;

}

}

return 1;

}

void GoLeft(intx,inty,intCurrentShape,intStatus)

{

if(Possible(x-1,y,CurrentShape,Status))

x--;

show(x,y,CurrentShape,Status);

}

void GoRight(intx,inty,intCurrentShape,intStatus)

{

if(Possible(x+1,y,CurrentShape,Status))

x++;

show(x,y,CurrentShape,Status);

}

void GoDown(intx,inty,intCurrentShape,intStatus)

{

int AllAreOne=1,temp=0;

if(Possible(x,y+1,CurrentShape,Status))

{

y++;

show(x,y,CurrentShape,Status);

return;

}

TotalMark+=3*CurrentShape;

for(int i=0;i4;i++)

for(int j=0;j4;j++)

back[i+y][j+x]+=shape[CurrentShape][Status][i][j];

for(int r=1;r20;r++)

{

for(int l=2;l13;l++)

{

if(back[r][l]==0)

AllAreOne=0;

}

if(AllAreOne==1)

{

for(int rr=r;rr0;rr--)

for(int ll=2;ll13;ll++)

back[rr][ll]=back[rr-1][ll];

Erasered++;

CEr++;

temp++;

}

AllAreOne=1;

}

CurrentShape=CreateNewShape();

x=DefaultX;y=DefaultY;Status=0;

NumOfLev[temp]++;

TotalMark+=5*temp;

show(x,y,CurrentShape,Status);

counter=0;

if(!Possible(x,y,CurrentShape,Status))

{

getch();

end();

}

if(CEr=30)

{

Speed=(Speed+1)%10;

CEr/=30;

}

if(temp)

ETimes++;

DrawScore();

return;

}

void ChageShape(intx,inty,intCurrentShape,intStatus)

{

if(Possible(x,y,CurrentShape,(Status+1)%4))

Status=(Status+1)%4;

show(x,y,CurrentShape,Status);

}

void DrawFace()

{

int temp;

setcolor(15);

line(351,59,519,59);

line(351,60,518,60);

line(351,59,351,156);

line(352,59,352,155);

setcolor(7);

line(518,61,518,154);

line(519,60,519,154);

line(353,155,519,155);

line(352,156,519,156);

setcolor(8);

for(int i=61;i155;i++)

line(353,i,517,i);

setcolor(7);

line(427,106,512,106);

line(428,107,511,107);

line(427,106,427,147);

line(428,106,428,146);

setcolor(15);

line(512,106,512,147);

line(511,107,511,146);

line(428,146,511,146);

line(427,147,512,147);

settextstyle(DEFAULT_FONT,HORIZ_DIR,1);

setcolor(14);

outtextxy(357,119,"Erasered");

outtextxy(370,130,"Level:");

setcolor(15);

line(352,167,519,167);

line(352,168,518,168);

line(352,169,352,407);

line(353,169,353,406);

setcolor(7);

line(519,167,519,407);

line(518,168,518,406);

line(352,407,519,407);

line(353,406,519,406);

line(524,55,89,55); //outter border 1st

line(524,55,524,411);

line(89,411,524,411);

line(89,55,89,411);

line(524,56,89,56); //outter border 2nd

line(525,55,525,411);

line(89,410,524,410);

line(88,55,88,411);

setfillstyle(8,7);

bar(94,59,336,406);

//setfillstyle(1,3);

//bar(128,78,296,386);

for(i=0;i8;i++)

DrawDigital(357+i*20,65,0);

for(i=0;i4;i++)

DrawDigital(431+i*20,111,0);

setfillstyle(1,8);

setcolor(12);

for(i=0;i4;i++)

{

temp=i+'1';

outtextxy(364,177+14*i,(char*)temp);

bar(378,177+i*14,508,184+i*14);

}

setcolor(14);

outtextxy(366,250,"Next Shape");

setcolor(10);

outtextxy(366,294,"Current");

outtextxy(382,309,"Level");

setcolor(6);

outtextxy(366,334,"Message:");

bar(362,348,509,398);

DrawDigital(466,293,Speed);

}

void WannaQuit()

{

int choise=0,temp;

setfillstyle(1,8);

bar(362,348,509,398);

setcolor(15);

outtextxy(378,355,"Are you sure to");

outtextxy(368,368,"quit game?");

outtextxy(410,388,"Yes");

outtextxy(470,388,"No");

setcolor(14);

circle(399,392,4);

while((temp=bioskey(0))!=7181)

{

if(temp==19200)

{

setcolor(8);

circle(459,392,4);

choise=0;

setcolor(14);

circle(399,392,4);

}

if(temp==19712)

{

setcolor(8);

circle(399,392,4);

choise=1;

setcolor(14);

circle(459,392,4);

}

}

if(choise==0)

{

end();

}

setfillstyle(1,8);

bar(362,348,509,398);

return;

}

void main()

{

ShowTitle();

unsigned c;

int CurrentShape,x=6,y=0,Status=0;

oldhandler=getvect(INTR);

setvect(INTR,handler);

randomize();

NewShape[0]=rand()%7;

DrawFace();

CurrentShape=CreateNewShape();

show(x,y,CurrentShape,Status);

while(1)

{

if(kbhit())

{

c=getch();

if(c==0)

c=getch();

switch(c)

{

case 's' :Speed=(Speed+1)%10;DrawDigital(466,293,Speed);break;

case DOWN :GoDown(x,y,CurrentShape,Status);break;

case LEFT :GoLeft(x,y,CurrentShape,Status);break;

case RIGHT :GoRight(x,y,CurrentShape,Status);break;

case CHANGE :ChageShape(x,y,CurrentShape,Status);break;

case ESC :WannaQuit();

}

}

if((counter%=TimeDelay[Speed])==(TimeDelay[Speed]-1))

{

GoDown(x,y,CurrentShape,Status);

counter=0;

}

}

}

(C语言程序设计)俄罗斯方块的程序解析?流程图还有模块功能?

public void go()//主调方法 表示 1 step 如果游戏没结束则继续 如此往复直到游戏结束

{

if (downCheck())//如果有下落空间

{

down();//下落操作

}

else//如果到底了 或者 跟其他shape接触

{

merge();//把 “卡住”的方块 “印”到画布(容器gameArea)中去,意思就是把卡住的方块“堆”到游戏区

if (!isOver)//如果游戏没有结束(判断依据为方块是否已经堆积到容器的顶端) 重新实例化一个shape 让他down下来

{

shape s = new shape();

int pindx = 0;

for (int i = 0; i s.transform.GetLength(0); i++)

{

for (int j = 0; j s.transform.GetLength(1); j++)

{

if (s.transform[i, j] == true)

{

sh[pindx++] = new Point(j, i);

}

}

}

}

}

setScore();//在重新实例化之前先检查 gameArea 看是否有可消除的行 并计算得分

俄罗斯方块的源代码?

#include graphics.h

#include stdio.h

#include dos.h

#include conio.h

#include time.h

#include math.h

#include stdlib.h

void draw_block(int x,int y,int style,int way);

void kill_line(int y);

void draw_little_block(int x,int y,int z,int style);

int check_block(int x,int y,int style);

int change(int *i,int *j,int key);

int style1,style,score,speed,l;

int board[10][20];

char str[100];

struct shape

{

int xy[8],next;

};

struct shape shapes[19]= /* 19种方块(前

8个点表示4个小方块的相对位置 第9点表示类型) */

{

{

0,-2, 0,-1, 0, 0, 1, 0, 1

},

{-1, 0, 0, 0, 1,-1, 1, 0, 2},

{ 0,-2, 1,-2, 1,-1, 1, 0, 3},

{-1,-1,-1, 0, 0,-1, 1,-1, 0},

{ 0,-2, 0,-1, 0, 0, 1,-2, 5},

{-1,-1, 0,-1, 1,-1, 1, 0, 6},

{ 0, 0, 1,-2, 1,-1, 1, 0, 7},

{-1,-1,-1, 0, 0, 0, 1, 0, 4},

{-1, 0, 0,-1, 0, 0, 1, 0, 9},

{ 0,-2, 0,-1, 0, 0, 1,-1,10},

{-1,-1, 0,-1, 1,-1, 0, 0,11},

{ 0,-1, 1,-2, 1,-1, 1, 0, 8},

{-1, 0, 0,-1, 0, 0, 1,-1,13},

{ 0,-2, 0,-1, 1,-1, 1, 0,12},

{-1,-1, 0,-1, 0, 0, 1, 0,15},

{ 0,-1, 0, 0, 1,-2, 1,-1,14},

{ 0,-3, 0,-2, 0,-1, 0, 0,17},

{-1, 0, 0, 0, 1, 0, 2, 0,16},

{ 0,-1, 0, 0, 1,-1, 1, 0,18}

};

#define MAPXOFT 9 /* 第1个方块的位置 */

#define MAPYOFT 5

#define MAPXOFT1 18 /* 下一个方块的位置 */

#define MAPYOFT1 17

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

#define ENTER 0x1c0d

int main()

{

int gdriver,gmode,

i,j,key,x0=5,y0=1,m,n,c,key1,p,q,le=0,b;

l=1,score=0;

gdriver=DETECT;

initgraph(gdriver,gmode,"D:\\TURBOC2");

randomize();

for(m=0;m=19;m++)

for(n=0;n=19;n++)

board[m][n]=0; /* 初始游戏版 */

setcolor(10); /* 开机的画面 */

settextstyle(0,0,3);

outtextxy(10,150,"WELCOME TO RUSSIS");

outtextxy(10,250,"READY GO");

setcolor(14);

settextstyle

(0,0,4);

outtextxy(10,350,"^_^");

/*

circle(400,350,60);

ellipse(370,340,60,120,25,25);

ellipse(430,340,60,120,25,25);

ellipse(400,350,225,315,30,30);*/

getch();

settextstyle(0,0,1);

cleardevice();

setcolor(LIGHTRED); /* 画出游戏所在的范围图

*/

setlinestyle(0,0,3);

setfillstyle(1,14);

rectangle(157,419,533,429);

floodfill(300,424,LIGHTRED);

setcolor(LIGHTRED);

setlinestyle(0,0,3);

setfillstyle(1,14);

rectangle(147,95,157,429);

floodfill(152,200,LIGHTRED);

setcolor(LIGHTRED);

setlinestyle(0,0,3);

setfillstyle(1,14);

rectangle(323,95,333,429);

floodfill(330,320,LIGHTRED);

setcolor(LIGHTRED);

setlinestyle(0,0,1);

setfillstyle(1,BLUE);

rectangle(450,50,500,70);

floodfill(455,55,LIGHTRED);

setcolor(10);

for(m=0;m=10;m=m+2)

ellipse(240,94,0,180,84+m,84+m);

setcolor(14);

setfillstyle(1,0);

circle(440,330,60);

floodfill(440,330,14);

outtextxy(420,80,"* you can change the game");

/* 对游戏的说明 */

outtextxy(440,90,"-speed and the gradth by"); /*

上为变形 左右 为 调整

下为快下 ESC为退出 */

outtextxy(440,100," using 'up'and'down'.");

outtextxy(420,110,"* when you are plying the");

outtextxy(440,120,"game,you can use these pu");

outtextxy(440,130,"-tturns.");

outtextxy(420,140,"* if you want to go into t");

outtextxy(440,150,"-he game,please 'enter'.");

outtextxy(420,160,"* you can chang shapes ");

outtextxy(440,170," using UP");

outtextxy(420,180,"* RIGHT and LEFT can" );

outtextxy(440,190," move shapes");

outtextxy(10,40,"GAMESPEED:");

outtextxy(10,100,"GRADTH:");

printf("\n\n\n 1");

printf("\n\n\n\n 0");

/* setcolor(LIGHTRED);

setlinestyle(0,0,1);

setfillstyle(1,10);

rectangle(10,65,110,85);

floodfill(15,75,LIGHTRED); */

outtextxy(450,40,"SCORES:");

outtextxy(10,190,"**The speed will");

outtextxy(10,200,"increas if score");

outtextxy(10,210,"increas 3");

for(p=0;p=100;p++) /* 对速度的调整 */

{ key=bioskey(0);

if(key==ENTER)

break;

if(key==UP)

{

if(l==9)

l=9;

if(l9)

l++;

}

if(key==DOWN)

{

if(l==1)

l=l;

if(l1)

l--;

}

gotoxy(2,4);

printf("%d",l);

}

for(q=0;q=100;q++) /* 对高度的调整 */

{

key=bioskey(0);

if(key==ENTER)

break;

if(key==UP)

{

if(le==5)

le=le;

if(le5)

le++;

}

if(key==DOWN)

{

if(le==0)

le=le;

if(le0)

le--;

}

gotoxy(2,8);

printf("%d",le);

}

key=bioskey(0);

if(key==ENTER)

{

style=random(19);

for(m=1;m=le;m++) /* 具体的对高度的调整 */

{

b=random(7)+1;

for(n=1;n=10;n++)

{

if(random(2))

{

board[n-1][20-m]=1;

draw_little_block(MAPXOFT+n,MAPYOFT+21-m,1,b);

}

}

}

while(1)

{

while(1)

{

i=x0,j=y0;

style1=random(19);

setcolor(14); /* 画出下一个方

块 */

draw_block(MAPXOFT1,MAPYOFT1,style1,1);

for(j=y0;j=20;j++)

{

while(1)

{

if(bioskey(1)) /* 方块的

调整 */

{

key=bioskey(0);

change(i,j,key);

}

if(!check_block

(i,j+1,style)) /* 判断方块能不能下降 */

break;

if(j==20)

break;

if(speed==1)

{

draw_block

(i,j,style,0); /* 方块的下降 */

j++;

draw_block

(i,j,style,1);

delay(10000);

}

if(speed!=1)

{

m++;

delay

(10000);

if(m=3*(10-l))

{

m=0;

draw_block

(i,j,style,0); /* 方块的下降 */

j++;

draw_block

(i,j,style,1);

}

}

}

speed=0;

for(m=0;m=6;m+=2) /* 对有方块的位置给予1

的数值 */

board[i+shapes[style].xy[m]-1]

[j+shapes[style].xy[m+1]-1]=1;

if(board[ i][4]==1)

{

setcolor(14);

settextstyle(0,0,2);

outtextxy(10,450,"CAREFUL -_-");

delay(100000000);

delay(100000000);

setcolor(0);

outtextxy(10,450,"CAREFUL -_-");

settextstyle(0,0,1);

setcolor(LIGHTRED);

}

/* setcolor(LIGHTRED);

setlinestyle(0,0,1);

setfillstyle(1,10);

rectangle(10,65,110,85);

floodfill(15,75,LIGHTRED);*/

if(l==1) /* 显示当前游戏等级 */

{

setcolor(LIGHTRED);

setlinestyle(0,0,1); /* 容易的速度 */

setfillstyle(1,10);

rectangle(10,65,110,85);

floodfill(15,75,LIGHTRED);

outtextxy(7,70," easy speed");

}

if(l==4)

{

setcolor(BLACK);

outtextxy(7,70," easy speed");

setcolor(LIGHTRED); /* 中等难度 */

setlinestyle(0,0,1);

setfillstyle(1,10);

rectangle(10,65,110,85);

floodfill(15,75,LIGHTRED);

outtextxy(7,70," normal speed");

}

if(l==7)

{

setcolor(BLACK);

outtextxy(7,70," normal speed");

setcolor(LIGHTRED);

setlinestyle(0,0,1); /* 困难的难度 */

setfillstyle(1,10);

rectangle(10,65,110,85);

floodfill(15,75,LIGHTRED);

outtextxy(7,70," hard speed");

}

kill_line(j);

if(j==20)

break;

if(!check_block(i,j+1,style))

break;

}

draw_block(MAPXOFT1,MAPYOFT1,style1,0);

/* 对下1个方块显示位置进行覆盖 */

style=style1; /* 使的方块和显示的方块一样

*/

if(j==1) /* 关机的画面 */

{

setcolor(14);

settextstyle(0,0,2);

outtextxy(170,200,"GAME OVER");

outtextxy(170,240,"THANK YOU");

sleep(3);

exit(0);

}

}

}

}

getch();

}

int change(int *i,int *j,int key) /* 方块的具体的变化(

移动 变形 下降) */

{

if(key==UPcheck_block(*i,*j,shapes[style].next)) /*

变形 */

{

draw_block(*i,*j,style,0);

style=shapes[style].next;

draw_block(*i,*j,style,1);

}

else if(key==LEFTcheck_block(*i-1,*j,style)) /* 移动

*/

{

draw_block(*i,*j,style,0);

(*i)--;

draw_block(*i,*j,style,1);

}

else if(key==RIGHTcheck_block(*i+1,*j,style))

{

draw_block(*i,*j,style,0);

(*i)++;

draw_block(*i,*j,style,1);

}

else if(key==DOWNcheck_block(*i,*j+1,style)) /* 下降

*/

{

draw_block(*i,*j,style,0);

(*j)++;

draw_block(*i,*j,style,1);

speed=1;

}

else if(key==ESC) /* 退出 */

exit(0);

}

void draw_block(int x,int y,int style,int way) /* 画出方块

的位置 */

{

int x1=x+MAPXOFT,y1=y+MAPYOFT;

int i;

if(way==1)

{

setcolor(WHITE);

}

else

{

setcolor(BLACK);

}

for(i=0;i=6;i+=2)

{

draw_little_block(x1+shapes[style].xy[

i],y1+shapes[style].xy[i+1],way,style);

}

}

void draw_little_block(int x,int y,int z,int style) /* 画

出方块的每一个小方块的形状(方块的色彩) */

{ int m,n;

if(z==1) /* 对色彩的调整 */

{

if(0=stylestyle=3)

n=2;

if(4=stylestyle=7)

n=3;

if(8=stylestyle=11)

n=4;

if(12=stylestyle=13)

n=5;

if(14=stylestyle=15)

n=6;

if(16=stylestyle=17)

n=7;

if(style==18)

n=8;

m=1;

}

if(z==0)

{

m=0,n=0;

}

setcolor(m);

setfillstyle(1,n);

rectangle(x*16,y*16,x*16+16,y*16+16);

floodfill(x*16+2,y*16+2,m);

}

void kill_line(int y) /* 消行 */

{

int i,t=1,j,k,color=random(7)+1;

for(;y=1t=4;y--,t++) /* 对4行进行验证 */

{

for(i=1;i=10;i++)

if(!board[i-1][y-1]) /* 严整1行的数组是不是全

为1 */

break;

if(i==11)

{

setcolor(LIGHTRED); /* 对积分底色的画法

*/

setlinestyle(0,0,1);

setfillstyle(1,BLUE);

rectangle(450,50,500,70);

floodfill(455,55,LIGHTRED);

score++; /* 每消去1行 可以得1分 */

setcolor(14);

itoa(score,str,10);

outtextxy(460,55,str);

if(score!=0score%3==0)

l++; /* 每次分到一定位置是 速度进

行提高(目前是3行加1次 可以调整) */

setcolor(14); /* 每次消去是进行庆祝模式 */

settextstyle(0,0,4);

outtextxy(10,310,"COOL");

outtextxy(10,270,"^_^");

delay(100000000);

delay(100000000);

delay(100000000);

setcolor(BLACK);

settextstyle(0,0,4);

outtextxy(10,310,"COOL");

outtextxy(10,270,"^_^");

settextstyle(0,0,1);

if(score%3==0score!=0)

{

setcolor(14);

settextstyle(0,0,2);

outtextxy(10,435,"CONGRATULATION ON YOU ^_^");

sleep(2);

setcolor(BLACK);

settextstyle(0,0,2);

outtextxy(10,435,"CONGRATULATION ON YOU ^_^ ");

settextstyle(0,0,1);

}

for(k=1;k=10;k++) /* 对满了行进行消去

*/

{

setcolor(BLACK);

draw_little_block

(k+MAPXOFT,y+MAPYOFT,0,2);

}

for(j=y-1;j=1;j--) /* 消去1行后 用上面的

累下来(并且调整色彩) */

for(k=1;k=10;k++)

{

board[k-1][j]=board[k-1][j-1];

if(board[k-1][j])

{

setcolor(BLACK);

draw_little_block

(k+MAPXOFT,j+MAPYOFT,0,2);

setcolor(WHITE);

draw_little_block

(k+MAPXOFT,j+1+MAPYOFT,1,color);

}

}

delay(100000000000);

y++;

}

}

}

int check_block(int x,int y,int style) /* 验证能不能往下1

个位置累方块 */

{

int x1=x+MAPXOFT,y1=y+MAPYOFT;

int x2,y2,i;

for(i=0;i=6;i+=2)

{

x2=x1+shapes[style].xy[ i];

y2=y1+shapes[style].xy[i+1];

if(x2=10x220y226(y26||board[x2-10][y2-

6]==0))

continue;

else

break;

}

if(i==8)

return 1;

else

return 0;

getch();

}

我这里也是别人那里看来的。希望对你有用


本文题目:go语言实现俄罗斯方块,俄罗斯方块网络语言
链接分享:http://kswsj.cn/article/dssiihe.html

其他资讯