📄 mbac.java
字号:
(
new MouseAdapter()
{
public void mouseClicked(MouseEvent event)
{
strings = mbacAdapter.getRankings(true);
picturePanel[7].setPicture("img\\normalon.jpg");
picturePanel[8].setPicture("img\\survivaloff.jpg");
for (int i = 0;i < 10;i ++)
{
textPanel[i].setText(strings[i]);
}
}
}
);
picturePanel[8] = new PicturePanel(100,64,"img\\survivaloff.jpg");
box[9].add(picturePanel[8]);
picturePanel[8].addMouseListener
(
new MouseAdapter()
{
public void mouseClicked(MouseEvent event)
{
strings = mbacAdapter.getRankings(false);
picturePanel[7].setPicture("img\\normaloff.jpg");
picturePanel[8].setPicture("img\\survivalon.jpg");
for (int i = 0;i < 10;i ++)
{
textPanel[i].setText(strings[i]);
}
}
}
);
blankPanel[9] = new BlankPanel(100,375);
box[9].add(blankPanel[9]);
box[8].add(box[9]);
box[10] = Box.createVerticalBox();
for (int i = 0;i < 10;i ++)
{
textPanel[i] = new TextPanel(400,40,20,strings[i]);
textPanel[i].setColor(new Color(255 - 28 * i,255 - 28 * i,255));
box[10].add(textPanel[i]);
}
box[11] = Box.createHorizontalBox();
blankPanel[10] = new BlankPanel(297,103);
box[11].add(blankPanel[10]);
picturePanel[9] = new PicturePanel(103,103,"img\\resetoff.jpg");
box[11].add(picturePanel[9]);
picturePanel[9].addMouseListener
(
new MouseAdapter()
{
public void mouseEntered(MouseEvent event)
{
picturePanel[9].setPicture("img\\reseton.jpg");
}
public void mouseExited(MouseEvent event)
{
picturePanel[9].setPicture("img\\resetoff.jpg");
}
public void mouseClicked(MouseEvent event)
{
picturePanel[7].setPicture("img\\normalon.jpg");
picturePanel[8].setPicture("img\\survivaloff.jpg");
mbacAdapter.reset();
strings = mbacAdapter.getRankings(true);
for (int i = 0;i < 10;i ++)
{
textPanel[i].setText(strings[i]);
}
}
}
);
box[10].add(box[11]);
box[8].add(box[10]);
box[7].add(box[8]);
box[0].add(box[7]);
container.add(box[0],BorderLayout.NORTH);
}
//display the system menu
private void system()
{
container.removeAll();
box = new Box[8];
blankPanel = new BlankPanel[9];
picturePanel = new PicturePanel[8];
pictureTextPanel = new PictureTextPanel[5];
mainMenu();
box[7] = Box.createVerticalBox();
picturePanel[6] = new PicturePanel(500,64,"img\\systemlogo.jpg");
box[7].add(picturePanel[6]);
picturePanel[7] = new PicturePanel(500,503,"img\\system.jpg");
box[7].add(picturePanel[7]);
box[0].add(box[7]);
container.add(box[0],BorderLayout.NORTH);
}
//choose a map to start a normal mode game
private void chooseMap()
{
container.removeAll();
container.setLayout(new BorderLayout(0,0));
box = new Box[3];
button = new JButton[2];
blankPanel = new BlankPanel[2];
picturePanel = new PicturePanel[1];
textPanel = new TextPanel[1];
box[0] = Box.createHorizontalBox();
picturePanel[0] = new PicturePanel(400,567,"img\\side.jpg");
box[0].add(picturePanel[0]);
box[1] = Box.createVerticalBox();
blankPanel[0] = new BlankPanel(400,100);
box[1].add(blankPanel[0]);
combo = new JComboBox(mbacAdapter.getList());
combo.setBackground(Color.black);
combo.setFont(new Font("Monospaced",Font.BOLD,16));
combo.setForeground(Color.white);
combo.setMaximumRowCount(4);
box[1].add(combo);
textPanel[0] = new TextPanel(400,100,32,"");
box[1].add(textPanel[0]);
box[2] = Box.createHorizontalBox();
button[0] = new JButton(" OK ");
button[0].setBackground(Color.black);
button[0].setFont(new Font("Monospaced",Font.BOLD,32));
button[0].setForeground(Color.white);
box[2].add(button[0]);
button[0].addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
if (combo.getSelectedItem() == null)
{
textPanel[0].setText("Map not existed!");
}
else
{
normal = true;
period = 300;
score = 0;
mbacAdapter.loadMap(false,(String)combo.getSelectedItem());
snakeAdapter = new SnakeAdapter();
AudioPlayer.player.stop(as);
music.cancel();
music = new java.util.Timer();
music.schedule(new TimerTask()
{
public void run()
{
try
{
is = new FileInputStream("bgm\\normal.wav");
as = new AudioStream(is);
AudioPlayer.player.start(as);
}
catch(Exception e)
{
e.printStackTrace();
}
}
},500,504500);
game();
setContentPane(container);
}
}
}
);
button[1] = new JButton("RETURN");
button[1].setBackground(Color.black);
button[1].setFont(new Font("Monospaced",Font.BOLD,32));
button[1].setForeground(Color.white);
box[2].add(button[1]);
button[1].addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
menu();
setContentPane(container);
}
}
);
box[1].add(box[2]);
blankPanel[1] = new BlankPanel(400,100);
box[1].add(blankPanel[1]);
box[0].add(box[1]);
container.add(box[0],BorderLayout.NORTH);
}
//display the stage number
private void stage()
{
container.removeAll();
container.setLayout(new BorderLayout(0,0));
stage ++;
box = new Box[2];
blankPanel = new BlankPanel[4];
picturePanel = new PicturePanel[2];
textPanel = new TextPanel[1];
box[0] = Box.createVerticalBox();
blankPanel[0] = new BlankPanel(800,205);
box[0].add(blankPanel[0]);
box[1] = Box.createHorizontalBox();
blankPanel[1] = new BlankPanel(32,156);
box[1].add(blankPanel[1]);
picturePanel[0] = new PicturePanel(112,156,"img\\stage1.jpg");
box[1].add(picturePanel[0]);
string = " STAGE ";
for (int i = 4;i > new Integer(stage).toString().length();i --)
{
string += " ";
}
string += stage;
textPanel[0] = new TextPanel(512,156,52,string);
box[1].add(textPanel[0]);
textPanel[0].addMouseListener
(
new MouseAdapter()
{
public void mouseClicked(MouseEvent event)
{
period = (stage > 40)?25:(525 - 25 * (stage + 1) / 2);
mbacAdapter.loadMap(true,survival_maps[(stage - 1) % 22]);
game();
setContentPane(container);
}
}
);
picturePanel[1] = new PicturePanel(112,156,"img\\stage2.jpg");
box[1].add(picturePanel[1]);
blankPanel[2] = new BlankPanel(32,156);
box[1].add(blankPanel[2]);
box[0].add(box[1]);
blankPanel[3] = new BlankPanel(800,205);
box[0].add(blankPanel[3]);
container.add(box[0],BorderLayout.NORTH);
}
//play game
private void game()
{
container.removeAll();
layout = new GridBagLayout();
constraints = new GridBagConstraints();
container.setLayout(layout);
leg = true;
turn = true;
foods = mbacAdapter.getMapFood();
infos = mbacAdapter.getMapInfo();
picturePanel = new PicturePanel[6];
textPanel = new TextPanel[3];
mapPanel = new MapPanel[15][15];
for (int i = 0;i < 15;i ++)
{
for (int j = 0;j < 15;j ++)
{
if (infos[i][j] > 0 && infos[i][j] < 9)
{
snakeAdapter.newStage((infos[i][j] + 1) / 2,100 * i + j);
}
if (!normal && infos[i][j] > 10 && infos[i][j] < 14)
{
mapPanel[i][j] = new MapPanel(10);
}
else
{
mapPanel[i][j] = new MapPanel(infos[i][j]);
}
addComponent(mapPanel[i][j],i,j,1,1);
}
}
textPanel[0] = new TextPanel(200,96,32," LIFE");
addComponent(textPanel[0],20,0,9,3);
for (int i = 0;i < 3;i ++)
{
picturePanel[i] = new PicturePanel(64,64,"img\\life0.jpg");
addComponent(picturePanel[i],20 + 3 * i,3,3,3);
}
for (int i = 3;i < 6;i ++)
{
picturePanel[i] = new PicturePanel(64,64,"img\\life0.jpg");
addComponent(picturePanel[i],11 + 3 * i,6,3,3);
}
for (int i = 0;i < snakeAdapter.getLife();i ++)
{
picturePanel[i].setPicture("img\\life1.jpg");
}
textPanel[1] = new TextPanel(200,64,32," SCORE");
addComponent(textPanel[1],20,9,9,3);
textPanel[2] = new TextPanel(200,64,32," 0");
addComponent(textPanel[2],20,12,9,3);
if (!normal)
{
string = "";
for (int i = 9;i > Integer.toString(score).length();i --)
{
string += " ";
}
string += score;
textPanel[2].setText(string);
}
x = snakeAdapter.getPosition() / 100;
y = snakeAdapter.getPosition() % 100;
direction = snakeAdapter.getDirection();
leg();
time();
addKeyListener
(
new KeyAdapter()
{
public void keyPressed(KeyEvent event)
{
if (turn)
{
if (event.getKeyCode() == KeyEvent.VK_UP)
{
if (direction != 2)
{
direction = 1;
turn = false;
}
}
else
{
if (event.getKeyCode() == KeyEvent.VK_DOWN)
{
if (direction != 1)
{
direction = 2;
turn = false;
}
}
else
{
if (event.getKeyCode() == KeyEvent.VK_LEFT)
{
if (direction != 4)
{
direction = 3;
turn = false;
}
}
else
{
if (event.getKeyCode() == KeyEvent.VK_RIGHT)
{
if (direction != 3)
{
direction = 4;
turn = false;
}
}
}
}
}
}
}
}
);
}
//continue the game if the snake has another life
private void reborn()
{
if (snakeAdapter.getLife() == 1)
{
AudioPlayer.player.stop(as);
music.cancel();
music = new java.util.Timer();
music.schedule(new TimerTask()
{
public void run()
{
try
{
is = new FileInputStream("bgm\\over.wav");
as = new AudioStream(is);
AudioPlayer.player.start(as);
}
catch(Exception e)
{
e.printStackTrace();
}
}
},500);
gameOver();
setContentPane(container);
}
else
{
leg = true;
if (normal)
{
period = 300;
}
points = snakeAdapter.clear();
for (int i = 0;i < points.length;i ++)
{
mapPanel[points[i] / 100][points[i] % 100].setType(0);
}
snakeAdapter.reborn();
picturePanel[snakeAdapter.getLife()].setPicture("img\\life0.jpg");
x = snakeAdapter.getPosition() / 100;
y = snakeAdapter.getPosition() % 100;
direction = snakeAdapter.getDirection();
leg();
time();
}
}
//decide which leg is in the front
private void leg()
{
if (leg)
{
leg = false;
mapPanel[x][y].setType(2 * direction - 1);
}
else
{
leg = true;
mapPanel[x][y].setType(2 * direction);
}
}
//change shape after eating a kind of food
private void eatFood()
{
if (mapPanel[x][y].getType() == 0)
{
tail = snakeAdapter.cutTail();
mapPanel[tail / 100][tail % 100].setType(0);
snakeAdapter.addHead(100 * x + y);
leg();
}
else
{
if (mapPanel[x][y].getType() == 9 || mapPanel[x][y].getType() > 13)
{
timer.cancel();
tail = snakeAdapter.cutTail();
mapPanel[tail / 100][tail % 100].setType(0);
reborn();
}
else
{
if (mapPanel[x][y].getType() == 10)
{
snakeAdapter.increase();
snakeAdapter.addHead(100 * x + y);
leg();
createFood(10);
current = 1100 - period + 25 * snakeAdapter.getLength();
score += current;
string = "";
for (int i = 9;i > Integer.toString(score).length();i --)
{
string += " ";
}
string += score;
textPanel[2].setText(string);
if (score % 40000 >= 0 && score % 40000 < current && snakeAdapter.getLife() < 6)
{
snakeAdapter.neos();
picturePanel[snakeAdapter.getLife() - 1].setPicture("img\\life1.jpg");
if (normal && max > min)
{
max -= 50;
if (period == max + 50)
{
timer.cancel();
time();
}
}
}
if (!normal && snakeAdapter.getLength() == 22)
{
timer.cancel();
stage();
setContentPane(container);
}
}
else
{
if (mapPanel[x][y].getType() == 11)
{
tail = snakeAdapter.cutTail();
mapPanel[tail / 100][tail % 100].setType(0);
createFood(11);
current = 1600 - period + 25 * snakeAdapter.getLength();
score += current;
string = "";
for (int i = 9;i > Integer.toString(score).length();i --)
{
string += " ";
}
string += score;
textPanel[2].setText(string);
if (snakeAdapter.getLength() == 1)
{
timer.cancel();
mapPanel[x][y].setType(0);
reborn();
}
else
{
snakeAdapter.decrease();
tail = snakeAdapter.cutTail();
mapPanel[tail / 100][tail % 100].setType(0);
snakeAdapter.addHead(100 * x + y);
leg();
if (score % 40000 >= 0 && score % 40000 < current && snakeAdapter.getLife() < 6)
{
snakeAdapter.neos();
picturePanel[snakeAdapter.getLife() - 1].setPicture("img\\life1.jpg");
if (max > min)
{
max -= 50;
if (period == max + 50)
{
timer.cancel();
time();
}
}
}
}
}
else
{
if (mapPanel[x][y].getType() == 12)
{
tail = snakeAdapter.cutTail();
mapPanel[tail / 100][tail % 100].setType(0);
snakeAdapter.addHead(100 * x + y);
leg();
createFood(12);
if (period > min)
{
timer.cancel();
period -= 25;
time();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -