📄 gamedata.java
字号:
m_lines++;
}
}
else{
ret=true;
m_lines++;
for(byte y2=y;y2>=2;y2--){
System.arraycopy(bin1[y2-1],0,bin1[y2],0,bin1[y2].length);
}
}
break;
}
}
//当前游戏区没有收一行,则无须检测4遍。
if(m_lines==0){
break;
}
}
//保存收的总行数
m_alllines+=m_lines;
return ret;
}
// void judge_fk(){
// for(byte i=0;i<del.length;i++){
// if(del[i]!=0){
// for(byte x=1;x<=MAXROWS;x++){
// if(bin1[del[i]][x]<=0){
// for(byte l=0;l<del.length;l++){
// if(del[i]!=0){
// del[i]--;
// }
// else{
// break;
// }
// }
// break;
// }
// }
// }
// else{
// break;
// }
// }
// }
void del_fk(){
if(m_chair==m_gamehigh.MyChair)
m_gamehigh.bombindex=0;
// judge_fk();
for(byte i=0;i<del.length;i++){
if(del[i]!=0){
if(del[i]<=MAXCENG){
for(byte x=1;x<=MAXROWS;x++)
{
if(m_chair==m_gamehigh.MyChair)
{
if(bin1[del[i]][x]>0){
m_gamehigh.bombpoint[m_gamehigh.bombindex][0]=x;
m_gamehigh.bombpoint[m_gamehigh.bombindex][1]=(byte)(del[i]-i);
m_gamehigh.bombindex++;
}
}
if(m_gamehigh.DJC){
if(bin1[del[i]][x]>=80)
{
AddDaoju(bin1[del[i]][x]);
}
}
}
for(byte y2=del[i];y2>=2;y2--)
{//上方单元标志移下一格
System.arraycopy(bin1[y2-1],0,bin1[y2],0,bin1[y2].length);
}
}
for(byte l=i;l<del.length;l++){
if(del[l]!=0){
del[l]++;
}
}
del[i]=0;
}
else{
break;
}
}
// 初始化粒子动画对象
if(m_chair==m_gamehigh.MyChair){
m_gamehigh.m_fxpoint.InitManage(m_gamehigh.bombpoint,m_gamehigh.bombindex,true);
}
}
//快速到底
void QuickDownBottom()
{
for(int y=2;y<=MAXCENG;y++)
{
if(checkdown()==true)
{
SetToDown();
}
else
break;
}
}
//在底部垫高指定层数(网格填充)
void AddBottomCell(int cengs)
{
newcell(cengs);
if(cengs<=0)return;
int y=MAXCENG;
for(y=1+cengs;y<=MAXCENG;y++)
{//下方单元标志移上一格
System.arraycopy(bin1[y],0,bin1[y-cengs],0,bin1[y].length);
}
int BOTTOMFLAG=-1; //底部垫层时的奇偶标志
if(bin1[MAXCENG][1]>=1)
BOTTOMFLAG=1;
else
BOTTOMFLAG=-1;
for(int y2=MAXCENG-cengs+1;y2<=MAXCENG;y2++)
{
if(BOTTOMFLAG==1)
{
System.arraycopy(tmpdata[2],0,bin1[y2],0,bin1[y2].length);
}
else
{
System.arraycopy(tmpdata[3],0,bin1[y2],0,bin1[y2].length);
}
BOTTOMFLAG=-BOTTOMFLAG;
}
ProcessOther();
}
// 从底部开始移除指定行数。
public void ClearLines(int linenum)
{
// for(byte y=MAXCENG;y>MAXCENG-linenum;y--)
// {//上方单元标志移下一格
//
// if(m_chair==m_gamehigh.MyChair){
// del_move_judge(y);
// }
// else{
// for(byte y2=y;y2>=2;y2--){
// System.arraycopy(bin1[y2-1],0,bin1[y2],0,bin1[y2].length);
// }
// }
// }
if(m_chair==m_gamehigh.MyChair){
for(byte y=MAXCENG;y>MAXCENG-linenum;y--){
del_move_judge(y);
}
if(m_gamehigh.CellDownNum>0){
for(int i=0;i<m_gamehigh.CellDownNum;i++){
m_gamehigh.newcellb[i]+=linenum;
}
}
}
else{
for(byte y2=(byte) (MAXCENG-linenum);y2>2;y2--){
System.arraycopy(bin1[y2],0,bin1[y2+linenum],0,bin1[y2].length);
}
}
//newcell(-linenum);
// System.out.println(m_gamehigh.MyChair+" 使用了减行道具"+linenum);
}
//游戏区全部单元置灰
void SetAllCellsEnd()
{
if(bin1[MAXCENG][1]>0 && bin1[MAXCENG][2]>0 && bin1[MAXCENG][3]>0 &&bin1[MAXCENG][4]>0 || bin1[MAXCENG][5]>0 || bin1[MAXCENG][6]>0 || bin1[MAXCENG][7]>0 || bin1[MAXCENG][8]>0 || bin1[MAXCENG][9]>0 || bin1[MAXCENG][10]>0)
{
for(int y=1;y<=MAXCENG;y++)
{
boolean flag=false;
for(int x=1;x<=MAXROWS;x++)
{
bin1[y][x]=bin1[y][x]>0?50:bin1[y][x];
flag=true;
}
if(flag==false)
break;
}
}
}
void ProcessOther()
{
int tmpx,tmpy;
//处理被升行导致的单元嵌入情况
for(int loop=0;loop<5;loop++)
{
boolean flag2=false;
for(int i=1;i<5;i++)
{
tmpx=m_nowcentera+m_cell[m_nowboxindex].ab[i][0];
tmpy=m_nowcenterb+m_cell[m_nowboxindex].ab[i][1];
if(tmpx>=1 && tmpy>=1 && tmpx<=MAXROWS && tmpy<=MAXCENG)
{
if(bin1[tmpy][tmpx]>0)
{//存在嵌入
flag2=true;
break;
}
}
}
if(flag2==true)
{//单元往上移
m_nowcenterb--;
if(m_nowcenterb<1)
break;
}
else
{//不存在嵌入,则退出
break;
}
}
}
//在底部消去指定层数(只有机器人会发此消息)
void DelBottomCell(byte cengs)
{
int topy=GetMaxy();
for(int y=MAXCENG-cengs;y>=topy;y--)
{
System.arraycopy(bin1[y],0,bin1[y+cengs],0,bin1[y].length);
}
for(int y=topy;y<topy+cengs;y++)
{
System.arraycopy(bin1[1],0,bin1[y],0,bin1[1].length);
}
}
boolean del_move_judge(byte num){
for(byte i=0;i<del.length;i++){
if(del[i]==0){
del[i]=num;
return true;
}
else if(del[i]==num){
return false;
}
}
return false;
}
//道具=================
// 初始化道具列表
public void ClearDaoju()
{
System.arraycopy(tmpdata[1],1,daojubody,0,daojubody.length);
// for(int i=0;i<daojubody.length;i++){
// daojubody[i]=81;
// }
}
// 添加道具到道具列表
private void AddDaoju(byte index)
{
for(int i=0;i<daojubody.length;i++)
{
if(daojubody[i]==0)
{
daojubody[i]=index;
// System.out.println("包裹"+i+"增加了东西"+index);
break;
}
}
}
//轮换道具
public void LoopDaoju()
{
byte tmp=daojubody[0];
if(tmp==0)
return;
DelDaoju();
for(int i=0;i<daojubody.length;i++)
{
if(daojubody[i]==0)
{
daojubody[i]=tmp;
break;
}
}
}
//移出刚刚使用的道具
public void DelDaoju()
{
System.arraycopy(daojubody,1,daojubody,0,daojubody.length-1);
daojubody[dj_num-1]=0;
}
// 从随机设置道具点(置值为80~85之间的值代表不同的道具)
public void SetDaoju(int daojuindex)
{
boolean enable=false;
int temp_num=0;
for(int y=MAXCENG;y>=2;y--)
{
//保证此行没有道具点
enable=false;
temp_num=0;
for(int k=1;k<=MAXROWS;k++)
{
if(bin1[y][k]>0){
if(bin1[y][k]>=80)
{
enable=true;
break;
}
else if(bin1[y][k]==50&&m_randplay.nextInt()%15<1){
enable=true;
break;
}
temp_num++;
}
}
if(temp_num==MAXROWS){
continue;
}
//如果此行已经有道具则再向上安排。
if(enable==true)
continue;
//保证此行一定有单元
enable=false;
temp_num=0;
for(int k=1;k<=MAXROWS;k++)
{
if(bin1[y][k]>0)
{
enable=true;
break;
}
}
//如果此行为空行则再向上安排,此情况很少出现,只有当使用激光特效时才会出现短时间空行。
if(enable==false)
continue;
//收集此行的所有存在单元
byte tmpindex=0;
for(byte k=1;k<=MAXROWS;k++)
{
if(bin1[y][k]>0)
{
tmpdaoju[tmpindex]=k;
tmpindex++;
}
}
//在这些单元中随机选择安排道具的点。
byte x=tmpdaoju[m_gamehigh.GetRandCell(tmpindex)];
bin1[y][x]=(byte)daojuindex;
break;
}
// System.out.println("产生了道具========"+daojuindex);
}
// 游戏区移除全部单元(动画)
void ClearAllLines()
{
if(m_chair==m_gamehigh.MyChair)
m_gamehigh.bombindex=0;
for(byte y=1;y<=MAXCENG;y++)
{
for(byte x=1;x<=MAXROWS;x++)
{
if(bin1[y][x]>0)
{
bin1[y][x]=0;
if(m_chair==m_gamehigh.MyChair)
{
m_gamehigh.bombpoint[m_gamehigh.bombindex][0]=x;
m_gamehigh.bombpoint[m_gamehigh.bombindex][1]=y;
m_gamehigh.bombindex++;
}
}
}
}
if(m_gamehigh.bombindex>0 && m_chair==m_gamehigh.MyChair){
m_gamehigh.m_fxpoint.InitManage(m_gamehigh.bombpoint,m_gamehigh.bombindex,true);
}
m_gamehigh.CellDownNum=0;
}
private void newcell(int num){
if(m_chair!=m_gamehigh.MyChair){
return;
}
for(int i=0;i<m_gamehigh.CellDownNum;i++){
m_gamehigh.newcellb[i]-=num;
}
for(int l=0;l<del.length;l++){
if(del[l]==0){
break;
}
else{
del[l]-=num;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -