摇摆游戏攻略网

关闭导航
首页 > 棋牌益智 > 游戏攻略

如何用VC 60实现俄罗斯方块游戏

整理:yaobaiwang.com 时间:07月17日

[想用VC 60动手写俄罗斯方块但不知到如何下手请各位给点思路]谁有俄罗斯方块的游戏设计思路啊或者经验。谢谢了:简单说一下算法: 俄罗斯方块由四个小方块组成,假设你定义没每个小方块大小为20 * 20px,方块活动区域大小为:300宽 * 400高,那么...+阅读

如何用VC 6 0实现俄罗斯方块游戏

简单说一下算法: 俄罗斯方块由四个小方块组成,假设你定义没每个小方块大小为20 * 20px,方块活动区域大小为:300宽 * 400高,那么你需要定义一个bool型二维数组来标记该活动区域方块的填充情况(以填记1或未填记0),那么该数组可以这么定义:bool isEmpty[20][15]; (20=400/20 15=300/20)。每当方块要落下来时先判断下一个位置是否为空,即 if ( isEmpty[][] == 0 ),若空则允许落下来,否则就停在当前位置,接着生成新的方块,重复刚才判断...... 好了,关于方块活动区域的算法已经大致清楚那么一点了,那么怎么生成一块完整的俄罗斯方块呢?我们知道,漂亮一些的俄罗斯方块通常有多种颜色,最常见的写法是使用GDI的FillRect()函数产生小色块,然后根据4个小方块的坐标填充出一个大的完整的俄罗斯方块(每个俄罗斯方块由四个小方块组成)假如我们要生成“口口口口”(长条),它的坐标可能是(0,0)(1,0)(2,0)(3,0),我们需要定义4个坐标来表示俄罗斯方块:POINT ptBlock[4]; 那么我们把ptBlock里记录的4个坐标填充完就生成一个完整的俄罗斯方块了。

好了,关于怎么生成一个俄罗斯方块我们也了解那么一点了,可是,我们玩游戏的时候不能预知下一块方块是什么形状(这个可以有提示),也就是说每个方块都是随机的,我们该这么做呢? 一般常见的俄罗斯方块有7种形状,那么我们可以每次产生一个0 ~ 6的随机数,然后根据这个数字生成随机方块:int iType = rand() % 7;switch( iType )...

C编俄罗斯方块方块旋转的程序

这是我用的一个旋转程序,a[][4]是个定义方块的4*4的数组,你看看

void turn(int a[][4],int w,int h,int *x,int y)

{

int b[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};

int sign=0,line=0;

for(int i=h-1;i>=0;i--)

{

for(int j=0;j

if(a[i][j])

{

b[j][line]=a[i][j];

sign=1;

}

if(sign)

{

line++;

sign=0;

}

}

for(i=0;i<4;i++)

if(isavailable(&b[0][0],*x-i,y,w,h))

{

*x-=i;

for(int k=0;k

for(int j=0;j

a[k][j]=b[k][j];

break;

}

}

C语言写俄罗斯方块旋转算法

问题描述不完整,给你我作业里德旋转函数好了,//...#define LONG_SIZE 15#define WIDE_SIZE 10//...char img[LONG_SIZE][WIDE_SIZE]; /*定义游戏区方块移动范围*/int x_[4],y_[4],x,y; /*存放移动方块在游戏区的位置序号和方块的坐标*///...void rotate() /*旋转*/{ int tmx[4],tmy[4]; int tf=1; int i; int k; if((x_[0]==x_[1])&(x_[2]==x_[3])&(y_[0]==y_[2])&(y_[1]==y_[3])) /*排除"田"字形*/ return; for(i=0;i img[x_[i]][y_[i]]=0; for(i=0;i { tmx[i]=x+(y_[i]-y); tmy[i]=y-(x_[i]-x); if(tmx[i]LONG_SIZE-1) { tf=0; break; } if(tmy[i]WIDE_SIZE-1) { tf=0; break; } if((tmx[i]==x_[i])||(tmy[i]==y_[i])) { if(tmx[i]==x_[i]) { if(img[tmx[i]][tmy[i]]==1||img[tmx[i]][y]==1) { tf=0; break; } } else if(tmy[i]==y_[i]) { if(img[tmx[i]][tmy[i]]==1||img[x][tmy[i]]==1) { tf=0; break; } } else continue; } if((tmx[i]y_[i])||(tmx[i]>x_[i]&tmy[i] k=1; else k=0; while(tmx[i]!=x_[i]||tmy[i]!=y_[i]) { if(img[tmx[i]][tmy[i]]==1) { tf=0; break; } if(k%2==0) tmx[i] else tmy[i] k++; } } if(tf) { for(i=0;i { tmx[i]=x+(y_[i]-y); tmy[i]=y-(x_[i]-x); x_[i]=tmx[i]; y_[i]=tmy[i]; } } for(i=0;i img[x_[i]][y_[i]]=1;} 几个月前写的,可能因为之前的水平原因代码有点乱(现在懒的编),不过是可行的..

以下为关联内容:

象棋的一类词语如:马后炮过河卒子中国象棋中双方第一步都走中炮叫什么如图所示。:直车 横车 直横车 过河车 巡河车 骑河车 横车将路 贴身车 通头车 中车 单车宝剑 重叠车 无车棋 过门 鸳鸯马 连环马 窝心马...

推荐文章