基于java+swing的潜艇大战项目游戏(java+swing)

基于java+swing的潜艇大战项目游戏(java+swing)

功能简介:
Java swing实现的一款小游戏潜艇大战的项目源码
请添加图片描述
请添加图片描述

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

						
						boolean isScv = (tile.getType()==gridMapRender.getCurrentType())
									&&(tile instanceof Scv);
						if(isScv){
							tile.focus();
							gridMapRender.addFocusSprite((Sprite)tile);
						}
						
					}
				}
				else if(keyCode==KeyEvent.VK_2){
					gridMapRender.blur();
					for(Tile tile:gridmap.getTiles()){
						
						boolean isMarine = tile.getType()==gridMapRender.getCurrentType()
									&&tile instanceof Marine;
						if(isMarine){
							tile.focus();
							gridMapRender.addFocusSprite((Sprite)tile);
						}
						
					}
				}
		}
		
		public void addPlayer(int index,String name){
			System.out.println("addplayer:"+index+","+name);
			players.get(index).addElement(name);
			players.get(index).setSelectedItem(name);
			
		}
		
		public void selectPlayer(int index,String name){
			 
			players.get(index).setSelectedItem(name);
			
		}
		
		public void delPlayer(int index,String oldName){
 
			players.get(index).removeElement(oldName);
//			for(int i=0;i<players.get(index).getSize();++i){
	 * 右边Panel
	 */
	class RightPanel extends JPanel {
		private int x, y;
		Elastic elastic = new Elastic(800, -180);
		Image image = ResourceManager.loadImage("right.png");
		JButton startbtn = new JButton("Start");
		
		JButton returnbtn = new JButton("Return");
		public RightPanel(JPanel parent) {
			setLayout(null);
			setSize(180, 180);
			x = (parent.getWidth() - getWidth());
			y = 460;
			setLocation(x, y);
			
			mode2.addListDataListener(new ListDataListener(){
				public void contentsChanged(ListDataEvent e) {
					String value = mode2.getSelectedItem().toString();
					if(value.equals("Computer") || value.equals("Open") || value.equals("Closed")){
						gameGUI.netWorkManager.select(value,2);
					}
				}
				public void intervalAdded(ListDataEvent e) {}
				public void intervalRemoved(ListDataEvent e) {}
				
			});
			final DefaultComboBoxModel mode3 = new DefaultComboBoxModel(labels);
			mode3.addListDataListener(new ListDataListener(){
				public void contentsChanged(ListDataEvent e) {
		 
		ActionListener returnListen = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				leftPanel.players.get(0).removeAllElements();
				gameGUI.netWorkManager.close();
				GameGUI gamePanel = (GameGUI) NewGamePanel.this.getParent();
				leftPanel.elastic.slide(50, -300);
				rightPanel.elastic.slide(600, 200);
				try {
					Thread.sleep(200);
				} catch (InterruptedException e1) {
					e1.printStackTrace();
				}
				gamePanel.switchMainMenu();
			}
		});	
		
		control.addMoveListener(new MoveListener(){
			public void move(int x, int y) {
				 
				int offsetX = gridMapRender.offsetX;
				int screenX = getWidth()-GridMapRender.TILE_WIDTH;
				 
				//濡傛灉榧犳爣浣嶄簬灞忓箷瀹藉害鍓嶄竴涓猅ILE瀹藉害
				if(x>screenX&&offsetX<GridMapRender.tileXToPx(107)){
					//鍚戝彸绉诲姩涓�釜tile瀹藉害
					gridMapRender.offsetX=offsetX+GridMapRender.TILE_WIDTH;
					robot.mouseMove(screenX, y);
					++controlPanel.map_panel.x;
				}
				//濡傛灉榧犳爣鍦ㄤ竴涓猅ILE瀹藉害
				if(x<GridMapRender.TILE_WIDTH&&offsetX>0){
					gridMapRender.offsetX=offsetX-GridMapRender.TILE_WIDTH;
					robot.mouseMove(GridMapRender.TILE_WIDTH, y);
					--controlPanel.map_panel.x;
			setLocation(x, y);
		}
		
	}
	class LeftPanel extends JPanel {
		private int x, y = 20;
		Elastic elastic = new Elastic(-50, 50);
		Image image = ResourceManager.loadImage("left.png");
		
		String labels[] = { "Open", "Closed","Computer"};
		
				if(x<GridMapRender.TILE_WIDTH&&offsetX>0){
					gridMapRender.offsetX=offsetX-GridMapRender.TILE_WIDTH;
					robot.mouseMove(GridMapRender.TILE_WIDTH, y);
					--controlPanel.map_panel.x;
				}
				
				//绾靛潗鏍囧拰姘村钩鍧愭爣閫昏緫鐩稿悓
				int offsetY = gridMapRender.offsetY;
				int screenY = getHeight()-GridMapRender.TILE_HEIGHT;
				
				if(y>screenY&&offsetY<GridMapRender.tileXToPx(110)){
					//鍚戝彸绉诲姩涓�釜tile瀹藉害
					gridMapRender.offsetY=offsetY+GridMapRender.TILE_HEIGHT;
					robot.mouseMove(x, screenY);
					++controlPanel.map_panel.y;
				}
				
				if(y<GridMapRender.TILE_HEIGHT&&offsetY>0){
					gridMapRender.offsetY=offsetY-GridMapRender.TILE_WIDTH;
					robot.mouseMove(x, GridMapRender.TILE_HEIGHT);
					--controlPanel.map_panel.y;
				}
				
				gridMapRender.moveX = x;
//					return;
//				}
//			}
//			players.get(index).addElement(newName);
		}
		 
		
		 
		
		private  class GameItemListener implements ItemListener{
			int index;
			
			public GameItemListener(int index) {
				this.index = index;
			}
			public void itemStateChanged(ItemEvent e) {
				
				String value = e.getItem().toString();
				if(value.equals("Closed")||e.getItem().toString().equals("Open")){
					jcbs[index][1].setVisible(false);
				}else{
					jcbs[index][1].setVisible(true);
				}
			}
			}
		}
		
		public void addPlayer(int index,String name){
			System.out.println("addplayer:"+index+","+name);
			players.get(index).addElement(name);
			players.get(index).setSelectedItem(name);
			
		}
		
		public void selectPlayer(int index,String name){
			 
			players.get(index).setSelectedItem(name);
			
		}
		
		public void delPlayer(int index,String oldName){
 
			players.get(index).removeElement(oldName);
//			for(int i=0;i<players.get(index).getSize();++i){
//				Object item = players.get(index).getElementAt(i);
		public void selectPlayer(int index,String name){
			 
			players.get(index).setSelectedItem(name);
			
		}
		
		public void delPlayer(int index,String oldName){
 
			players.get(index).removeElement(oldName);
//			for(int i=0;i<players.get(index).getSize();++i){
//				Object item = players.get(index).getElementAt(i);
//				if(item.equals(newName)){
//					players.get(index).setSelectedItem(newName);
//					return;
//				}
//			}
//			players.get(index).addElement(newName);
					--controlPanel.map_panel.y;
				}
				
				gridMapRender.moveX = x;
				gridMapRender.moveY = y;
				
			}
			
		});
		
		
		public LeftPanel(JPanel parenPanel) {
			setLayout(null);
			setSize(400, 270);
			setLocation(x, y);
			int location=120;
			
			final DefaultComboBoxModel mode1 = new DefaultComboBoxModel(labels);
			mode1.addListDataListener(new ListDataListener(){
				public void contentsChanged(ListDataEvent e) {
					DefaultComboBoxModel model = (DefaultComboBoxModel) e.getSource();
					Object item = model.getSelectedItem();
					//System.out.println(item+ ".contentsChanged()  1");
					if(item.equals("Computer") || item.equals("Open") || item.equals("Closed")){
						gameGUI.netWorkManager.select(item.toString(), 1);
						//System.out.println(item);
					}
				}
				public void intervalAdded(ListDataEvent e) {}
				public void intervalRemoved(ListDataEvent e) {}
				
			});
			
	class RightPanel extends JPanel {
		private int x, y;
		Elastic elastic = new Elastic(800, -180);
		Image image = ResourceManager.loadImage("right.png");
		JButton startbtn = new JButton("Start");
		
		JButton returnbtn = new JButton("Return");
		public RightPanel(JPanel parent) {
			setLayout(null);
			setSize(180, 180);
			x = (parent.getWidth() - getWidth());
				gamePanel.switchMainMenu();
			}
		};
	}
}
游戏界面:
@SuppressWarnings({ "unused", "serial" })
public class GameGUI extends JPanel {
	//卡片布局器
	private CardLayout cardLayout = new CardLayout();
	//进度条面板 
	private ProgressPanel progressPanel; 
	//菜单面板
	private MainMenuPanel menuPanel;
	//游戏面板
	private GamePanel gamePanel;
	//需要update
	private Abstractpanel currentPanel;
		  }
		 
	}
}
游戏界面:
/**
 * 游戏界面
 */
