本篇帖的是部分動(dòng)作代碼。 每個(gè)方法前都有注釋說明本方法的功能。 //隨機(jī)選取一個(gè)位置,并填入數(shù)字2.如果此位置中已有數(shù)字,那么換一個(gè)位置。 public void rule(){ x=ran.nextInt(4); y=ran.nextInt(4); //System.out.println(x+""+y); String s=shuzi[x][y].getText(); if (s.equals(" ")) { shuzi[x][y].setText("2"); count++; } else { rule(); } } //重新游戲。為游戲按鈕中的每個(gè)按鈕取消上面的數(shù)字,并重新調(diào)用rule()開始新一輪的游戲,并將幾個(gè)變量設(shè)置為其初始值。 public void again(){ for(int i=0;i<4;i++) for(int j=0;j<4;j++) shuzi[i][j].setText(" "); count=0; iswin=false; result.setVisible(false); rule(); } //判斷游戲是否結(jié)束,是否勝利 public boolean win(String s){ //System.out.println(s); int n=Integer.parseInt(s); if(n==2048){ JOptionPane.showMessageDialog(this, "恭喜您,勝利了!"); iswin=true; } else if(n>2048) { JOptionPane.showMessageDialog(this, "數(shù)字大于2048,有誤!!!游戲重新開始!"); iswin=true; } return iswin; } //向上合并的規(guī)則 public void uprule(){ if(iswin){ result.setVisible(true); } else{ int i=1,j=0; for(i=1;i<4;i++){ for(j=0;j<4;j++){ str = shuzi[i][j].getText(); st = shuzi[i-1][j].getText(); if (st.equals(" ")&&!str.equals(" ")) { shuzi[i-1][j].setText(str); shuzi[i][j].setText(" "); //System.out.println(str); if(win(str)) break; } else if(!st.equals(" ")&&!str.equals(" ")){ num = Integer.parseInt(st); number=Integer.parseInt(str); num*=number; //System.out.println(num); String s=String.valueOf(num); shuzi[i-1][j].setText(s); shuzi[i][j].setText(" "); if(win(s)) break; } } } if(!iswin) rule(); } } //向左合并的規(guī)則 public void leftrule(){ if(iswin){ result.setVisible(true); } else{ int i=0,j=1; for(i=0;i<4;i++){ for(j=1;j<4;j++){ str = shuzi[i][j].getText(); st = shuzi[i][j-1].getText(); if (st.equals(" ")&&!str.equals(" ")) { shuzi[i][j-1].setText(str); shuzi[i][j].setText(" "); if(win(str)) break; //System.out.println(str); } else if(!st.equals(" ")&&!str.equals(" ")){ num = Integer.parseInt(st); number=Integer.parseInt(str); num*=number; //System.out.println(num); String s=String.valueOf(num); shuzi[i][j-1].setText(s); shuzi[i][j].setText(" "); if(win(s)) break; } } } if(!iswin) rule(); } } //向下合并的規(guī)則 public void downrule(){ if(iswin){ result.setVisible(true); } else{ int i=0,j=0; for(i=0;i<3;i++){ for(j=0;j<4;j++){ str = shuzi[i][j].getText(); st = shuzi[i+1][j].getText(); if (st.equals(" ")&&!str.equals(" ")) { shuzi[i+1][j].setText(str); shuzi[i][j].setText(" "); if(win(str)) break; //System.out.println(str); } else if(!st.equals(" ")&&!str.equals(" ")){ num = Integer.parseInt(st); number=Integer.parseInt(str); number*=num; //System.out.println(number); String s=String.valueOf(number); shuzi[i+1][j].setText(s); shuzi[i][j].setText(" "); if(win(s)) break; } } } if(!iswin) rule(); } } //向右合并的規(guī)則 public void rightrule(){ if(iswin){ result.setVisible(true); } else{ int i=0,j=0; for(i=0;i<4;i++){ for(j=0;j<3;j++){ str = shuzi[i][j].getText(); st = shuzi[i][j+1].getText(); if (st.equals(" ")&&!str.equals(" ")) { shuzi[i][j+1].setText(str); shuzi[i][j].setText(" "); if(win(str)) break; //System.out.println(str); } else if(!st.equals(" ")&&!str.equals(" ")){ num = Integer.parseInt(st); number=Integer.parseInt(str); number*=num; //System.out.println(number); String s=String.valueOf(number); shuzi[i][j+1].setText(s); shuzi[i][j].setText(" "); if(win(s)) break; } } } if(!iswin) rule(); } } |
|