level 1
dj7vg
楼主
总共3个类,一个线程类。好多效果还没实现。现在最主要的问题是新方块落下后如果它左边有旧方块,那新方块就会全部被着色。附上代码,求指教
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
public class EGame extends JFrame implements paintListener
{
private JMenuBar bar = new JMenuBar();
JMenu mgame = new JMenu("游戏"),mcontrol = new JMenu("控制"),
mstyle = new JMenu("风格"),mhelp = new JMenu("帮助");
JMenuItem mnewgame = new JMenuItem("新游戏"),
mexit = new JMenuItem("退出");
//设置窗口风格
JCheckBoxMenuItem mwindows = new JCheckBoxMenuItem("Windows"),
mMotif = new JCheckBoxMenuItem("Motif"),
mMetal = new JCheckBoxMenuItem("Metal",true);
void createMenu()
{
bar.add(mgame);
bar.add(mcontrol);
bar.add(mstyle);
bar.add(mhelp);
mgame.add(mnewgame);
mgame.add(mexit);
mstyle.add(mwindows);
mstyle.add(mMotif);
mstyle.add(mMetal);
setJMenuBar(bar);
mexit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
}
//顶部5个按钮实现操作功能
private JButton
bl = new JButton("左"),
br = new JButton("右"),
bd = new JButton("下"),
bp
= new JButton("变"),
bs = new JButton("开始");
private JPanel jpanel=new JPanel();
//设置容器大小为18X12的空间
int color[][]=new int[18][12];
JButton button[][]=new JButton[18][12];
JPanel boxPanel=new JPanel(new GridLayout(18, 12));
//声明并实例化方块类
EBlock eblock=new EBlock();
private void setTopButton()
{//定义控件的响应事件
bl.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
eblock.moveLeft();}
});
br.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
eblock.moveRight();}
});
bd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
eblock.moveDown();}
});
bp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
eblock.turnAround();}
});
bs.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
new EGame();}
});
jpanel.setLayout(new FlowLayout());
jpanel.add(bl);
jpanel.add(br);
jpanel.add(bd);
jpanel.add(bp);
jpanel.add(bs);
}
//键盘响应
public class ControlKeyListener extends KeyAdapter {
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_DOWN:
eblock.moveDown();
break;
case KeyEvent.VK_LEFT: