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

📄 applet1.java

📁 Bomberman + source code. This Bomberman has many, many more features then regular Bomberman-games d
💻 JAVA
📖 第 1 页 / 共 5 页
字号:

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javai.*;

public class Applet1 extends Applet
                        implements Runnable
{
    Thread timer;                           //Timer
    private static boolean running = true;  //Has to do with the timer
    private static int cycleTime = 50; //Every 50 ms (must be at least 25, higher reduces lag, till a certain lvl) - 50 is best balanced (smooth gameplay/lag)
    private static int playTime = 10; //Max playtime in minutes
    private static int playTimeLeft = (playTime*60*1000)/cycleTime; //Needed for counting
    private static String showTime = String.valueOf(playTime) + ":00"; //Needed to draw the time
    private static final int tileS = 35; //Every tile (piece of the map) is 30x30 pixels
    private static final int mapSize = 15; //15 Tiles
    private static final int space = 50; //Number of pixels free above and under the field
    private static final int loadItems = 50;
    private static final int loadX = 170;
    private static final int loadY = 280;
    private static final int loadW = 200;
    private static final int loadH = 30;
    private static final int textX = 195;
    private static final int textY = 545;
    private static int realLoadW = 0;
    private static boolean loadAll = true;
    boolean firstTime = true; //This,
    int firstCounter = 0;     //and this is needed to prevent it from drawing the board all over again, after it's drawn.
    private static int lvl = 1; //What lvl you use.
    private Image[] env = new Image[9]; //environment things (walls,fields,blocks, etc)
    private Image[] explosion = new Image[7]; //All that has to do with explosions
    private Image[] items = new Image[9]; //All items
    private Image playerHead; //Just a head
    private Image playerHead2; //Head when the player is dead.
    private Image menuBackground;
    private boolean requestedPaint = true;
    private boolean end = false;
    private boolean menu = true; //Menu or game?
    private static int menuCounter = 0;
    private boolean[] isPlayer = {true,true,false,false}; //booleans to see if the players exist
    private int[] playerWins = {0,0,0,0};
    private int[] playerLoses = {0,0,0,0};
    private boolean gameStarted = false;
    private boolean buildingMap = false;
    private boolean[] madePlayer = new boolean[4];
    private int[] buildPlayerX = new int[4];
    private int[] buildPlayerY = new int[4];
    private int buildItem = 0;
    private boolean builtMap = false;
    private boolean useCustomMap = false;
    private static int gameMode = 0;
    private static int musicCounter = 0;
    private static boolean musicIsOn = true;
    private static boolean effectsAreOn = true;
    AudioClip[] backgroundMusic = new AudioClip[8];
    AudioClip[] soundEffect = new AudioClip[3];
    
    Image offscreen; //These are
    Dimension dim;   //needed for
    Graphics b;      //double buffering
    Image offscreen2; //same as offscreen
    Graphics b2; //double buffering loading
    Image[][] map = new Image[mapSize][mapSize]; //Need for a map, first array is tileX, second Y.
    int[][] pMap = new int[mapSize][mapSize]; //Also needed for map
    int[][] pMap2 = new int[mapSize][mapSize]; //Needed to keep your custom made map
    int[][] oldPMap = new int[mapSize][mapSize];
    Image background; //This is needed to make one image of all the tiles.
    Graphics t; // This also for the map
    
    //Items
    int bombCounter = 0;
    int bombS = 35;
    int bombDuration = 3; //Time before a bomb explodes, in seconds
    double bombMovespeed = cycleTime/25*2.5; //Speed a bomb moves with, after being kicked
    int explosionDuration = 1; //Time the explosion lasts, in seconds
    int itemChance = 60; //Chance on an item in %
    int itemCounter = 0;
    boolean destroyItemsOnHit = true;
    boolean[] isMine = new boolean[10000];
        
    //Players
    
    /* +++ Direction +++
        value's:
            0 = standing still
            1 = left
            2 = up
            3 = right
            4 = down            
    */
   
    Image hit;
    int pW = 15;
    int pH = 25;
    
    int immortalTime = 5; //Time in sec you're immortal after being hit.
    double maxMovingSpeed = cycleTime/25*4; //Maximum speed
    double minMovingSpeed = cycleTime/25/4; //Minimum speed (walking)
    int minBombs = 1; //Minimum amount of bombs you are able to lay at the same time.
    int maxMaxBombs = 10; //Maximum amount (...) same time.
    int lives = 3; //Number of lives you start with
    boolean resetOnHit = true;
    boolean resetRandomOnHit = false;
    
    //Players (p1 coz i first was thinking of dif image for every player)
    Image[] p1 = new Image[7];
    
    Player[] player = new Player[5]; //Fifth is the 'mine-player'
    Bomb[] bombs = new Bomb[10000]; //The array is the max bombs that can be set, in total, by all players
    Explosion[] explosions = new Explosion[10000]; //Same here 
    Item[] item = new Item[10000]; //And here :)   
	
	public void init()
	{
		//{{INIT_CONTROLS
		setLayout(null);
		setSize(525,625);
		pauzeKnop.setLabel("Pause");
		pauzeKnop.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		pauzeKnop.setEnabled(false);
		add(pauzeKnop);
		pauzeKnop.setBackground(java.awt.Color.lightGray);
		pauzeKnop.setForeground(new java.awt.Color(0,0,128));
		pauzeKnop.setFont(new Font("Dialog", Font.BOLD, 12));
		pauzeKnop.setBounds(5,2,75,17);
		pauzeKnop.setVisible(false);
		stopKnop.setLabel("Start");
		stopKnop.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		add(stopKnop);
		stopKnop.setBackground(java.awt.Color.lightGray);
		stopKnop.setForeground(new java.awt.Color(0,0,128));
		stopKnop.setFont(new Font("Dialog", Font.BOLD, 12));
		stopKnop.setBounds(5,21,75,17);
		stopKnop.setVisible(false);
		controlsKnop.setLabel("Controls");
		controlsKnop.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		add(controlsKnop);
		controlsKnop.setBackground(java.awt.Color.lightGray);
		controlsKnop.setForeground(new java.awt.Color(0,0,128));
		controlsKnop.setFont(new Font("Dialog", Font.BOLD, 12));
		controlsKnop.setBounds(5,604,75,17);
		controlsKnop.setVisible(false);
		instructionsKnop.setLabel("Instructions");
		instructionsKnop.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		add(instructionsKnop);
		instructionsKnop.setBackground(java.awt.Color.lightGray);
		instructionsKnop.setForeground(new java.awt.Color(0,0,128));
		instructionsKnop.setFont(new Font("Dialog", Font.BOLD, 12));
		instructionsKnop.setBounds(5,582,75,17);
		instructionsKnop.setVisible(false);
		rulesKnop.setLabel("Rules");
		rulesKnop.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		add(rulesKnop);
		rulesKnop.setBackground(java.awt.Color.lightGray);
		rulesKnop.setForeground(new java.awt.Color(0,0,128));
		rulesKnop.setFont(new Font("Dialog", Font.BOLD, 12));
		rulesKnop.setBounds(225,582,75,17);
		rulesKnop.setVisible(false);
		mainMenuKnop.setLabel("Main Menu");
		mainMenuKnop.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		add(mainMenuKnop);
		mainMenuKnop.setBackground(java.awt.Color.lightGray);
		mainMenuKnop.setForeground(new java.awt.Color(0,0,128));
		mainMenuKnop.setFont(new Font("Dialog", Font.BOLD, 12));
		mainMenuKnop.setBounds(225,604,75,17);
		mainMenuKnop.setVisible(false);
		playKnop.setLabel("Play Bomberman");
		playKnop.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		add(playKnop);
		playKnop.setBackground(new java.awt.Color(228,70,15));
		playKnop.setForeground(new java.awt.Color(0,0,128));
		playKnop.setFont(new Font("Dialog", Font.BOLD, 12));
		playKnop.setBounds(190,190,125,31);
		playKnop.setVisible(false);
		instructionsKnop2.setLabel("Instructions");
		instructionsKnop2.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		add(instructionsKnop2);
		instructionsKnop2.setBackground(new java.awt.Color(228,70,15));
		instructionsKnop2.setForeground(new java.awt.Color(0,0,128));
		instructionsKnop2.setFont(new Font("Dialog", Font.BOLD, 12));
		instructionsKnop2.setBounds(191,310,125,31);
		instructionsKnop2.setVisible(false);
		controlsKnop2.setLabel("Controls");
		controlsKnop2.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		add(controlsKnop2);
		controlsKnop2.setBackground(new java.awt.Color(228,70,15));
		controlsKnop2.setForeground(new java.awt.Color(0,0,128));
		controlsKnop2.setFont(new Font("Dialog", Font.BOLD, 12));
		controlsKnop2.setBounds(191,370,125,31);
		controlsKnop2.setVisible(false);
		creditsKnop.setLabel("Credits");
		creditsKnop.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		add(creditsKnop);
		creditsKnop.setBackground(new java.awt.Color(228,70,15));
		creditsKnop.setForeground(new java.awt.Color(0,0,128));
		creditsKnop.setFont(new Font("Dialog", Font.BOLD, 12));
		creditsKnop.setBounds(190,490,125,31);
		creditsKnop.setVisible(false);
		mapBuilderKnop.setLabel("Map builder");
		mapBuilderKnop.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		add(mapBuilderKnop);
		mapBuilderKnop.setBackground(new java.awt.Color(228,70,15));
		mapBuilderKnop.setForeground(new java.awt.Color(0,0,128));
		mapBuilderKnop.setFont(new Font("Dialog", Font.BOLD, 12));
		mapBuilderKnop.setBounds(190,250,125,31);
		mapBuilderKnop.setVisible(false);
		optionsKnop.setLabel("Options");
		optionsKnop.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		add(optionsKnop);
		optionsKnop.setBackground(new java.awt.Color(228,70,15));
		optionsKnop.setForeground(new java.awt.Color(0,0,128));
		optionsKnop.setFont(new Font("Dialog", Font.BOLD, 12));
		optionsKnop.setBounds(190,430,125,31);
		optionsKnop.setVisible(false);
		backKnop.setLabel("Back");
		backKnop.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
		add(backKnop);
		backKnop.setBackground(new java.awt.Color(228,70,15));
		backKnop.setForeground(new java.awt.Color(0,0,128));
		backKnop.setFont(new Font("Dialog", Font.BOLD, 12));
		backKnop.setBounds(215,470,72,24);
		backKnop.setVisible(false);
		lifesField.setText("3");
		add(lifesField);
		lifesField.setForeground(new java.awt.Color(0,0,112));
		lifesField.setFont(new Font("Dialog", Font.BOLD, 12));
		lifesField.setBounds(220,150,26,20);
		lifesField.setVisible(false);
		timeField.setText("10");
		add(timeField);
		timeField.setForeground(new java.awt.Color(0,0,112));
		timeField.setFont(new Font("Dialog", Font.BOLD, 12));
		timeField.setBounds(220,180,26,20);
		timeField.setVisible(false);
		playersList.addItem("2");
		playersList.addItem("3");
		playersList.addItem("4");
		try {
			playersList.select(0);
		}
		catch (IllegalArgumentException e) { }
		playersList.setForeground(new java.awt.Color(0,0,112));
		playersList.setFont(new Font("Dialog", Font.BOLD, 12));
		add(playersList);
		playersList.setBounds(220,210,41,21);
		playersList.setVisible(false);
		minWalkList.addItem("Slow");
		minWalkList.addItem("Normal");
		minWalkList.addItem("Fast");
		try {
			minWalkList.select(1);
		}
		catch (IllegalArgumentException e) { }
		minWalkList.setForeground(new java.awt.Color(0,0,112));
		minWalkList.setFont(new Font("Dialog", Font.BOLD, 12));
		add(minWalkList);
		minWalkList.setBounds(220,240,69,21);
		minWalkList.setVisible(false);
		maxWalkList.addItem("Slow");
		maxWalkList.addItem("Normal");
		maxWalkList.addItem("Fast");
		try {
			maxWalkList.select(1);
		}
		catch (IllegalArgumentException e) { }
		maxWalkList.setForeground(new java.awt.Color(0,0,112));
		maxWalkList.setFont(new Font("Dialog", Font.BOLD, 12));
		add(maxWalkList);
		maxWalkList.setBounds(220,270,69,21);
		maxWalkList.setVisible(false);
		minBombField.setText("1");
		add(minBombField);
		minBombField.setForeground(new java.awt.Color(0,0,112));
		minBombField.setFont(new Font("Dialog", Font.BOLD, 12));
		minBombField.setBounds(220,300,26,20);
		minBombField.setVisible(false);
		maxBombField.setText("10");
		add(maxBombField);
		maxBombField.setForeground(new java.awt.Color(0,0,112));
		maxBombField.setFont(new Font("Dialog", Font.BOLD, 12));
		maxBombField.setBounds(220,330,26,20);
		maxBombField.setVisible(false);
		explosionTimeField.setText("1");
		add(explosionTimeField);
		explosionTimeField.setForeground(new java.awt.Color(0,0,112));
		explosionTimeField.setFont(new Font("Dialog", Font.BOLD, 12));
		explosionTimeField.setBounds(220,390,26,20);
		explosionTimeField.setVisible(false);
		bombTimeField.setText("3");
		add(bombTimeField);
		bombTimeField.setForeground(new java.awt.Color(0,0,112));
		bombTimeField.setFont(new Font("Dialog", Font.BOLD, 12));
		bombTimeField.setBounds(220,360,26,20);
		bombTimeField.setVisible(false);
		immortalTimeField.setText("5");
		add(immortalTimeField);
		immortalTimeField.setForeground(new java.awt.Color(0,0,112));
		immortalTimeField.setFont(new Font("Dialog", Font.BOLD, 12));
		immortalTimeField.setBounds(220,420,26,20);
		immortalTimeField.setVisible(false);
		itemChanceList.addItem("0%");
		itemChanceList.addItem("10%");
		itemChanceList.addItem("20%");
		itemChanceList.addItem("30%");
		itemChanceList.addItem("40%");
		itemChanceList.addItem("50%");

⌨️ 快捷键说明

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