J2SE饿罗斯方块

 

/***这是我自已无聊时做的,看到别人有发,我也发出来看一下,呵呵,不过,我是搞web开发,做的不怎么好,颜色这块没搞好,方块变换也做的不怎么好,数学没学好,模块有点乱***/
/**有木有顶贴的啊!**/

 


import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.Timer;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import javax.swing.JFrame;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;
public class Main extends JFrame {
 public Main(String str) throws IOException {
  EffectParts parts=new EffectParts();
  add(parts);
  setSize(400,480);
  setTitle(str);
  setVisible(true);
  setResizable(false);//是否可以调整大小;
  setLocationRelativeTo(null);//窗口显示的位置;
  //添加一个事件,退出程序事件;
  addWindowListener(new WindowAdapter() {
   @Override
   public void windowClosing(WindowEvent arg0) {
    System.exit(0);
   }
  });
 }

 public static void main(String[] args)throws IOException {
  Main main= new Main("俄罗斯方块1.0   bean number one game");
 }
}


class EffectParts extends JPanel implements KeyListener, MouseListener {
 FileOutputStream file;
 FileInputStream fileinput;
 int speedstrat = 1000;
 JButton start = new JButton("开始");
 JButton exit = new JButton("退出");
 JButton suspend = new JButton("暂停");
 JButton save = new JButton("存储游戏");
 JButton entry = new JButton("载入戏");
 private int speed = 1;
 boolean boo = false;
 private int score = 0;
 Random ran = new Random();
 SuperAdapter adapter = new SuperAdapter();
 DiamondTable diamond;
 Act[] act = new Act[4];
 Act[] actTwo = new Act[4];
 int[][] vesselState;
 Timer timer;
 TimerListener list = null;
 String url = "gamesave.txt";
 boolean fileboolean = true;
 boolean b = false;

