| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1457 人关注过本帖
标题:TC写了一个俄罗斯方块,大家看看哦
只看楼主 加入收藏
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
结帖率:79.37%
收藏
 问题点数:0 回复次数:17 
TC写了一个俄罗斯方块,大家看看哦
代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <dos.h>
int i,j,q,p,fx,fy,s,t;
int nx[5],ny[5],h[5],m[25];
int x[8][4]={0,0,0,0,
         0,-2,-1,0,
         0,0,1,2,
         0,0,0,0,
         0,-1,0,1,
         0,0,1,1,
         0,-1,0,1,
         0,-1,0,1,
        };

int y[8][4]={0,0,0,0,
         0,0,0,1,
         0,1,0,0,
         0,1,2,3,
         0,0,1,0,
         0,1,0,1,
         0,1,1,0,
         0,0,1,1,
        };

display(int i,int t)
{  int j;
 for (j=0;j<=4;j++)
 {
  nx[j]=x[i][j];
  ny[j]=y[i][j];
 }
 for (j=0;j<4;j++)
 {textcolor(i);
  q=fy+ny[j];p=fx+nx[j];
  gotoxy(p,q);putch(t);
 }
}

test()
{  char tmp[2];
   int j;
   s=0;
   for (j=0;j<4;j++)
      { q=fy+y[i][j];p=fx+x[i][j];
    gettext(p,q,p,q,&tmp);
    if(tmp[0]!=32)  s=1;
      }
 }

left()
{ int ox;
  display(i,32);
  ox=fx;fx--;
  test();
  if(s==1) fx=ox;
   display(i,219);
}

right()
{ int ox;
  display(i,32);
  ox=fx;fx++;
  test();
  if(s==1) fx=ox;
   display(i,219);
}
turn()
{ int c;
  for(j=1;j<4;j++)
   { c=x[i][j]; x[i][j]=-y[i][j]; y[i][j]=c;}
  test(); if(s==0) return;
   for(j=1;j<4;j++)
   { c=y[i][j]; y[i][j]=-x[i][j]; x[i][j]=c; }
}

keyin()
{ int k;
  if(kbhit())
   { k=getch();
     if(k==27) exit(0);
     if(k==0)
       { k=getch();
     switch(k)
      { case 75: left(); break;
        case 77: right(); break;
        case 72: turn(); break;
        case 80:  break;
      }
       }
    }
}

full()
{ int fj; char tmp[2];
   for(j=0;j<4;j++)
    { q=fy+y[i][j]; m[q]=0;
      for(p=11;p<=22;p++)
    { gettext(p,q,p,q,&tmp);
      if(tmp[0]!=32) m[q]++;
    }
     if(m[q]==12) fj=1;
    }   if(fj==1) kill();
   for(fj=4;fj<=23;fj++)
    {  gotoxy(30,fj); printf("%d",m[fj]); }
}