public class GamePanel extends Abstractpanel{
	
	
	GridMap gridmap;
	GridMapRender gridMapRender;
	
	Control control;
	ConsolePanel controlPanel;
	
	Robot robot; 
	 
	public void init(){
		
		initControl();
		gridmap = ResourceManager.resourceManager.getGridMap();
		};
	}
}
游戏界面:
@SuppressWarnings({ "unused", "serial" })
public class GameGUI extends JPanel {
	//卡片布局器
	private CardLayout cardLayout = new CardLayout();
	//进度条面板 
	private ProgressPanel progressPanel; 
	//菜单面板
	private MainMenuPanel menuPanel;
	//游戏面板
	private GamePanel gamePanel;
	//需要update
	private Abstractpanel currentPanel;
	//单人游戏面板
	private SingleGamePanel singleGamePanel;
	//多人能游戏面板
	private MutilPlayerPanel mutilPlayerPanel;
	
	NewGamePanel newGamePanel;
	
			}
			
		});
		control.addRightPressListener(new RightPressListener(){
			public void press(int x, int y) {
				gridMapRender.move(x, y);
			}
		});	
		
		control.addMoveListener(new MoveListener(){
			public void move(int x, int y) {
				 
				int offsetX = gridMapRender.offsetX;
				int screenX = getWidth()-GridMapRender.TILE_WIDTH;
				 
				//濡傛灉榧犳爣浣嶄簬灞忓箷瀹藉害鍓嶄竴涓猅ILE瀹藉害
				if(x>screenX&&offsetX<GridMapRender.tileXToPx(107)){
					rightPanel.elastic.slide(600, 200);
					try {
						Thread.sleep(200);
					} catch (InterruptedException e1) {
						e1.printStackTrace();
					}
					gameGUI.switchProgress(playerList.getType(),playerList.getPlayers());
				}
			}
		};
		 
		ActionListener returnListen = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				leftPanel.players.get(0).removeAllElements();
				gameGUI.netWorkManager.close();
			int location=120;
			
			final DefaultComboBoxModel mode1 = new DefaultComboBoxModel(labels);
			mode1.addListDataListener(new ListDataListener(){
				public void contentsChanged(ListDataEvent e) {
					DefaultComboBoxModel model = (DefaultComboBoxModel) e.getSource();
					Object item = model.getSelectedItem();
					//System.out.println(item+ ".contentsChanged()  1");
					if(item.equals("Computer") || item.equals("Open") || item.equals("Closed")){
						gameGUI.netWorkManager.select(item.toString(), 1);
						//System.out.println(item);
					}
				}
				public void intervalAdded(ListDataEvent e) {}
				public void intervalRemoved(ListDataEvent e) {}
				
			});
			
			final DefaultComboBoxModel mode2 = new DefaultComboBoxModel(labels);
			mode2.addListDataListener(new ListDataListener(){
				public void contentsChanged(ListDataEvent e) {
					String value = mode2.getSelectedItem().toString();
					if(value.equals("Computer") || value.equals("Open") || value.equals("Closed")){
						gameGUI.netWorkManager.select(value,2);
				public void intervalRemoved(ListDataEvent e) {}
				
			});
			
			//如果是SingleGame
//			if(gameGUI.netWorkManager instanceof MockNetWorkManager){
//				players.add(new DefaultComboBoxModel(new String[]{"Player"}));
//			}else{
//				players.add(new DefaultComboBoxModel());
//			}
			//System.out.println("gameGUI.netWorkManager:"+gameGUI.netWorkManager);
			players.add(new DefaultComboBoxModel());
			players.add(mode1);
			players.add(mode2);
			players.add(mode3);
			
			
			for(int y=0;y<jcbs.length;++y){
	//卡片布局器
	private CardLayout cardLayout = new CardLayout();
	//进度条面板 
	private ProgressPanel progressPanel; 
	//菜单面板
	private MainMenuPanel menuPanel;
	//游戏面板
	private GamePanel gamePanel;
	//需要update
	private Abstractpanel currentPanel;
	//单人游戏面板
	//进度条面板 
	private ProgressPanel progressPanel; 
	//菜单面板
	private MainMenuPanel menuPanel;
	//游戏面板
	private GamePanel gamePanel;
	//需要update
	private Abstractpanel currentPanel;
	//单人游戏面板
	private SingleGamePanel singleGamePanel;
	//多人能游戏面板
	private MutilPlayerPanel mutilPlayerPanel;
	
	NewGamePanel newGamePanel;
	
	NetWorkManager netWorkManager;
	
	GridMapRender mapRender;
	
	JFrame frame;
					jcbs[index][1].setVisible(false);
				}else{
					jcbs[index][1].setVisible(true);
				}
			}
			
		}
		private void initJComboBox(JComboBox jcb){
			jcb.setSize(120, 20);
			jcb.setOpaque(false);
			jcb.setFocusable(false);
			jcb.setRenderer(new StarComboBoxRender());
			jcb.setUI((ComboBoxUI) StarComboBoxUI.createUI(jcb));
			jcb.setBorder(new RoundBorder(Color.red));
			add(jcb);
		}
		public void paintComponent(Graphics g) {
			g.drawImage(image, 0, 0, null);
			g.setColor(fillColor);
			g.fillRect(20, 45, getWidth() - 25, getHeight() - 50);
			
		});
		control.addDragListener(new DragListener(){
			public void drag(int x, int y, int dx, int dy) {
				gridMapRender.focus(x, y, dx, dy);
			}
		});
		control.addLeftPressListener(new LeftPressListener(){
			public void press(int x, int y) {
				//gridMapRender.focus(x, y);
				gridMapRender.operate(x, y);
					if(value.equals("Computer") || value.equals("Open") || value.equals("Closed")){
						gameGUI.netWorkManager.select(value,3);
					}
				}
				public void intervalAdded(ListDataEvent e) {}
				public void intervalRemoved(ListDataEvent e) {}
				
			});
			
			//如果是SingleGame
//			if(gameGUI.netWorkManager instanceof MockNetWorkManager){
//				players.add(new DefaultComboBoxModel(new String[]{"Player"}));
//			}else{
//				players.add(new DefaultComboBoxModel());
//			}
			//System.out.println("gameGUI.netWorkManager:"+gameGUI.netWorkManager);
			players.add(new DefaultComboBoxModel());
			players.add(mode1);
			players.add(mode2);
			players.add(mode3);
			

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值