 // 构造方法
 public EffectParts() {
  
  list = new TimerListener();
  add(suspend);
  add(entry);
  add(save, -1);
  exit.addMouseListener(adapter.getMouseClose());
  start.addMouseListener(new MouseAdapter() {
   @Override
   public void mousePressed(MouseEvent arg0) {
    getMouseStart();
    requestFocus(true);
   }
  });
  suspend.addMouseListener(new MouseAdapter() {
   @Override
   public void mousePressed(MouseEvent arg0) {

    Suspend();
    requestFocus(true);
   }

  });
  save.addMouseListener(new MouseAdapter() {
   @Override
   public void mousePressed(MouseEvent arg0) {
    try {
     Save();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  });
  entry.addMouseListener(new MouseAdapter() {
   @Override
   public void mousePressed(MouseEvent arg0) {
    try {
     entry();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  });
  setVisible(true);
  setLayout(new FlowLayout(FlowLayout.RIGHT));
  add(start);
  add(exit);

  // 实例化方块;
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  // 增加键盘监听器;
  this.addKeyListener(this);
  this.addMouseListener(this);
  vesselState = new int[10][20];
  for (int i = 0; i < vesselState.length; i++) {
   for (int k = 0; k < vesselState[i].length; k++) {
    vesselState[i][k] = 0;
   }
  }
 }

 // 重写方法,作用:在面版上绘画
 @Override
 protected void paintComponent(Graphics arg0) {
  super.paintComponent(arg0);
  arg0.drawString("分数: " + this.score, 270, 60);
  arg0.drawLine(260, 63, 380, 63);
  arg0.drawString("速度: " + this.speed, 270, 95);
  arg0.drawLine(260, 98, 380, 98);
  arg0.drawString("下一个方块", 270, 135);
  arg0.drawRect(8, 35, 201, 401);
  arg0.drawString("俄罗斯方块1.1", 260, 370);
  arg0.drawString("作者:Game石头", 260, 390);
  // 生成方块体
  if (boo) {
   for (int i = 0; i < 4; i++) {
    int key = ran.nextInt(4);
    // 这里用一个SWITCH来生成不同的四个颜色;
    switch (key) {
    case 0:
     arg0.setColor(Color.BLUE);
     break;
    case 1:
     arg0.setColor(Color.BLACK);
     break;
    case 2:
     arg0.setColor(Color.GRAY);
     break;
    case 3:
     arg0.setColor(Color.PINK);
     break;

    default:
     break;
    }
    arg0.fillRect(9 + act[i].getX() * 20, 36 + act[i].getY() * 20,
      20, 20);
   }
   // 这里将以出现的方块记录在一个二维数组内;
   for (int i = 0; i < vesselState.length; i++) {
    for (int k = 0; k < vesselState[i].length; k++) {
     if (vesselState[i][k] == 1) {
      arg0.fillRect(9 + i * 20, 36 + k * 20, 20, 20);
     }
    }
   }
   // 这里显示下一个方块体;
   for (int i = 0; i < 4; i++) {
    arg0.fillRect(200 + actTwo[i].getX() * 20,
      160 + actTwo[i].getY() * 20, 20, 20);
   }
  }
 }
 // 这个方法用于载入游戏;
 void entry() throws IOException {
  File fi=new File(url);
  if(!fi.isFile())
  {
   this.requestFocus(true);
   return;
  }
  fileinput = new FileInputStream(url);
  byte[] b = new byte[20];
  byte[] bx=new byte[4];
  byte[] by=new byte[4];
  fileinput.read(bx, 0, bx.length);
  fileinput.read(by, 0, by.length);
  for(int i=0;i<this.act.length;i++)
  {
   act[i].setY(by[i]);
   act[i].setX(bx[i]);
  }
  
  for (int i = 0; i < vesselState.length; i++) {
   try {
    fileinput.read(b, 0, b.length);
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   for(int g=0;g<b.length;g++)
   {
    vesselState[i][g]=b[g];
   }
  }
  try {
   fileinput.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  this.boo=true;
  nextDiamond();
  this.requestFocus(true);
  repaint();

 }

 // 这个方法用来存储游戏;
 void Save() throws IOException {
  File f=new File(url);
  
  if (!this.boo) {
   this.requestFocus(true);
   return;
  }
  if(f.isFile())
  {
   f.delete();
  }
  this.Suspend();
  file = new FileOutputStream(url, fileboolean);
  byte[] b;
  byte[] b1=new byte[4];
  byte[] b2=new byte[4];
  for(int i=0;i<this.act.length;i++)
  {
   b1[i]=(byte)act[i].getX();
   b2[i]=(byte)act[i].getY();
  }
  try {
   file.write(b1);
   file.write(b2);
  } catch (IOException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
  
  for (int i = 0; i < this.vesselState.length; i++) {
   b = new byte[20];
   for (int k = 9; k < this.vesselState[i].length; k++) {
    b[k] = (byte) vesselState[i][k];
   }
   try {
    file.write(b);
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  try {
   file.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  requestFocus(true);

 }

 // 这里是一个暂停方法
 void Suspend() {
  if (this.boo) {
   if (this.timer != null) {
    if (this.timer.isRunning()) {
     this.timer.stop();
    }
   }
   this.boo = false;
   this.suspend.setText("继续");
  } else {
   if (this.timer != null) {
    this.timer.start();
   }
   this.boo = true;
   this.suspend.setText("暂停");
  }
  this.requestFocus(true);
 }

 // 游戏开始调用这个方法;
 public boolean newAct() {
  if (this.boo) {

   // 随机取方块体样式
   int key = ran.nextInt(7) + 1;
   // 完成方块生成的数据;
   if (actTwo[0] == null) {
    diamond = new DiamondTable();
    act = diamond.getDiamond(key);
   } else {
    act = actTwo;
   }
   this.nextDiamond();
   if (!MinMaxShift(0, 1)) {
    return false;
   }
   b = true;
   return true;
  } else {
   return false;
  }
 }

 // 点击开始时事件触发的方法
 public void getMouseStart() {
  // 清空存储变量的值;
  for (int i = 0; i < vesselState.length; i++) {
   for (int k = 0; k < vesselState[i].length; k++) {
    vesselState[i][k] = 0;
   }
  }
  this.boo = true;
  this.score = 0;
  this.speed = 1;
  this.speedstrat = 1000;
  if (timer != null) {
   timer.stop();
  }
  timer = new Timer(speedstrat, list);
  // 清空存储方块体样式变量的值;
  for (int i = 0; i < 4; i++) {
   actTwo[i] = null;
  }
  if (timer.isRepeats()) {
   timer.stop();
  }
  this.suspend.setText("暂停");
  if (start.getText() == "开始") {
   start.setText("重置");
  }
  if (newAct()) {
   repaint();

  } else {
   return;
  }
  if (boo) {
   timer.start();
  }
 }

 // 控制方块不出容量;
 private boolean MinMaxShift(int x, int y) {
  for (int i = 0; i < 4; i++) {
   if ((act[i].getX() + x) < 0 || (act[i].getX() + x) >= 10
     || act[i].getY() + y < 0 || act[i].getY() + y > 19) {
    return false;
   }
   if (vesselState[act[i].getX() + x][act[i].getY() + y] == 1) {
    return false;
   }
  }

  return true;
 }

 // 改变方块的摆放方向
 // 改变方块摆放方向
 private void changeType() {
  Act[] actsan = new Act[4];
  for (int i = 0; i < actsan.length; i++) {
   actsan[i] = new Act();
   actsan[i].setX(act[i].getX());
   actsan[i].setY(act[i].getY());
  }
  for (int i = 0; i < actsan.length; i++) {
   if (actsan[i].getX() < 0 || actsan[i].getX() > 9
     || actsan[i].getY() < 0 || actsan[i].getY() > 19) {
    if (vesselState[act[i].getX() + 1][act[i].getY()] == 1
      || vesselState[act[i].getX() - 1][act[i].getY()] == 1) {
     return;
    }
   }
  }
  if ((actsan[2].getX() - actsan[0].getX()) == 1
    && (actsan[3].getX() - actsan[1].getX()) == 1
    && actsan[2].getY() - actsan[0].getY() == 0
    && (actsan[3].getY() - actsan[2].getY() == 1)
    && (actsan[3].getY() - actsan[0].getY() == 1)) {
   return;
  }
  int xx = (actsan[0].getX() + actsan[1].getX() + actsan[2].getX() + actsan[3]
    .getX()) / 4;
  int yy = (actsan[0].getY() + actsan[1].getY() + actsan[2].getY() + actsan[3]
    .getY()) / 4;
  for (int i = 0; i < actsan.length; i++) {
   actsan[i].setX(xx + yy - act[i].getY());
   actsan[i].setY(yy - xx + act[i].getX());
  }
  for (int i = 0; i < actsan.length; i++) {
   if (actsan[i].getX() < 0 || actsan[i].getX() > 9
     || actsan[i].getY() <= 0 || actsan[i].getY() > 19)
    return;
   else if (vesselState[actsan[i].getX()][actsan[i].getY()] == 1) {
    return;
   }
  }
  for (int i = 0; i < actsan.length; i++) {
   act[i].setX(actsan[i].getX());
   act[i].setY(actsan[i].getY());
  }
  repaint(9, 36, 201, 401);
 }

 // 方块移动方法实现;
 // 让方块体向左向右方法;
 private void Shift(int x, int y) {

  if (MinMaxShift(x, y) == false) {
   return;
  }
  if (boo) {
   for (int i = 0; i < 4; i++) {
    act[i].setX(act[i].getX() + x);
    act[i].setY(act[i].getY() + y);
    this.repaint(9, 36, 240, 400);
   }
  }
 }

 // 向下移动的方法;
 // 生成下一个方块体;
 private void nextDiamond() {
  int key = ran.nextInt(7) + 1;
  diamond = new DiamondTable();
  actTwo = diamond.getDiamond(key);
 }

 // 让方块体向下落的方法;
 private void down() {
  if (!boo) {
   return;
  }
  if (MinMaxShift(0, 1)) {
   for (int i = 0; i < 4; i++) {
    act[i].setY(act[i].getY() + 1);
   }
   repaint(9, 36, 240, 400);
  } else {
   for (int i = 0; i < 4; i++) {
    vesselState[act[i].getX()][act[i].getY()] = 1;
   }
   boolean lean = newAct();
   // 这里如果反回的是true;就查看容器中有没有增实,如果有,让他消失;
   // 同时让上面的方块落下来;并且加上分;
   if (lean) {
    boolean iftrue = false;
    int index = 19;
    int[] count = new int[20];
    int value = 0;
    for (int i = vesselState[0].length - 1; i >= 0; i--) {

     for (int k = vesselState.length - 1; k >= 0; k--) {
      value += vesselState[k][i];
      if (value == 10) {
       count[index] = i;
       index--;
      }
     }
     if (value == 0) {
      break;
     }
     value = 0;

    }
    int val = 0;
    // 这个盾环让完整的一行消掉;
    for (int i = vesselState[0].length - 1; i >= 0; i--) {
     for (int k = vesselState.length - 1; k >= 0; k--) {
      if (count[i] > 0) {
       vesselState[k][count[i]] = 0;
       val += 1;
      }
     }

    }
    // 加分方法
    if (val != 0) {
     if (val / 10 == 1)
      this.score += (val);
     else if (val / 10 == 2) {
      this.score += (val + 10);
     } else if (val / 10 == 3) {
      this.score += (val + 20);
     } else if (val / 10 == 4) {
      this.score += (val * 2);
     }
     val = 0;
    }
    // 加速度的给显示判断
    if (this.score > 2000) {

     if (this.score / 2000 <= 9
       && (this.score / 2000) != this.speed) {
      this.speed = this.score / 2000;
      this.speedstrat = (1000 - this.speed * 100);
      if (boo) {
       this.timer.stop();
       timer = new Timer(speedstrat, list);
       timer.start();
      }
     }
    }

    // 让整个面容器中的方块体随消失的方块体往下充实;
    for (int g = 0; g < 20; g++) {
     for (int i = vesselState[0].length - 1; i > 0; i--) {

      for (int k = vesselState.length - 1; k >= 0; k--) {
       value += vesselState[k][i];

      }
      for (int k = vesselState.length - 1; k >= 0; k--) {
       if (value == 0) {
        iftrue = true;
       }
       if (iftrue) {
        vesselState[k][i] = vesselState[k][i - 1];
       }
      }
      value = 0;
     }
     iftrue = false;
    }
   }

   repaint();
   // 这里如果反回来的是false,就让时间监听器停止,游戏也停止;
   if (!lean) {

    JOptionPane.showMessageDialog(null, "游戏结束!\n game over!", "提示",
      1);
    boo = false;
    timer.stop();
   }
  }
 }

 // 键盘事件
 @Override
 public void keyPressed(KeyEvent arg0) {
  if (boo) {
   switch (arg0.getKeyCode()) {
   case 65:
    this.Shift(-1, 0);
    break;
   case 37:
    this.Shift(-1, 0);
    break;
   case 38:
    this.changeType();
    break;
   case 87:
    this.Shift(0, -1);
    break;
   case 39:
    this.Shift(1, 0);
    break;
   case 68:
    this.Shift(1, 0);
    break;
   case 40:
    this.down();
    break;
   case 83:
    this.down();
    break;
   default:
    break;
   }
  }
  // 按下空格键,将调用暂停的方法
  if (32 == arg0.getKeyCode()) {
   this.Suspend();
  }
 }

 @Override
 public void keyReleased(KeyEvent arg0) {
 }

 @Override
 public void keyTyped(KeyEvent arg0) {
 }

 @Override
 public void mouseClicked(MouseEvent arg0) {
  // TODO Auto-generated method stub

 }

 @Override
 public void mouseEntered(MouseEvent arg0) {
  // TODO Auto-generated method stub

 }

 @Override
 public void mouseExited(MouseEvent arg0) {
  // TODO Auto-generated method stub

 }

 // 点击面版得到焦点;
 @Override
 public void mousePressed(MouseEvent arg0) {
  int x = arg0.getX();
  int y = arg0.getY();
  if (x >= 9 && x <= 209 && y >= 10 && y <= 410) {
   this.requestFocus();
  }
 }

 @Override
 public void mouseReleased(MouseEvent arg0) {
  // TODO Auto-generated method stub

 }

 public class TimerListener implements ActionListener {

  @Override
  public void actionPerformed(ActionEvent arg0) {
   down();

  }

 }
}

/**
 *
 * @author Administrator 一个超级适配器事件处理;
 */
class SuperAdapter {

 // 鼠标点击退出或开始事件
 public MouseListener getMouseClose() {
  return new MouseAdapter() {

   @Override
   public void mousePressed(MouseEvent arg0) {
    int values = JOptionPane.showConfirmDialog(null, "确定退出序程?",
      "提示", 2);

    if (0 == values) {
     System.exit(0);
    } else {
     return;
    }
   }
  };
 }

}
class DiamondTable {
 // 这个集合用于存放各中方块模具;
 private Map<Integer, Act[]> diamondVessel = null;
 private Map<Integer, Map<Integer, Act[]>> diamondMin = new HashMap<Integer, Map<Integer, Act[]>>();
 private Act[] act = new Act[4];

 // 构造一共19个方块体的样式;
 public DiamondTable() {
  diamondVessel = new HashMap<Integer, Act[]>();
  Act[] act = new Act[4];
  // 从这里开始生一种方块样式
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  // 第一种方块的第一个样式;这是个正方体只有一个样式;
  act[0].setX(4);
  act[0].setY(0);
  act[1].setX(4);
  act[1].setY(1);
  act[2].setX(5);
  act[2].setY(0);
  act[3].setX(5);
  act[3].setY(1);
  // 这里存进集合中
  diamondVessel.put(1, act);
  diamondMin.put(1, diamondVessel);

  // //
  // 第二种方块的各种样式
  diamondVessel = new HashMap<Integer, Act[]>();
  // (1)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(3);
  act[0].setY(0);
  act[1].setX(4);
  act[1].setY(0);
  act[2].setX(5);
  act[2].setY(0);
  act[3].setX(6);
  act[3].setY(0);
  diamondVessel.put(1, act);
  // (2)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(0);
  act[1].setX(4);
  act[1].setY(1);
  act[2].setX(4);
  act[2].setY(2);
  act[3].setX(4);
  act[3].setY(3);
  diamondVessel.put(2, act);

  diamondMin.put(2, diamondVessel);

  // //
  // 第三种方块的各种样式
  diamondVessel = new HashMap<Integer, Act[]>();
  // (1)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(0);
  act[1].setX(4);
  act[1].setY(1);
  act[2].setX(4);
  act[2].setY(2);
  act[3].setX(5);
  act[3].setY(2);
  diamondVessel.put(1, act);
  // (2)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(0);
  act[1].setX(4);
  act[1].setY(1);
  act[2].setX(5);
  act[2].setY(0);
  act[3].setX(6);
  act[3].setY(0);
  diamondVessel.put(2, act);
  // (3)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(0);
  act[1].setX(5);
  act[1].setY(0);
  act[2].setX(5);
  act[2].setY(1);
  act[3].setX(5);
  act[3].setY(2);
  diamondVessel.put(3, act);
  // (4)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(1);
  act[1].setX(5);
  act[1].setY(1);
  act[2].setX(6);
  act[2].setY(0);
  act[3].setX(6);
  act[3].setY(1);
  diamondVessel.put(4, act);
  diamondMin.put(3, diamondVessel);

  // //
  // 第四种方块的各种样式
  diamondVessel = new HashMap<Integer, Act[]>();
  // //
  // (1)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(5);
  act[0].setY(0);
  act[1].setX(5);
  act[1].setY(1);
  act[2].setX(5);
  act[2].setY(2);
  act[3].setX(4);
  act[3].setY(2);
  diamondVessel.put(1, act);
  // (2)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(0);
  act[1].setX(4);
  act[1].setY(1);
  act[2].setX(5);
  act[2].setY(1);
  act[3].setX(6);
  act[3].setY(1);
  diamondVessel.put(2, act);
  // (3)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(0);
  act[1].setX(4);
  act[1].setY(1);
  act[2].setX(4);
  act[2].setY(2);
  act[3].setX(5);
  act[3].setY(0);
  diamondVessel.put(3, act);
  // (4)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(0);
  act[1].setX(5);
  act[1].setY(0);
  act[2].setX(6);
  act[2].setY(0);
  act[3].setX(6);
  act[3].setY(1);
  diamondVessel.put(4, act);
  diamondMin.put(4, diamondVessel);

  // //
  // 第五种方块的各种样式
  diamondVessel = new HashMap<Integer, Act[]>();
  // //
  // (1)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(0);
  act[1].setX(4);
  act[1].setY(1);
  act[2].setX(5);
  act[2].setY(1);
  act[3].setX(5);
  act[3].setY(2);
  diamondVessel.put(1, act);
  // (2)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(1);
  act[1].setX(5);
  act[1].setY(0);
  act[2].setX(5);
  act[2].setY(1);
  act[3].setX(6);
  act[3].setY(0);
  diamondVessel.put(2, act);
  diamondMin.put(5, diamondVessel);

  // //
  // 第六种方块的各种样式
  diamondVessel = new HashMap<Integer, Act[]>();
  // //
  // (1)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(5);
  act[0].setY(0);
  act[1].setX(5);
  act[1].setY(1);
  act[2].setX(4);
  act[2].setY(1);
  act[3].setX(4);
  act[3].setY(2);
  diamondVessel.put(1, act);
  // (2)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(0);
  act[1].setX(5);
  act[1].setY(0);
  act[2].setX(5);
  act[2].setY(1);
  act[3].setX(6);
  act[3].setY(1);
  diamondVessel.put(2, act);
  diamondMin.put(6, diamondVessel);

  // //
  // 第七种方块的各种样式
  diamondVessel = new HashMap<Integer, Act[]>();
  // //
  // (1)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(0);
  act[1].setX(4);
  act[1].setY(1);
  act[2].setX(4);
  act[2].setY(2);
  act[3].setX(5);
  act[3].setY(1);
  diamondVessel.put(1, act);
  // (2)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(0);
  act[1].setX(5);
  act[1].setY(0);
  act[2].setX(6);
  act[2].setY(0);
  act[3].setX(5);
  act[3].setY(1);
  diamondVessel.put(2, act);
  // (3)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(5);
  act[0].setY(0);
  act[1].setX(5);
  act[1].setY(1);
  act[2].setX(5);
  act[2].setY(2);
  act[3].setX(4);
  act[3].setY(1);
  diamondVessel.put(3, act);
  // (4)
  act = new Act[4];
  for (int i = 0; i < act.length; i++) {
   act[i] = new Act();
  }
  act[0].setX(4);
  act[0].setY(1);
  act[1].setX(5);
  act[1].setY(0);
  act[2].setX(5);
  act[2].setY(1);
  act[3].setX(6);
  act[3].setY(1);
  diamondVessel.put(4, act);
  diamondMin.put(7, diamondVessel);
 }

 int b = 0;
 private Random ran = new Random();

 // 得到一个方块体样式
 public Act[] getDiamond(int i) {
  diamondVessel = diamondMin.get(i);
  b = diamondVessel.size();
  b = ran.nextInt(b) + 1;
  act = diamondVessel.get(b);
  return act;

 }

}
class Act {
 int x;
 int y;
 public int getX() {
  return x;
 }
 public void setX(int x) {
  this.x = x;
 }
 public int getY() {
  return y;
 }
 public void setY(int y) {
  this.y = y;
 }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值