public class mainpanel extends JPanel implements ActionListener{ public mainpanel() { // TODO Auto-generated constructor stub for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { JButton btn=new JButton(); btn.setPreferredSize(new Dimension(60,60)); btn.addActionListener(this); add(btn); mainFrame.btns[i][j]=btn; } } } public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub JButton selectButton=(JButton) e.getSource(); boolean flag=false; for (Ship ship : BattleShip.list) { if (!flag) { for (Position position : ship.getShip()) { int x=position.getX(); int y=position.getY(); if (selectButton==mainFrame.btns[x][y]) { flag=true; JOptionPane.showMessageDialog(BattleShip.MyFrame.getContentPane(), "恭喜您打中了!", "系统信息", JOptionPane.WARNING_MESSAGE); return; } } }else { return; } } if (!flag) { JOptionPane.showMessageDialog(BattleShip.MyFrame.getContentPane(), "哎呦!打偏了", "系统信息", JOptionPane.WARNING_MESSAGE); selectButton.setText("X"); } }
写BattleShip游戏 MainPanel类
游戏大致意思就是10*10的格子里面有五条不同类型的船
不同类型的船占有不同长度的格子
玩家点击格子如果有船就炸
点击格子没有这个格子里面没有船
那么这个格子将被标记
下面图中打X的格子就是没有船被标记的格子
然饿空的格子就是内部有船的格子但是效果并不好
界面优化的部分不太会做,想求教以下:
当这条船局部被炸 格子里显示爆炸(或者空格子被点击后更改颜色为蓝色)
如果整条船都被炸,那么就在窗口中显现出一个这类船的图形
求求大神T T
万分感谢
不 跪谢!!!
相关分类