⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newgameframe.java

📁 java 开源游戏源码 RISK 联机对战 战棋类
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		nothing.addMouseListener(this);
		nothing.setOpaque(false);
		nothing.setVisible(false);

		layeredPane.add(nothing, 0);
		layeredPane.add(colorChooser, 1);
		layeredPane.add(ngp, 2);

		setContentPane(layeredPane);

		addWindowListener(
				new java.awt.event.WindowAdapter() {
					public void windowClosing(java.awt.event.WindowEvent evt) {
						exitForm();
					}
				}
		);


		//accelerators
		start.setDefaultCapable( true);
		human		.setMnemonic( 'u');
		ai			.setMnemonic( 'e');
		aismart		.setMnemonic( 'h');
		domination	.setMnemonic( 'd');
		capital		.setMnemonic( 'c');
		mission		.setMnemonic( 'm');
		addplayer	.setMnemonic( 'a');
		resetplayers.setMnemonic( 'r');
		AutoPlaceAll.setMnemonic( 'p');
		start		.setMnemonic( 's');

		/**
		 * set up the cycle list
		 */
		arCycleList = new Component[]{
			chooseMap,
			defaultMap,
			chooseCards,
			defaultCards,

			domination,
			capital,
			mission,

			AutoPlaceAll,

			//remove player buttons
			null,//1 - pos 8 UPDATE THE POSITION IF ADDING MORE BUTTONS TO THE CYCLE LIST
			null,
			null,
			null,//4
			null,
			null,//6

			resetplayers,
			playerName,
			playerColor,
			human,
			ai,
			aismart,
			addplayer,

			cancel,
			help,
			start
		};
		nRemoveButtonPos = 8;
	}//private void initGUI()

	/**
	 * Sets the game map
	 * @param a The ImageIcon where the map is stored
	 */
	public void setMap(ImageIcon a) {

		mapPic.setIcon(a);

		setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));

	}

	/**
	 * Sets the cards file
	 * @param c The name of the cards file
	 */
	public void setCards(String c, boolean m) {
		cardsFile.setText(c);

		if ( m==false && mission.isSelected() ) { domination.setSelected(true); AutoPlaceAll.setEnabled(true); }

		mission.setEnabled(m);

	}

	/**
	 * Adds a player to the game
	 * @param type Indicates whether the player is human or AI
	 * @param name Name of player
	 * @param color Color of the player
	 * @param ip Holds the ip address of the player
	 */
	public void addPlayer(final int type,final String name,final Color color,final String ip) {

		javax.swing.SwingUtilities.invokeLater(new Runnable() {
		    public void run() {

			final playerPanel player = new playerPanel(type, name, color, ip);

			PlayersPanel.add(player);
			PlayersPanel.validate();
			PlayersPanel.repaint();

			//let it cycle
			arCycleList[nRemoveButtonPos + PlayersPanel.getComponents().length - 1] = player.getRemoveButton();

		    }
		});
	}

	/**
	 * Removes the given player from the game
	 * @param name Name of the player to be deleted
	 */
	public void delPlayer(final String name) {

		javax.swing.SwingUtilities.invokeLater(new Runnable() {
		    public void run() {

			Component[] players = PlayersPanel.getComponents();

			for (int c=0; c < players.length ; c++) {

				if ( ((playerPanel)players[c]).getName().equals(name) ) {

					PlayersPanel.remove(c);
					PlayersPanel.validate();
					PlayersPanel.repaint();

					int nCyclePos = nRemoveButtonPos + c;

					//remove it from the cycle list
					arCycleList[nCyclePos] = null;
					//and now move the playerpanels above one down

					for (int d = nCyclePos + 1; d < nRemoveButtonPos + 6; d++) {
						arCycleList[d - 1] = arCycleList[d];
					}
					//last has to be null
					arCycleList[nRemoveButtonPos + 5] = null;

					break;
				}

			}


		    }
		});

	}


	/** Exit the Application */

	/**
	 * Closes the GUI
	 * @param evt Close button was pressed
	 */
	private void exitForm() {

		//if (localgame) {
			myrisk.parser("closegame");
		//}
		//else {
		//	myrisk.parser("leave");
		//}

	}

	class playerPanel extends JPanel {

		private int type;
		private String name;
		private Color color;
		private String ip;
		private JButton remove;



		/**
		 * Creates the panel where the player details are shown
		 * @param t Holds the type of player, human or AI
		 * @param n Name
		 * @param c Color
		 * @param i IP address
		 */
		public playerPanel(int t, String n, Color c, String i) {

			type=t;
			name=n;
			color=c;
			ip=i;

			Dimension d = new Dimension(309, 30);

			this.setPreferredSize(d);
			this.setMinimumSize(d);
			this.setMaximumSize(d);
			// this.setBorder(javax.swing.BorderFactory.createLineBorder( color , 1));
			this.setLayout(null);

			int w=80;
			int h=25;

			remove = new JButton(resb.getString("newgame.removeplayer"));

			BufferedImage remove1 = new BufferedImage(w, h, java.awt.image.BufferedImage.TYPE_INT_RGB );
			BufferedImage remove2 = new BufferedImage(w, h, java.awt.image.BufferedImage.TYPE_INT_RGB );
			BufferedImage remove3 = new BufferedImage(w, h, java.awt.image.BufferedImage.TYPE_INT_RGB );

			Graphics g1 = remove1.getGraphics();
			g1.drawImage( newgame.getSubimage(700, 525, w, h) ,0 ,0, this);
			g1.setColor( new Color(c.getRed(),c.getGreen(), c.getBlue(), 50) );
			g1.fillRect(0,0,w,h);
			g1.dispose();

			Graphics g2 = remove2.getGraphics();
			g2.drawImage( newgame.getSubimage(700, 550, w, h) ,0 ,0, this);
			g2.setColor( new Color(c.getRed(),c.getGreen(), c.getBlue(), 50) );
			g2.fillRect(0,0,w,h);
			g2.dispose();

			Graphics g3 = remove3.getGraphics();
			g3.drawImage( newgame.getSubimage(700, 575, w, h) ,0 ,0, this);
			g3.setColor( new Color(c.getRed(),c.getGreen(), c.getBlue(), 50) );
			g3.fillRect(0,0,w,h);
			g3.dispose();

			sortOutButton( remove , remove1 , remove2 , remove3 );
			remove.setBounds(226, 3, 80 , 25 );

			remove.addActionListener(
					new ActionListener() {
						public void actionPerformed(ActionEvent a) {

							myrisk.parser("delplayer " + name);

						}
					}
			);

			add(remove);

		}

		/**
		 * Paints a graphic
		 * @param g Graphics Component
		 */
		public void paintComponent(Graphics g) {

			g.setColor( new Color(color.getRed(), color.getGreen(), color.getBlue(), 125) );

			g.fillRect(0, 0, 309, 30);

			g.setColor( RiskUtil.getTextColorFor(color) );


			g.drawString( name, 10, 20);


			if (type == risk.engine.core.Player.PLAYER_HUMAN) {
				g.drawString( resb.getString("newgame.player.type.human"), 120, 20);
			}
			else if (type == risk.engine.core.Player.PLAYER_AI_EASY) {
				g.drawString( resb.getString("newgame.player.type.easyai"), 120, 20);
			}
			else if (type == risk.engine.core.Player.PLAYER_AI_HARD) {
				g.drawString( resb.getString("newgame.player.type.hardai"), 120, 20);
			}
			else {
				g.drawString( resb.getString("newgame.player.type.crapai"), 120, 20);
			}

			//if (localgame) { g.drawString( resb.getString("newgame.type.local"), 140, 20); }
			//else { g.drawString( ip, 140, 20); }

		}

		/**
		 * Returns name
		 * @return String
		 */
		public String getName() {
			return name;
		}

		/**
		 * Returns the type of player
		 * @return String
		 */
		public int getType() {
			return type;
		}

		/**
		 * returns the "remove player" button
		 */
		public JButton getRemoveButton() {
			return this.remove;
		}


	}

	class NewGamePanel extends JPanel {

		/**
		 * Paints a graphic
		 * @param g Graphics Component
		 */
		public void paintComponent(Graphics g) {

			((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

//			  destination		source
			g.drawImage(newgame,0,0,700,600,     0,0,700,600,this);

			if (localgame) {

				g.drawImage(newgame,432,262,557,305,     700,482,825,525,this);

			}

			g.setColor( thecolor );
			g.fillRect(400, 370, 100, 25);

			g.setColor( Color.black );

			g.drawString( resb.getString("newgame.label.map"), 55, 40);
			g.drawString( resb.getString("newgame.label.players"), 350, 40);
			g.drawString( resb.getString("newgame.label.cards"), 55, 250);
			g.drawString( resb.getString("newgame.label.gametype"), 70, 365);
			g.drawString( resb.getString("newgame.label.cardsoptions"), 170, 365);
			g.drawString( resb.getString("newgame.label.name"), 400, 325);
			g.drawString( resb.getString("newgame.label.type"), 520, 325);

			g.setColor( RiskUtil.getTextColorFor( thecolor ) );

			g.drawString( resb.getString("newgame.label.color"), 410, 387);

		}

	}

	class colorChooserPanel extends JPanel
	{

		/**
		 * Paints a graphic
		 * @param g Graphics Component
		 */
		public void paintComponent(Graphics g) {

			Graphics2D g2 = (Graphics2D)g;

			AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.8f);
			g2.setComposite(ac);

//			  destination		source
			g.drawImage(newgame,370,395,500,500,     700,0,830,105,this);

			for (int c=0; c< Colors.length ; c++) {

				g.setColor( Colors[c].getColor() );
				g.fillRect(Colors[c].getX(), Colors[c].getY(), Colors[c].getWidth(), Colors[c].getHeight());

			}

		}

	}//class colorChooserPanel extends JPanel


	/**
	 * Actionlistener applies the correct command to the button pressed
	 * @param e The ActionEvent Object
	 */
	public void actionPerformed(ActionEvent e) {

		if (e.getSource()==chooseMap) {

			String name = RiskUtil.getNewFile( this, RiskFileFilter.RISK_MAP_FILES);

			if (name != null) {

				myrisk.parser("choosemap " + name );

				setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

			}
		}
		else if (e.getSource()==defaultMap) {

			myrisk.parser("choosemap default");

		}
		else if (e.getSource()==chooseCards) {

			String name = RiskUtil.getNewFile( this, RiskFileFilter.RISK_CARDS_FILES);

			if (name != null) {

				myrisk.parser("choosecards " + name );

			}

		}
		else if (e.getSource()==defaultCards) {

			myrisk.parser("choosecards default");

		}
		else if (e.getSource()==resetplayers) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -