俄罗斯方块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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库俄罗斯方块java(3)在线全文阅读。
相关推荐: