parent
622094e4a9
commit
57bf0dedb1
@ -0,0 +1,106 @@
|
|||||||
|
package com.snakegame;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.KeyAdapter;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
|
public class GamePanel extends JPanel {
|
||||||
|
private final Snake snake1;
|
||||||
|
private final Snake snake2;
|
||||||
|
private final Food food;
|
||||||
|
private final GameConfig config;
|
||||||
|
private final GameController gameController;
|
||||||
|
private final SoundManager soundManager;
|
||||||
|
private int score1 = 0;
|
||||||
|
private int score2 = 0;
|
||||||
|
|
||||||
|
public GamePanel(GameConfig config, SoundManager soundManager) {
|
||||||
|
this.config = config;
|
||||||
|
this.soundManager = soundManager;
|
||||||
|
setPreferredSize(new Dimension(
|
||||||
|
config.getWidth() * config.getTileSize(),
|
||||||
|
config.getHeight() * config.getTileSize()
|
||||||
|
));
|
||||||
|
setBackground(config.getBackgroundColor());
|
||||||
|
|
||||||
|
snake1 = new Snake(
|
||||||
|
config.getStartX1(),
|
||||||
|
config.getStartY1(),
|
||||||
|
config.getSnakeColors1(),
|
||||||
|
config.isGradientEnabled()
|
||||||
|
);
|
||||||
|
|
||||||
|
if (config.getGameMode().equals("双人")) {
|
||||||
|
snake2 = new Snake(
|
||||||
|
config.getStartX2(),
|
||||||
|
config.getStartY2(),
|
||||||
|
config.getSnakeColors2(),
|
||||||
|
config.isGradientEnabled()
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
snake2 = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
food = new Food(config);
|
||||||
|
|
||||||
|
gameController = new GameController(this);
|
||||||
|
|
||||||
|
addKeyListener(new KeyAdapter() {
|
||||||
|
@Override
|
||||||
|
public void keyPressed(KeyEvent e) {
|
||||||
|
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
|
||||||
|
gameController.pause();
|
||||||
|
} else if (config.getGameMode().equals("双人")) {
|
||||||
|
if (e.getKeyCode() == KeyEvent.VK_UP) {
|
||||||
|
snake1.handleKeyPress(e.getKeyCode());
|
||||||
|
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
|
||||||
|
snake1.handleKeyPress(e.getKeyCode());
|
||||||
|
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
|
||||||
|
snake1.handleKeyPress(e.getKeyCode());
|
||||||
|
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
|
||||||
|
snake1.handleKeyPress(e.getKeyCode());
|
||||||
|
} else if (e.getKeyCode() == KeyEvent.VK_W) {
|
||||||
|
snake2.handleKeyPress(KeyEvent.VK_UP);
|
||||||
|
} else if (e.getKeyCode() == KeyEvent.VK_S) {
|
||||||
|
snake2.handleKeyPress(KeyEvent.VK_DOWN);
|
||||||
|
} else if (e.getKeyCode() == KeyEvent.VK_A) {
|
||||||
|
snake2.handleKeyPress(KeyEvent.VK_LEFT);
|
||||||
|
} else if (e.getKeyCode() == KeyEvent.VK_D) {
|
||||||
|
snake2.handleKeyPress(KeyEvent.VK_RIGHT);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
snake1.handleKeyPress(e.getKeyCode());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setFocusable(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void paintComponent(Graphics g) {
|
||||||
|
super.paintComponent(g);
|
||||||
|
snake1.draw(g, config.getTileSize());
|
||||||
|
if (snake2 != null) {
|
||||||
|
snake2.draw(g, config.getTileSize());
|
||||||
|
}
|
||||||
|
food.draw(g, config.getTileSize());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void increaseScore1() {
|
||||||
|
score1 += 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void increaseScore2() {
|
||||||
|
score2 += 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Snake getSnake1() { return snake1; }
|
||||||
|
public Snake getSnake2() { return snake2; }
|
||||||
|
public Food getFood() { return food; }
|
||||||
|
public GameConfig getConfig() { return config; }
|
||||||
|
public GameController getGameController() { return gameController; }
|
||||||
|
public SoundManager getSoundManager() { return soundManager; }
|
||||||
|
public int getScore1() { return score1; }
|
||||||
|
public int getScore2() { return score2; }
|
||||||
|
}
|
Loading…
Reference in new issue