ADD file via upload

main
ppx98yace 4 months ago
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…
Cancel
Save