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

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

请添加图片描述
请添加图片描述

适用

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

				leftPanel.elastic.slide(50, -300);
				rightPanel.elastic.slide(600, 200);
				try {
					Thread.sleep(200);
				} catch (InterruptedException e1) {
					e1.printStackTrace();
				}
				gamePanel.switchNewGame();
			}
		};
		ActionListener loadbtnLis = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			}
		};
	}
	/**
		}
		public void update(long elapsedTime) {
			x = elastic.update(elapsedTime);
			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"};
		
		
		LinkedList<DefaultComboBoxModel> players = new LinkedList<DefaultComboBoxModel>(); 
		
		String type[] = { "Terran"};
		
		JComboBox[][] jcbs = new JComboBox[4][2];
		control = new Control(this,	gui.frame);
		
		control.addKeyPressListener(new KeyPressListener(){
			public void press(int keyCode) {
				
				if(keyCode==KeyEvent.VK_1){
					gridMapRender.blur();
					for(Tile tile:gridmap.getTiles()){
						
						boolean isScv = (tile.getType()==gridMapRender.getCurrentType())
									&&(tile instanceof Scv);
						if(isScv){
							tile.focus();
		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);
		}
		 
		
	Robot robot; 
	 
	public void init(){
		
		initControl();
		gridmap = ResourceManager.resourceManager.getGridMap();
		gridMapRender = gridmap.getTileMapRender();
		gridMapRender.screenWidth = getWidth();
		gridMapRender.screenHeight = getHeight();
		controlPanel = new ConsolePanel(gridMapRender);
		controlPanel.setLocation(getWidth() - controlPanel.getWidth(), 0);
		add(controlPanel);
		
		try {
			robot = new Robot();
		} catch (AWTException e) {
			e.printStackTrace();
		}
		
		gridMapRender.addMsg("娓╅Θ鎻愮ず锛氭寜鏁板瓧閿�閫変腑鎵�湁鍐滄皯");
		gridMapRender.addMsg("娓╅Θ鎻愮ず锛氭寜鏁板瓧閿�閫変腑鎵�湁鏈烘灙鍏�");
	}
		
		gridMapRender.addMsg("娓╅Θ鎻愮ず锛氭寜鏁板瓧閿�閫変腑鎵�湁鍐滄皯");
		gridMapRender.addMsg("娓╅Θ鎻愮ず锛氭寜鏁板瓧閿�閫変腑鎵�湁鏈烘灙鍏�");
	}
	
	private void initControl(){
		
		GameGUI  gui = (GameGUI) this.getParent();
		control = new Control(this,	gui.frame);
		
		control.addKeyPressListener(new KeyPressListener(){
			public void press(int keyCode) {
				
				if(keyCode==KeyEvent.VK_1){
//			}
			//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){
				
				jcbs[y][0] = new JComboBox();
		});
		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);
			}
			
		});
		control.addRightPressListener(new RightPressListener(){
	    
		cardLayout.show(this, "progress");
		currentPanel = progressPanel;
		
		Thread t = new Thread(){
			public void run(){
				mapRender = ResourceManager.load(type,types);
				mapRender.setNetWorkManager(netWorkManager);
			}
		};
		t.start();
	
	}
	public void switchGame() {
	 
		gamePanel.init();
		cardLayout.show(this, "game");
		currentPanel = gamePanel;
	}
			for(int i=1;i<leftPanel.players.size();++i){
				DefaultComboBoxModel cbm = leftPanel.players.get(i);
				if(cbm.getSelectedItem().equals("Computer"))
					cbm.setSelectedItem("Open");
			}
		}
		 
	}
	
	class TextPanel extends JPanel {
		private int x, y = 300;
		Elastic elastic = new Elastic(-50, 50);
		}
		public void update(long elapsedTime) {
			x = elastic.update(elapsedTime);
			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"};
		
		
		LinkedList<DefaultComboBoxModel> players = new LinkedList<DefaultComboBoxModel>(); 
		
			add(returnbtn);
		}
		public void paintComponent(Graphics g) {
			g.drawImage(image, getWidth() - image.getWidth(null), 0, null);
		}
		public void update(long elapsedTime) {
			x = elastic.update(elapsedTime);
			setLocation(x, y);
		}
		ActionListener startListen = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				PlayerList playerList = gameGUI.netWorkManager.startGame();
	
	public NewGamePanel(GameGUI gameGUI, String name) {
		super(gameGUI, name);
		leftPanel = new LeftPanel(this);
		rightPanel = new RightPanel(this);
		this.add(leftPanel);
		this.add(rightPanel);
	}
	public void paintComponent(Graphics g) {
		g.drawImage(main, 0, 0, null);
	}
	public void update(long elapsedTime) {
		leftPanel.update(elapsedTime);
		rightPanel.update(elapsedTime);
	}
	public void reset() {
		leftPanel.elastic.slide(-50, 50);
		rightPanel.elastic.slide(800, -180);
		if(gameGUI.netWorkManager instanceof MockNetWorkManager){
			leftPanel.players.get(0).removeAllElements();
			leftPanel.players.get(0).addElement("Player");
			for(int i=1;i<leftPanel.players.size();++i){
}
游戏界面:
@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;
	
		}
		public void paintComponent(Graphics g) {
			g.drawImage(image, 0, 0, null);
			g.setColor(fillColor);
			g.fillRect(20, 45, getWidth() - 25, getHeight() - 50);
			g.setColor(borderColor);
			g.drawRect(20, 45, getWidth() - 25, getHeight() - 50);
			g.setColor(titleColor);
			g.drawString("Create Game:", 50, 100);
		}
		public void update(long elapsedTime) {
			x = elastic.update(elapsedTime);
		//鐢绘帶鍒剁嚎
		control.drag(g);
		
	}
	
	public void update(long elapsedTime) {
		gridMapRender.update(elapsedTime);
		 
	}
}
新游戏界面:
public class NewGamePanel extends Abstractpanel {
	LeftPanel leftPanel;
	RightPanel rightPanel;
	 
	
	public NewGamePanel(GameGUI gameGUI, String name) {
		super(gameGUI, name);
		leftPanel = new LeftPanel(this);
		leftPanel.elastic.slide(-50, 50);
		rightPanel.elastic.slide(800, -180);
		if(gameGUI.netWorkManager instanceof MockNetWorkManager){
			leftPanel.players.get(0).removeAllElements();
			leftPanel.players.get(0).addElement("Player");
			for(int i=1;i<leftPanel.players.size();++i){
				DefaultComboBoxModel cbm = leftPanel.players.get(i);
				cbm.setSelectedItem("Computer");
			}
		}else{
			for(int i=1;i<leftPanel.players.size();++i){
				DefaultComboBoxModel cbm = leftPanel.players.get(i);
				if(cbm.getSelectedItem().equals("Computer"))
					cbm.setSelectedItem("Open");
			}
		}
		 
	}
	
	class TextPanel extends JPanel {
			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);
//				if(item.equals(newName)){
//					players.get(index).setSelectedItem(newName);
//					return;
//				}
//			}
//			players.get(index).addElement(newName);
			
			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 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);
				}
			}
			
		}
		private void initJComboBox(JComboBox jcb){
			jcb.setSize(120, 20);
			jcb.setOpaque(false);
			jcb.setFocusable(false);
			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);
				}
			}
			
		}
		private void initJComboBox(JComboBox jcb){
			jcb.setSize(120, 20);
			jcb.setOpaque(false);
		
		public TextPanel() {
			setLayout(null);
			setSize(400, 270);
			setLocation(x, y);
		}
		
		public void paintComponent(Graphics g) {
			g.drawImage(image, 0, 0, null);
			g.setColor(fillColor);
			g.fillRect(20, 345, getWidth() - 25, getHeight() - 50);
			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(){
			g.drawRect(20, 345, getWidth() - 25, getHeight() - 50);
			 
		}
		public void update(long elapsedTime) {
			x = elastic.update(elapsedTime);
			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"};
		
		
		LinkedList<DefaultComboBoxModel> players = new LinkedList<DefaultComboBoxModel>(); 
		
		String type[] = { "Terran"};
		
		JComboBox[][] jcbs = new JComboBox[4][2];
		 
			public void actionPerformed(ActionEvent e) {
			}
		};
	}
	/**
	 * 右边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");
				
				location+=30;
			}
		}
		
		public void addPlayer(int index,String name){
			System.out.println("addplayer:"+index+","+name);
			players.get(index).addElement(name);
			players.get(index).setSelectedItem(name);
			
	/**
	 * 右边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);
			
			initButton(startbtn, startListen);
		Thread t = new Thread(){
			public void run(){
				mapRender = ResourceManager.load(type,types);
				mapRender.setNetWorkManager(netWorkManager);
			}
		};
		t.start();
	
	}
	public void switchGame() {
	 
		gamePanel.init();
		cardLayout.show(this, "game");
		currentPanel = gamePanel;
	}
	
	public void switchSingleGame() {
		
		cardLayout.show(this, "singleGame");
		singleGamePanel.reset();
		currentPanel = singleGamePanel;
	}
	

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值