GameAreaPanel.java
上传用户:liming9091
上传日期:2014-10-27
资源大小:3376k
文件大小:3k
源码类别:

Java编程

开发平台:

Java

  1. package russiagame;
  2. /**
  3.  * <p>Title: </p>
  4.  * <p>Description: </p>
  5.  * <p>Copyright: Copyright (c) 2003</p>
  6.  * <p>Company: </p>
  7.  * @author not attributable
  8.  * @version 1.0
  9.  */
  10. import javax.swing.*;
  11. import java.awt.*;
  12. import java.awt.event.*;
  13. public class GameAreaPanel extends Panel {
  14.     private Timer timer; //记时器,用于控制下落时间间隔
  15.     private int nTime = 1000; //速度,创建记时器是使用
  16.     private Root root; //要落下的方块的引用,即根类
  17.     private GameTable gTable; //创建一个游戏桌
  18.     private int nWhich; //标志创建哪一个要下落的方块
  19.     private int tempnWhich; //标志下一个要创建的方块,即提前显示下落块
  20.     private int nScore = 0; //每消一行加10分,用来记录总分数
  21.     private boolean canMove = false; //标志是否响应键盘
  22.     private Image myImage0, myImage1; //加载两个图片,用来覆盖背景和组成方块
  23.     private boolean isRun = true; //标志是开始还是暂停,一钮两用
  24.     public GameAreaPanel(GameTable gTable) {
  25.         myImage0 = getToolkit().getImage("b0.jpg");
  26.         myImage1 = getToolkit().getImage("b1.jpg");
  27.         gTable.myTable = new int[gTable.x][gTable.y];
  28.         for (int i = 0; i < gTable.x; i++)
  29.             for (int j = 0; j < gTable.y; j++)
  30.                 gTable.myTable[i][j] = 0;
  31.     }
  32.     public void Init() {
  33.         for (int i = 0; i < gTable.x; i++) //重新给游戏桌置0标志
  34.             for (int j = 0; j < gTable.y; j++) {
  35.                 gTable.myTable[i][j] = 0;
  36.             }
  37.         repaint();
  38.     }
  39.     public void paint(Graphics g) {
  40.         for (int i = 0; i < gTable.x; i++) //根据桌子上的标记决定是否画方块
  41.             for (int j = 0; j < gTable.y; j++) {
  42.                 if (gTable.myTable[i][j] == 1) { //有,画蓝方块
  43.                     g.drawImage(myImage1, 0 + i * (15 + 2) + 2,
  44.                                 0 + j * (15 + 2) + 2, this);
  45.                 }
  46.                 else if (gTable.myTable[i][j] == 0) { //无,画白方块
  47.                     g.drawImage(myImage0, 0 + i * (15 + 2) + 2,
  48.                                 0 + j * (15 + 2) + 2, this);
  49.                 }
  50.             }
  51.     }
  52.     public void actionPerformed(ActionEvent e) {
  53.         if (isRun) { //是开始
  54.             timer.start();
  55.             isRun = !isRun;
  56.             canMove = true; //可以响应键盘
  57.         }
  58.         else { //是暂停
  59.             timer.stop();
  60.             isRun = !isRun;
  61.             canMove = false; //不可以响应键盘
  62.         }
  63.     }
  64.     public void UpdateGraph(GameTable gameTable) {
  65.         this.gTable = gameTable;
  66.         this.repaint();
  67.     }
  68.     public void update(Graphics g) {
  69.         paint(g); //防止闪烁
  70.     }
  71. }