java抓不住的方块_JAva 判断方块游戏清除方法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

在一块画布上放类似俄罗斯方块的格子。

若是每一行或是每一列填满了,自动清除。

分三种情况,行满了;清除行

列满了;清除列

同时满了,同时清除;

如果分开写的话,先后顺序会导致错误,因为每个行的格子也是每一个列的格子。必须一起判断是否满了。

注:status()为判断是否被占领的方法,true为被占领,false为空。

upset()为清除当前方块的方法,画布大小为10*10; board [][]为10*10 的二维数组。

算分的话,score = score + a + 10*rowandcolumn;

然而测试之后发现有以下问题:

计分有问题,当3*3正方形被清后应该69分, 9分来自方块数量,60分来自10*6。 结果却是29分。

显然清除顺序或者判断有问题。

希望指正。

谢谢。

int v =0; // 打横满的格子数量

int h = 0; //打竖满的格子数量

int rowandcolumn = 0; // 要清除的行列总和

for (int row=0;row<10;row++){ //打横数0到9

for (int column=0;column<10;column++) { //打竖数0到9

if ((board[row][column].status() == true)){ //如果打竖的被占

h = h + 1;

}

if ((board[column][row].status() == true)){ //如果打横的被占

v = v + 1;

}

}

if(v == 10 && h ==10){ //横竖一起清

rowandcolumn = rowandcolumn + 2 ;

for (int k = 0;k <10; k++) {

board[row][k].unset();

board[k][row].unset();

}

}

if(v != 10 && h ==10){ //清横

rowandcolumn = rowandcolumn + 1 ;

for (int k = 0;k <10; k++) {

board[row][k].unset();

}

}

if(v == 10 && h !=10){ //清竖

rowandcolumn = rowandcolumn + 1 ;

for (int k = 0;k <10; k++) {

board[k][row].unset();

}

}

if(v != 10 && h !=10){

rowandcolumn = rowandcolumn + 0 ;

}

h =0; //reset

v=0;

}

score = score + p.numberofBox()+10*rowandcolumn;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值