kill()
{  char tmp[2],z;
   for(z=23;z>4;z--)
     { if(m[z]==12)
       {  for(q=z-1;q>4;q--)
       {  for(p=11;p<=22;p++)
        { gettext(p,q,p,q,&tmp);
          if(tmp[0]==32) { gotoxy(p,q+1); printf(" "); }
            else { gotoxy(p,q+1); printf("?); }
        } m[q+1]=m[q];
        } z++;
    }
    }
}

main()
{ int z;
 union REGS r;
 r.x.ax=0x0100;
 r.x.cx=0x2000;
 textmode(C40);
 randomize();
 int86(0x10,&r,&r);
 clrscr();
 for (z=4;z<=23;z++)
 { m[z]=0;
   gotoxy(10,z);
   putch(178);
   gotoxy(23,z);
   putch(178);
 }
 for (z=10;z<=23;z++)
 {
  gotoxy(z,24);
  putch(178);
 }
 fx=16;
 fy=4;
 go:  i=rand()%7+1;
 { fy=4;fx=16;
  while(1)
   { keyin();
     display(i,219);
     delay(32000); delay(32000); delay(32000); delay(32000);
     display(i,32);
     fy++;test();
     if (s==1) { if (fy==4) exit(1); fy--;display(i,219); full(); goto go;}
   }
 }
}



程序有什么不足高手提提意见哦!

搜索更多相关主题的帖子: 俄罗斯方块 
2010-07-14 18:58
Cc丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:53
注 册:2010-7-9
收藏
得分:0 
你小子不错嘛
2010-07-14 19:40
Cc丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:53
注 册:2010-7-9
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <dos.h>
int i,j,q,p,fx,fy,s,t;
int nx[5],ny[5],h[5],m[25];
int x[8][4]={0,0,0,0,
         0,-2,-1,0,
         0,0,1,2,
         0,0,0,0,
         0,-1,0,1,
         0,0,1,1,
         0,-1,0,1,
         0,-1,0,1,
        };

int y[8][4]={0,0,0,0,
         0,0,0,1,
         0,1,0,0,
         0,1,2,3,
         0,0,1,0,
         0,1,0,1,
         0,1,1,0,
         0,0,1,1,
        };

display(int i,int t)
{  int j;
for (j=0;j<=4;j++)
{
  nx[j]=x[i][j];
  ny[j]=y[i][j];
}
for (j=0;j<4;j++)
{textcolor(i);
  q=fy+ny[j];p=fx+nx[j];
  gotoxy(p,q);putch(t);
}
}

test()
{  char tmp[2];
   int j;
   s=0;
   for (j=0;j<4;j++)
      { q=fy+y[i][j];p=fx+x[i][j];
    gettext(p,q,p,q,&tmp);
    if(tmp[0]!=32)  s=1;
      }
}

left()
{ int ox;
  display(i,32);
  ox=fx;fx--;
  test();
  if(s==1) fx=ox;
   display(i,219);
}

right()
{ int ox;
  display(i,32);
  ox=fx;fx++;
  test();
  if(s==1) fx=ox;
   display(i,219);
}
turn()
{ int c;
  for(j=1;j<4;j++)
   { c=x[i][j]; x[i][j]=-y[i][j]; y[i][j]=c;}
  test(); if(s==0) return;
   for(j=1;j<4;j++)
   { c=y[i][j]; y[i][j]=-x[i][j]; x[i][j]=c; }
}

keyin()
{ int k;
  if(kbhit())
   { k=getch();
     if(k==27) exit(0);
     if(k==0)
       { k=getch();
     switch(k)
      { case 75: left(); break;
        case 77: right(); break;
        case 72: turn(); break;
        case 80:  break;
      }
       }
    }
}

full()
{ int fj; char tmp[2];
   for(j=0;j<4;j++)
    { q=fy+y[i][j]; m[q]=0;
      for(p=11;p<=22;p++)
    { gettext(p,q,p,q,&tmp);
      if(tmp[0]!=32) m[q]++;
    }
     if(m[q]==12) fj=1;
    }   if(fj==1) kill();
   for(fj=4;fj<=23;fj++)
    {  gotoxy(30,fj); printf("%d",m[fj]); }
}

kill()
{  char tmp[2],z;
   for(z=23;z>4;z--)
     { if(m[z]==12)
       {  for(q=z-1;q>4;q--)
       {  for(p=11;p<=22;p++)
        { gettext(p,q,p,q,&tmp);
          if(tmp[0]==32) { gotoxy(p,q+1); printf(" "); }
            else { gotoxy(p,q+1); printf("?"); }
        } m[q+1]=m[q];
        } z++;
    }
    }
}

main()
{ int z;
union REGS r;
r.x.ax=0x0100;
r.x.cx=0x2000;
textmode(C40);
randomize();
int86(0x10,&r,&r);
clrscr();
for (z=4;z<=23;z++)
{ m[z]=0;
   gotoxy(10,z);
   putch(178);
   gotoxy(23,z);
   putch(178);
}
for (z=10;z<=23;z++)
{
  gotoxy(z,24);
  putch(178);
}
fx=16;
fy=4;
go:  i=rand()%7+1;
{ fy=4;fx=16;
  while(1)
   { keyin();
     display(i,219);
     delay(32000); delay(32000); delay(32000); delay(32000);
     display(i,32);
     fy++;test();
     if (s==1) { if (fy==4) exit(1); fy--;display(i,219); full(); goto go;}
   }
}
}
2010-07-14 19:45
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
为什么把我的代码又贴上来了

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-15 13:33
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
其实写的很一般。
2010-07-15 13:47
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
回复 5楼 Devil_W
楼主前途光明着呢!你知道人家多大吗?(这项我保密哦!楼主)估计你在那么大的时候也没达到这个水平呢!真的
2010-07-15 14:34
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
kill()函数中printf中输出问号的时候少了一个“……
另外,这函数用TC可以编译通过,但是运行时Tc自动关闭了……

我很懒,但我讨厌别人说我懒……
2010-07-15 23:10
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
为什么会自动关闭?

我很懒,但我讨厌别人说我懒……
2010-07-15 23:11
super311
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-6-25
收藏
得分:0 
用win-tc运行 在结尾加上:getch();
可以运行
2010-07-16 14:05
maylove
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-6-7
收藏
得分:0 
新手,有没有注释呀。!看的累呀!
2010-07-16 14:53
快速回复:TC写了一个俄罗斯方块,大家看看哦
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013941 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved