📄 scanvas.java.bak
字号:
break;
}else if(i==8&&balls.getCell(col,i)==thecolor){
drow=8;
break;
}
}
//撇:先右上后左下
if((8-rucol)<=rurow){
for(i=rucol,j=rurow;i<=8&&j>=0;i++,j--){
if(balls.getCell(i,j)!=thecolor){
rucol=i-1;
rurow=j+1;
break;
}else if(i==8&&balls.getCell(i,j)==thecolor){
rucol=i;
rurow=j;
break;
}
}
}else{
for(i=rucol,j=rurow;i<=8&&j>=0;i++,j--){
if(balls.getCell(i,j)!=thecolor){
rucol=i-1;
rurow=j+1;
break;
}else if(j==0&&balls.getCell(i,j)==thecolor){
rucol=i;
rurow=j;
break;
}
}
}
if((8-ldrow)<=ldcol){
for(i=ldcol,j=ldrow;i>=0&&j<=8;i--,j++){
if(balls.getCell(i,j)!=thecolor){
ldcol=i+1;
ldrow=j-1;
break;
}else if(j==8&&balls.getCell(i,j)==thecolor){
ldcol=i;
ldrow=j;
break;
}
}
}else{
for(i=ldcol,j=ldrow;i>=0&&j<=8;i--,j++){
if(balls.getCell(i,j)!=thecolor){
ldcol=i+1;
ldrow=j-1;
break;
}else if(i==0&&balls.getCell(i,j)==thecolor){
ldcol=i;
ldrow=j;
break;
}
}
}
//捺:先左上后右下
if(lucol<=lurow){
for(i=lucol,j=lurow;i>=0&&j>=0;i--,j--){
if(balls.getCell(i,j)!=thecolor){
lucol=i+1;
lurow=j+1;
break;
}else if(i==0&&balls.getCell(i,j)==thecolor){
lucol=i;
lurow=j;
break;
}
}
}else{
for(i=lucol,j=lurow;i>=0&&j>=0;i--,j--){
if(balls.getCell(i,j)!=thecolor){
lucol=i+1;
lurow=j+1;
break;
}else if(j==0&&balls.getCell(i,j)==thecolor){
lucol=i;
lurow=j;
break;
}
}
}
if(rdcol>=rdrow){
for(i=rdcol,j=rdrow;i<=8&&j<=8;i++,j++){
if(balls.getCell(i,j)!=thecolor){
rdcol=i-1;
rdrow=j-1;
break;
}else if(i==8&&balls.getCell(i,j)==thecolor){
rdcol=i;
rdrow=j;
break;
}
}
}else{
for(i=rdcol,j=rdrow;i<=8&&j<=8;i++,j++){
if(balls.getCell(i,j)!=thecolor){
rdcol=i-1;
rdrow=j-1;
break;
}else if(j==8&&balls.getCell(i,j)==thecolor){
rdcol=i;
rdrow=j;
break;
}
}
}
//计算消失的小球数
hballnum=rcol-lcol+1;
vballnum=drow-urow+1;
pballnum=rucol-ldcol+1;
nballnum=rdcol-lucol+1;
if(hballnum>=5){
killedballnum+=hballnum;
kb++;
}
if(vballnum>=5){
killedballnum+=vballnum;
kb++;
}
if(pballnum>=5){
killedballnum+=pballnum;
kb++;
}
if(nballnum>=5){
killedballnum+=nballnum;
kb++;
}
if(kb==0){
killedballnum=0;
}else if(kb==1){
}else if(kb==2){
killedballnum-=1;
}else if(kb==3){
killedballnum-=2;
}else if(kb==4){
killedballnum-=3;
}
//清除小球
System.out.println(hballnum);
System.out.println(vballnum);
System.out.println(pballnum);
System.out.println(nballnum);
if(hballnum>=5){
for(int y=lcol;y<=rcol;y++){
balls.setCell(y,row,0);
}
}else if(vballnum>=5){
for(int k=urow;k<=drow;k++){
balls.setCell(col,k,0);
}
}else if(pballnum>=5){
for(i=ldcol,j=ldrow;i<=rucol&&j>=rurow;i++,j--){
balls.setCell(i,j,0);
}
}else if(nballnum>=5){
for(i=lucol,j=lurow;i<=rdcol&&j<=rdrow;i++,j++){
balls.setCell(i,j,0);
}
}
return killedballnum;
}
//更新分数
void updatescore(int killedballnumber){
switch(killedballnumber){
case 5:
score+=10;
break;
case 6:
score+=12;
break;
case 7:
score+=18;
break;
case 8:
score+=28;
break;
case 9:
score+=42;//一直线42、非直线60
break;
case 10:
score+=82;
break;
case 11:
score+=108;
break;
case 12:
score+=138;
break;
case 13:
score+=142;
break;
case 14:
score+=146;
break;
case 15:
score+=150;
break;
case 16:
score+=154;
break;
case 17:
score+=158;
break;
case 18:
score+=162;
break;
case 19:
score+=166;
break;
case 20:
score+=170;
break;
case 21:
score+=174;
break;
case 22:
score+=178;
break;
case 23:
score+=182;
break;
case 24:
score+=186;
break;
case 25:
score+=190;
break;
case 26:
score+=194;
break;
case 27:
score+=198;
break;
case 28:
score+=202;
break;
}
}
public void keyPressed(int keyCode){
//从keyCode获取游戏动作
//System.out.println(keyCode);
int action=getGameAction(keyCode);
if((keyCode==53 || keyCode==-5) && themenu==0 && GameStatus==0){
//重新开始新的一局
for(int i=0;i<bp.length;i++){
int column=i%bdColumn;
int row=(i-column)/bdRow;
balls.setCell(column,row,0);
}
score=0;
isFailed=false;
for(int i=1;i<=5;i++){
placeaball();
}
GameStatus=1;
}else if((keyCode==-7) && GameStatus==1){
GameStatus=0;
}else if((keyCode==53 || keyCode==-5) && themenu==3 && GameStatus==0){
GameStatus=2;
}
//按下向下或向上按钮
if(GameStatus==GamePause){
//菜单操作
switch(action){
case UP:
if(--themenu<0)
themenu=menus.length-1;
break;
case DOWN:
if(++themenu>=menus.length)
themenu=0;
break;
}
}else if(GameStatus==GameStart){
//游戏开始后的操作
switch(action){
case UP:
if(cur.y<=0)
cur.setPosition(cur.x,144);
else
cur.y-=18;
break;
case DOWN:
if(cur.y>=144)
cur.setPosition(cur.x,0);
else
cur.y+=18;
break;
case LEFT:
if(cur.x<=0)
cur.setPosition(144,cur.y);
else
cur.x-=18;
break;
case RIGHT:
if(cur.x>=144)
cur.setPosition(0,cur.y);
else
cur.x+=18;
break;
case FIRE:
//选中小球后出现一个闪烁的光标
if(balls.getCell(cur.x/18,cur.y/18)!=0){
flashcur.setVisible(true);
flashcur.setPosition(cur.x,cur.y);
isFlash=true;
}
if(isFlash&&balls.getCell(cur.x/18,cur.y/18)==0){
int x=balls.getCell(flashcur.getRefPixelX()/18,flashcur.getRefPixelY()/18);
balls.setCell(flashcur.getRefPixelX()/18,flashcur.getRefPixelY()/18,0);
balls.setCell(cur.x/18,cur.y/18,x);
int ballnumber=killball(cur.x/18,cur.y/18,x);
updatescore(ballnumber);
flashcur.setVisible(false);
flashcur.setPosition(cur.x,cur.y);
if(ballnumber<5){
for(int i=1;i<=3;i++){
placeaball();
int y=killball(thecol,therow,thecolor);
}
}
isFlash=false;
}
break;
}
}else if(GameStatus==GameOver){
//游戏结束时的操作
if(keyCode==53 || keyCode==-5){
//结束游戏代码
}else{
GameStatus=1;
return;
}
}
repaint();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -