| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1459 人关注过本帖
标题:TC写了一个俄罗斯方块,大家看看哦
取消只看楼主 加入收藏
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
结帖率:79.37%
收藏
 问题点数:0 回复次数:3 
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
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
为什么把我的代码又贴上来了

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-15 13:33
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
嗯嗯,下次发贴会注意的

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-20 19:42
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
不过这个俄罗斯方块有点问题,就是方块到顶了不会显示game over终止游戏~~~~~~~~~~~~

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-20 19:44
快速回复:TC写了一个俄罗斯方块,大家看看哦
数据加载中...
 
   



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

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