📄 panel2.java
字号:
package russian;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.table.*;
import com.borland.jbcl.layout.*;
/**
* <p>Title: Russian Block</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author not attributable
* @version 0.2
*/
public class Panel2 extends JPanel
{
//const fields
final static int IN_THE_AIR = 0000001;
final static int PUNCH_WALL = 0000010;
final static int PUNCH_GROUND = 0000100;
final static int BOMB = 0001000;
final static int DEAD = 0010000;
final static int SHAPE_AGAINST = 0100000;
final static int PAUSE = 01000000;
final static int AIR = 0;
final static int BLOCK = 1;
final static int BLOW = 2;
final static Color AIR_COLOR = Color.white;
final static Color BLOCK_COLOR = Color.cyan;
final static Color BLOW_COLOR = Color.pink;
//refer to interface
final static int TURN_RIGHT = 0;
final static int TURN_LEFT = 1;
final static int MOVE_NONE = 0;
final static int MOVE_RIGHT = 1;
final static int MOVE_LEFT = 2;
final static int MOVE_DOWN = 3;
/**
* description about a kind of shape in the table
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
interface Shape{
int[][] getMatrix();
void setLocation(Point p);
Point getLocation();
/**
* turn left or turn right
* @param direction int
* @param map int[][]
* @return int
*/
int turn(int direction,int[][] map);
/**
* move right,move left,move down
* @param direction int
* @param map int[][]
* @return int
*/
int move(int direction,int[][] map);
}
JPanel jPanel1 = new JPanel();
JToggleButton jButton1 = new JToggleButton();
JToggleButton jButton2 = new JToggleButton();
VerticalFlowLayout verticalFlowLayout1 = new VerticalFlowLayout();
JToggleButton jButton3 = new JToggleButton();
JToggleButton jButton4 = new JToggleButton();
JToggleButton jButton5 = new JToggleButton();
JToggleButton jButton6 = new JToggleButton();
JToggleButton jButton7 = new JToggleButton();
JPanel jPanel2 = new JPanel();
GridLayout gridLayout1 = new GridLayout();
JToggleButton jToggleButton1 = new JToggleButton();
JToggleButton jToggleButton2 = new JToggleButton();
JToggleButton jToggleButton3 = new JToggleButton();
JToggleButton jToggleButton4 = new JToggleButton();
JToggleButton jToggleButton5 = new JToggleButton();
JToggleButton jToggleButton6 = new JToggleButton();
JToggleButton jToggleButton7 = new JToggleButton();
JToggleButton jToggleButton8 = new JToggleButton();
JToggleButton jToggleButton9 = new JToggleButton();
ButtonGroup bg = new ButtonGroup();
boolean gameover = false;
boolean gamepause = false;
BorderLayout borderLayout1 = new BorderLayout();
JScrollPane jScrollPane1 = new JScrollPane();
MyTableModel tModel = new MyTableModel(10,20);
TableCellRenderer tcr = new TableCellRenderer(){
JLabel l = new JLabel();
/**
* getTableCellRendererComponent
*
* @param table JTable
* @param value Object
* @param isSelected boolean
* @param hasFocus boolean
* @param row int
* @param column int
* @return Component
*/
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column)
{
l.setOpaque(true);
Class c = table.getModel().getColumnClass(column);
if(c.equals(Integer.class)){
int v = Integer.parseInt(value.toString());
switch(v){
case BLOCK:
l.setBackground(BLOCK_COLOR);
l.setBorder(border1);
break;
case BLOW:
l.setBackground(BLOW_COLOR);
l.setBorder(border1);
break;
case AIR:
default:
l.setBorder(null);
l.setBackground(AIR_COLOR);
}
}else{
l.setBorder(null);
l.setOpaque(false);
}
return l;
}
};
JTable jTable1 = new JTable(tModel){
public TableCellRenderer getCellRenderer(int row, int column){
return tcr;
}
public int getRowHeight(){
return this.getColumnModel().getColumn(0).getWidth();
}
public int getRowHeight(int row) {
return getRowHeight();
}
};
Shape next;
final static Random r = new Random();
JPanel jPanel3 = new JPanel();
JTable jTable2 = new JTable(new TableModel()
{
/**
* getColumnCount
*
* @return int
*/
public int getColumnCount()
{
return 4;
}
/**
* getRowCount
*
* @return int
*/
public int getRowCount()
{
return 4;
}
/**
* isCellEditable
*
* @param rowIndex int
* @param columnIndex int
* @return boolean
*/
public boolean isCellEditable(int rowIndex, int columnIndex)
{
return false;
}
/**
* getColumnClass
*
* @param columnIndex int
* @return Class
*/
public Class getColumnClass(int columnIndex)
{
return Integer.class;
}
/**
* getValueAt
*
* @param rowIndex int
* @param columnIndex int
* @return Object
*/
public Object getValueAt(int rowIndex, int columnIndex)
{
try
{
return new Integer(next.getMatrix()[rowIndex][columnIndex]);
}
catch (Exception ex)
{
return new Integer(AIR);
}
}
/**
* setValueAt
*
* @param aValue Object
* @param rowIndex int
* @param columnIndex int
*/
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
{
}
/**
* getColumnName
*
* @param columnIndex int
* @return String
*/
public String getColumnName(int columnIndex)
{
return "";
}
/**
* addTableModelListener
*
* @param l TableModelListener
*/
public void addTableModelListener(TableModelListener l)
{
}
/**
* removeTableModelListener
*
* @param l TableModelListener
*/
public void removeTableModelListener(TableModelListener l)
{
}
}
)
{
public TableCellRenderer getCellRenderer(int row, int column)
{
return tcr;
}
};
BorderLayout borderLayout2 = new BorderLayout();
Border border1 = BorderFactory.createBevelBorder(BevelBorder.RAISED);
JToggleButton jToggleButton10 = new JToggleButton();
JPanel jPanel4 = new JPanel();
GridBagLayout gridBagLayout1 = new GridBagLayout();
JLabel jLabel1 = new JLabel();
public Panel2()
{
try
{
jbInit();
}
catch(Exception ex)
{
ex.printStackTrace();
}
this.jTable1.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent evt)
{
handleKey(evt,true);
}
public void keyReleased(KeyEvent evt){
handleKey(evt,false);
}
});
this.tModel.addTableModelListener(new TableModelListener(){
/**
* tableChanged
*
* @param e TableModelEvent
*/
public void tableChanged(TableModelEvent e)
{
jTable1.repaint();
int code = e.getType();
reflectToButton(code);
gamepause = (code&PAUSE)!=0;
gameover = (code&DEAD)!=0;
MyTableModel mtm = (MyTableModel) e.getSource();
jLabel1.setText("LAYERS: "+mtm.layer);
if(next!=mtm.next){
next = mtm.next;
jTable2.repaint();
}
}
});
new Thread(){
public void run(){
//tModel.addShape(new Square());
while(true){
try
{
Thread.sleep(1000);
if(!gamepause&&!gameover){
tModel.move(MOVE_DOWN);
}
}
catch (InterruptedException ex)
{
}
}
}
}.start();
}
/**
* 控制键
* @param evt KeyEvent
* @param pressed boolean
*/
void handleKey(KeyEvent evt,boolean pressed){
switch(evt.getKeyCode()){
case KeyEvent.VK_UP:
if(gameover||gamepause) return;
this.jToggleButton2.setSelected(pressed);
if(pressed)this.tModel.turn(TURN_LEFT);
break;
case KeyEvent.VK_DOWN:
if(gameover||gamepause) return;
this.jToggleButton8.setSelected(pressed);
if(pressed)this.tModel.move(MOVE_DOWN);
break;
case KeyEvent.VK_LEFT:
if(gameover||gamepause) return;
this.jToggleButton4.setSelected(pressed);
if(pressed)this.tModel.move(MOVE_LEFT);
break;
case KeyEvent.VK_RIGHT:
if(gameover||gamepause) return;
this.jToggleButton6.setSelected(pressed);
if(pressed)this.tModel.move(MOVE_RIGHT);
break;
case KeyEvent.VK_SPACE:
if(gamepause) return;
this.jToggleButton10.setSelected(pressed);
if(pressed){
if(gameover){
this.tModel.reset();
gameover = false;
}
else{
this.gamepause = true;
int ret = 0;
do
{
ret = this.tModel.move(MOVE_DOWN);
}
while ( (ret&(PAUSE|DEAD|PUNCH_GROUND)) == 0);
this.gamepause = false;
}
}
break;
}
}
class MyTableModel implements TableModel{
int layer = 0;
int[][] map;
Shape s;
Shape next = new Square();
protected EventListenerList listenerList = new EventListenerList();
public MyTableModel(int width,int height){
map = new int[height][width];
addShape(new Square());
}
/**
* getColumnCount
*
* @return int
*/
public int getColumnCount()
{
return map[0].length;
}
/**
* getRowCount
*
* @return int
*/
public int getRowCount()
{
return map.length;
}
/**
* isCellEditable
*
* @param rowIndex int
* @param columnIndex int
* @return boolean
*/
public boolean isCellEditable(int rowIndex, int columnIndex)
{
return false;
}
/**
* getColumnClass
*
* @param columnIndex int
* @return Class
*/
public Class getColumnClass(int columnIndex)
{
return Integer.class;
}
/**
* getValueAt
*
* @param rowIndex int
* @param columnIndex int
* @return Object
*/
public Object getValueAt(int rowIndex, int columnIndex)
{
try{
return new Integer(this.map[rowIndex][columnIndex]);
}catch(java.lang.ArrayIndexOutOfBoundsException e){
return null;
}
}
/**
* setValueAt
*
* @param aValue Object
* @param rowIndex int
* @param columnIndex int
*/
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
{
try{
this.map[rowIndex][columnIndex] = Integer.parseInt(aValue.toString());
}catch(java.lang.ArrayIndexOutOfBoundsException e){
e.printStackTrace();
}
}
/**
* getColumnName
*
* @param columnIndex int
* @return String
*/
public String getColumnName(int columnIndex)
{
return columnIndex+"";
}
/**
* addTableModelListener
*
* @param l TableModelListener
*/
public void addTableModelListener(TableModelListener l)
{
listenerList.add(TableModelListener.class, l);
}
/**
* removeTableModelListener
*
* @param l TableModelListener
*/
public void removeTableModelListener(TableModelListener l)
{
listenerList.remove(TableModelListener.class, l);
}
public int addShape(Shape s){
this.s = next;
this.next = s;
int[][] m = this.s.getMatrix();
Point p = new Point((this.map[0].length-m[0].length)/2, 0);
this.s.setLocation(p);
if (!isOverlap(map, m, p))
{
int ret = move(MOVE_NONE);
return ret;
}
new Thread(){
public void run(){}{
for(int i = 0;i<map.length;i++){
try
{
sleep(80);
map[i] = new int[]{l,l,l,l,l,l,l,l,l,l};
fireTableChange(PAUSE);
}
catch (InterruptedException ex)
{
}
}
Point p = overlogo.getLocation();
int[][] m = overlogo.getMatrix();
int start = p.y;
int end = p.y + m.length-1;
for(int i = 0;i<map.length;i++){
try
{
sleep(80);
if (i >= start && i <= end)
{
for(int j = 0;j<map[i].length;j++){
map[i][j] = m[i - start][j];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -