俄罗斯方块java(3)

2021-04-05 02:40

俄罗斯方块java

个外框
g.setColor(Color.black);
//System.out.println("origin in drawGridFrame(): " +origin.x+","+origin.y);
g.drawRect(origin.x,origin.y-iHeight,iWidth,iHeight);
}


private Point origin; //原点是整个预览容器左下角的坐标.
private int iHeightGrid;
private int iWidthGrid;
private int iHeight;
private int iWidth;
private grid[][] aryGrids; //第1,2维的下标是用于确定是平面上的哪个格子.第1维对应行号,取值范围0~iHeightGrid-1;第2维对应列号,取值范围是0~iWidthgrid-1

}

//方块下落固定后,就变成了格子
class diamonds
{
public diamonds(int tmpRowNo,int tmpColNo)
{
initDiamondsTable();
referPoint[0]=tmpRowNo;
referPoint[1]=tmpColNo;
orgReferPoint[0]=tmpRowNo;
orgReferPoint[1]=tmpColNo;
createNew();
iPreStatusNo=iStatusNo; //初始化,应付第1个方块的第1次旋转时遇到冲突时的情况.其实问题也不大因为刚开始时容器中没有已固定的方块会发生冲突.

}

public void restart()
{
referPoint[0]=orgReferPoint[0];
referPoint[1]=orgReferPoint[1];

}

//经过判断方块无法进行旋转,调用此函数恢复方块本次旋转之前的状态.
public void unCircumrotate()
{
referPoint[0]=preReferPoint[0];
referPoint[1]=preReferPoint[1];
iStatusNo=iPreStatusNo;
setAryDiamonds();
}

public void circumrotate()
{
preReferPoint[0]=referPoint[0];
preReferPoint[1]=referPoint[1];
iPreStatusNo=iStatusNo;
iStatusNo=diamondsTable[iSortNo][iStatusNo];
setAryDiamonds();
}

//重新生成一个新的方块,实质是随机设定方块的类型和方块的状态,并将其位置复位.
public void createNew()
{
//获得在方块种类数范围之内的随机数.
iSortNo=(int)(Math.random()*100)%SORTNUM;
//每个方块的状态数是不同的.
iStatusNo=(int)(Math.random()*100)%diamondsTable[iSortNo].length;

setAryDiamonds();

}

//返回方块所占的行号,用于消行.
public int[] getRowNos()
{
int[] rtnRowNos=new int[iHeightGrid];
//注意返回数组中行号的排列顺序是从大到小的.顺序不能打乱,否则消行时会产生错误.
//对所有的方块通用.
for(int i=0;i<iHeightGrid;i++)
{
rtnRowNos[i]=referPoint[0]+(iHeightGrid-i-1);
}

return rt
nRowNos;
}


//返回方块中所有有效部分在容器中显示的行号和列号.
public int[][] diamondsPosition()
{
int[][] rtnRowColNos=new int[iHeightGr


俄罗斯方块java(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013-2014年北京市昌平区2014年中考一模数学试卷(含答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: