📄 applet1.java
字号:
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 + -