
JAVA打地鼠游戏求解,求高手,能解决问题可以追加分数
importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassKillMouse{publ...
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class KillMouse
{
public static void main(String[] args)
{
new Mouse();
}
};
class Mouse extends JFrame implements MouseListener ,ActionListener
{
Timer timer;
int score;
JLabel lb1;
JLabel img[] = new JLabel[4];
int m_status[] = new int[4];
public Mouse()
{
super( " -打地鼠游戏-呵呵 ");
Container c = getContentPane();
c.setLayout(null);
lb1 = new JLabel( "恭喜您得分:0 ");
lb1.setFont(new Font( "宋体 ",Font.BOLD,16));
lb1.setSize(200,30);
lb1.setLocation(5,5);
c.add(lb1);
ImageIcon icon1 = new ImageIcon( "mouse.gif "); //注意图片要和class文件在一个目录下
for(int i=0;i <4;i++)
{
img[i] = new JLabel(icon1);
img[i].setSize(90,90);
img[i].setLocation(50+i*100,150);
img[i].setVisible(false);
img[i].addMouseListener(this);
c.add(img[i]);
m_status[i] = 0;
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,400);
setVisible(true);
score = 0;
timer = new Timer(2000,this);
timer.start();
}
public void actionPerformed(ActionEvent e)
{
int i,j,x;
int rlist[]={0,1,2,3};
if(e.getSource()==timer)
{
for(i=0;i <4;i++)
{
j=(int)(Math.random()*4);
x=rlist[i];
rlist[i]=rlist[j];
rlist[j]=x;
}
for(i=0;i <4;i++)
{
if(m_status[rlist[i]]==0)
{
m_status[rlist[i]]=1;
img[rlist[i]].setVisible(true);
}
}
img[0].setVisible(true);
}
}
public void mousePressed(MouseEvent e)
{
}
public void mouseReleased(MouseEvent e)
{
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
public void mouseClicked(MouseEvent e)
{
for (int i=0;i <4 ;i++ )
{
if(e.getSource()==img[i])
{
score+=10;
lb1.setText( "恭喜您得分: "+score);
img[i].setVisible(false);
m_status[i] = 0;
}
}
}
};
以上是我从网上找到的代码,可是运行起来只会在左上角出现:恭喜您得分:0
是图片放置有什么要求吗?不是放在跟CLASS文件同一目录就行了吗?
还有那些类似
public void mousePressed(MouseEvent e) 的左面有个小三角形是什么意思?
是代码还需要完善吗?
时间比较紧迫~~求高手解决!!
前面问题已解决。现在只需要添加一个背景~~~ 展开
import javax.swing.*;
import java.awt.event.*;
public class KillMouse
{
public static void main(String[] args)
{
new Mouse();
}
};
class Mouse extends JFrame implements MouseListener ,ActionListener
{
Timer timer;
int score;
JLabel lb1;
JLabel img[] = new JLabel[4];
int m_status[] = new int[4];
public Mouse()
{
super( " -打地鼠游戏-呵呵 ");
Container c = getContentPane();
c.setLayout(null);
lb1 = new JLabel( "恭喜您得分:0 ");
lb1.setFont(new Font( "宋体 ",Font.BOLD,16));
lb1.setSize(200,30);
lb1.setLocation(5,5);
c.add(lb1);
ImageIcon icon1 = new ImageIcon( "mouse.gif "); //注意图片要和class文件在一个目录下
for(int i=0;i <4;i++)
{
img[i] = new JLabel(icon1);
img[i].setSize(90,90);
img[i].setLocation(50+i*100,150);
img[i].setVisible(false);
img[i].addMouseListener(this);
c.add(img[i]);
m_status[i] = 0;
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,400);
setVisible(true);
score = 0;
timer = new Timer(2000,this);
timer.start();
}
public void actionPerformed(ActionEvent e)
{
int i,j,x;
int rlist[]={0,1,2,3};
if(e.getSource()==timer)
{
for(i=0;i <4;i++)
{
j=(int)(Math.random()*4);
x=rlist[i];
rlist[i]=rlist[j];
rlist[j]=x;
}
for(i=0;i <4;i++)
{
if(m_status[rlist[i]]==0)
{
m_status[rlist[i]]=1;
img[rlist[i]].setVisible(true);
}
}
img[0].setVisible(true);
}
}
public void mousePressed(MouseEvent e)
{
}
public void mouseReleased(MouseEvent e)
{
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
public void mouseClicked(MouseEvent e)
{
for (int i=0;i <4 ;i++ )
{
if(e.getSource()==img[i])
{
score+=10;
lb1.setText( "恭喜您得分: "+score);
img[i].setVisible(false);
m_status[i] = 0;
}
}
}
};
以上是我从网上找到的代码,可是运行起来只会在左上角出现:恭喜您得分:0
是图片放置有什么要求吗?不是放在跟CLASS文件同一目录就行了吗?
还有那些类似
public void mousePressed(MouseEvent e) 的左面有个小三角形是什么意思?
是代码还需要完善吗?
时间比较紧迫~~求高手解决!!
前面问题已解决。现在只需要添加一个背景~~~ 展开
2个回答
展开全部
A。首先你的图片路径找不到,所以没有东西显示。
解决方法,1.如果你用eclipse那么到workspace下找到项目路径下的bin文件夹,将图片放到 与.Class文件同目录下。
2.或者修改代码
ImageIcon icon1 = new ImageIcon("mouse.gif ");
将其中的"mouse.gif "指定为你图片所在的路径.
B.第二个问题是
public void mousePressed(MouseEvent e) 的左面有个小三角形是eclipse的提示,说明本方法继承自其它父类的方法。
另外,代码虽然没有什么错,但是本身这样的写实有问题的。比如设计模式,重用性等等。
既然前面的问题解决了,那么背景当然是加代码如下了:
Container c = getContentPane();
c.setBackground(Color.red);
如果想要加自定义的图片作为背景有点麻烦:
1.首先设置一个label
ImageIcon background = new ImageIcon("test.jpg");
JLabel label = new JLabel(background);
// 把标签的大小位置设置为图片刚好填充整个面板
label.setBounds(0, 0, background.getIconWidth(),
background.getIconHeight());
// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
imagePanel = (JPanel) frame.getContentPane();
imagePanel.setOpaque(false);
// 内容窗格默认的布局管理器为BorderLayout
imagePanel.setLayout(new FlowLayout());
imagePanel.add(new JButton("测试按钮"));
frame.getLayeredPane().setLayout(null);
// 把背景图片添加到分层窗格的最底层作为背景
frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(background.getIconWidth(), background.getIconHeight());
frame.setResizable(false);
frame.setVisible(true);
解决方法,1.如果你用eclipse那么到workspace下找到项目路径下的bin文件夹,将图片放到 与.Class文件同目录下。
2.或者修改代码
ImageIcon icon1 = new ImageIcon("mouse.gif ");
将其中的"mouse.gif "指定为你图片所在的路径.
B.第二个问题是
public void mousePressed(MouseEvent e) 的左面有个小三角形是eclipse的提示,说明本方法继承自其它父类的方法。
另外,代码虽然没有什么错,但是本身这样的写实有问题的。比如设计模式,重用性等等。
既然前面的问题解决了,那么背景当然是加代码如下了:
Container c = getContentPane();
c.setBackground(Color.red);
如果想要加自定义的图片作为背景有点麻烦:
1.首先设置一个label
ImageIcon background = new ImageIcon("test.jpg");
JLabel label = new JLabel(background);
// 把标签的大小位置设置为图片刚好填充整个面板
label.setBounds(0, 0, background.getIconWidth(),
background.getIconHeight());
// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
imagePanel = (JPanel) frame.getContentPane();
imagePanel.setOpaque(false);
// 内容窗格默认的布局管理器为BorderLayout
imagePanel.setLayout(new FlowLayout());
imagePanel.add(new JButton("测试按钮"));
frame.getLayeredPane().setLayout(null);
// 把背景图片添加到分层窗格的最底层作为背景
frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(background.getIconWidth(), background.getIconHeight());
frame.setResizable(false);
frame.setVisible(true);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询