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