package FinalGame;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;
public class FinalGame {
public static JFrame frame;
public static JPanel mainPanel;
public static JPanel titlePanel;
private static JPanel namePanel;
private static JPanel gamePanel;
private static JPanel resultPanel;
private static JLabel continueLabel;
private static JLabel howToPlayLabel;
private static JLabel characterAbilityLabel;
private static JLabel controlsLabel;
private static JLabel startLabel;
private static JTextField nameField;
private static JLabel playerLabel;
private static JLabel[] petLabels;
private static int playerEnergy = 50;
private static int petEnergy = 25;
private static int collectedPets = 0;
private static JLabel countdownLabel;
private static Timer countdownTimer;
private static GameLogic gameLogic;
public static void main(String[] args) {
frame = new JFrame("Super Kong");
frame.setSize(450, 450);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainPanel = new JPanel(new CardLayout());
frame.add(mainPanel);
createTitlePanel();
createNamePanel();
createResultPanel();
createGamePanel();
frame.setVisible(true);
}
private static void createTitlePanel() {
titlePanel = new JPanel(null);
titlePanel.setBackground(Color.CYAN);
JLabel titleLabel = new JLabel("Super Kong");
titleLabel.setBounds(150, 30, 100, 25);
titleLabel.setFont(new Font("Arial", Font.ITALIC, 16));
titlePanel.add(titleLabel);
continueLabel = new JLabel("Click to continue .");
continueLabel.setBounds(120, 80, 160, 25);
titlePanel.add(continueLabel);
mainPanel.add(titlePanel, "titlePanel");
continueLabel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent ev) {
CardLayout cardLayout = (CardLayout) mainPanel.getLayout();
cardLayout.show(mainPanel, "namePanel");
}
});
}
private static void createNamePanel() {
namePanel = new JPanel(null);
namePanel.setBackground(Color.GRAY);
JLabel enterNameLabel = new JLabel("Enter the name : ");
enterNameLabel.setBounds(150, 30, 200, 25);
namePanel.add(enterNameLabel);
nameField = new JTextField();
nameField.setBounds(120, 80, 160, 25);
namePanel.add(nameField);
JLabel submitLabel = new JLabel("Submit");
submitLabel.setBounds(120, 120, 160, 25);
namePanel.add(submitLabel);
mainPanel.add(namePanel, "namePanel");
submitLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent ev) {
CardLayout cardLayout = (CardLayout) mainPanel.getLayout();
cardLayout.show(mainPanel, "resultPanel");
displayResultPanel();
}
});
}
private static void createResultPanel() {
resultPanel = new JPanel(null);
resultPanel.setBackground(Color.LIGHT_GRAY);
JLabel resultLabel = new JLabel("Greetings!");
resultLabel.setBounds(150, 30, 500, 25);
resultPanel.add(resultLabel);
JLabel playerNameLabel = new JLabel();
playerNameLabel.setBounds(120, 80, 500, 25);
resultPanel.add(playerNameLabel);
JLabel gtTagLabel = new JLabel();
gtTagLabel.setBounds(120, 120, 500, 25);
resultPanel.add(gtTagLabel);
mainPanel.add(resultPanel, "resultPanel");
}
private static void displayResultPanel() {
String playerName = nameField.getText();
String gtTag = rearrangeString(playerName);
JLabel gtTagLabel = (JLabel) resultPanel.getComponent(2);
String gtTagText = "Your Gamer Tag is : " + gtTag;
gtTagLabel.setText(gtTagText);
JLabel playerNameLabel = (JLabel) resultPanel.getComponent(1);
String welcomeText = "Greetings, " + playerName;
playerNameLabel.setText(welcomeText);
howToPlayLabel = new JLabel("How to Play ");
howToPlayLabel.setBounds(50, 180, 120, 25);
resultPanel.add(howToPlayLabel);
controlsLabel = new JLabel("Controls");
controlsLabel.setBounds(50, 220, 140, 25);
resultPanel.add(controlsLabel);
characterAbilityLabel = new JLabel("Character Ability");
characterAbilityLabel.setBounds(50, 260, 140, 25);
resultPanel.add(characterAbilityLabel);
startLabel = new JLabel("Start");
startLabel.setBounds(50, 300, 120, 25);
resultPanel.add(startLabel);
startLabel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent ev) {
CardLayout cardLayout = (CardLayout) mainPanel.getLayout();
cardLayout.show(mainPanel, "gamePanel");
startGame();
}
});
}
private static void startGameCountdown() {
int countdownSeconds = 10;
countdownTimer = new Timer(1000, new ActionListener() {
int remainingSeconds = countdownSeconds;
@Override
public void actionPerformed(ActionEvent e) {
countdownLabel.setText("Time: " + remainingSeconds);
remainingSeconds--;
if (remainingSeconds < 0) {
countdownTimer.stop();
// Perform actions when the countdown reaches 0 (game over or next level)
}
}
});
countdownTimer.start();
}
private static void createGamePanel() {
gamePanel = new JPanel(null);
gamePanel.setBackground(Color.ORANGE);
playerLabel = new JLabel("P");
playerLabel.setBounds(150, 30, 500, 25);
gamePanel.add(playerLabel);
petLabels = new JLabel[5];
for (int i = 0; i < 5; i++) {
char petType = getRandomPetType();
int x = getRandomPosition(50, 400);
int y = getRandomPosition(50, 300);
petLabels[i] = new JLabel(String.valueOf(petType));
petLabels[i].setBounds(x, y, 25, 25);
gamePanel.add(petLabels[i]);
}
mainPanel.add(gamePanel, "gamePanel");
countdownLabel = new JLabel("Time: 10");
countdownLabel.setBounds(320, 5, 100, 25);
gamePanel.add(countdownLabel);
startGameCountdown();
gameLogic = new GameLogic(gamePanel, playerLabel, petLabels, 150, 30, countdownLabel);
}
private static void startGame() {
gameLogic.startGame();
}
private static String rearrangeString(String input) {
if (input.length() < 4) {
System.out.println("Input string should have at least 4 characters");
return input;
}
String end = input.substring(input.length() - 2);
String start = input.substring(0, 2);
return end + input.substring(2, input.length() - 2) + start;
}
private static char getRandomPetType() {
char[] petTypes = {'C', 'D', 'W', 'B'};
int randomIndex = new Random().nextInt(petTypes.length);
return petTypes[randomIndex];
}
private static int getRandomPosition(int min, int max) {
return new Random().nextInt(max - min + 1) + min;
}
}
package FinalGame;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Random;
public class GameLogic {
private JPanel gamePanel;
private JLabel playerLabel;
private JLabel[] petLabels;
private Timer petMoveTimer;
private int playerX;
private int playerY;
private int collectedPets;
private JLabel countdownLabel;
public GameLogic(JPanel gamePanel, JLabel playerLabel, JLabel[] petLabels, int initialPlayerX, int initialPlayerY, JLabel countdownLabel) {
this.gamePanel = gamePanel;
this.playerLabel = playerLabel;
this.petLabels = petLabels;
this.playerX = initialPlayerX;
this.playerY = initialPlayerY;
this.collectedPets = 0;
this.countdownLabel = countdownLabel;
gamePanel.setFocusable(true);
gamePanel.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
handleKeyPress(e);
}
});
}
public void startGame() {
startPetMoveTimer();
gamePanel.requestFocusInWindow();
}
private void startPetMoveTimer() {
petMoveTimer = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
movePets();
gamePanel.repaint();
checkCollisions();
}
});
petMoveTimer.start();
}
private void movePets() {
for (int i = 0; i < petLabels.length; i++) {
if (petLabels[i] != null) {
int movementX = getRandomMovement();
int movementY = getRandomMovement();
int currentX = petLabels[i].getX();
int currentY = petLabels[i].getY();
int newX = Math.max(50, Math.min(400, currentX + movementX * 10));
int newY = Math.max(50, Math.min(300, currentY + movementY * 10));
petLabels[i].setLocation(newX, newY);
}
}
}
private int getRandomMovement() {
return new Random().nextInt(6) - 3;
}
private void checkCollisions() {
Rectangle playerBounds = playerLabel.getBounds();
for (int i = 0; i < petLabels.length; i++) {
if (petLabels[i] != null && playerBounds.intersects(petLabels[i].getBounds())) {
collectPet(i);
break;
}
}
if (collectedPets == petLabels.length) {
// All pets collected, end the game or proceed to the next level
petMoveTimer.stop();
}
}
private void collectPet(int index) {
gamePanel.remove(petLabels[index]);
petLabels[index] = null;
collectedPets++;
increasePlayerEnergy(25);
}
private void increasePlayerEnergy(int energyIncrease) {
// You need to implement this method based on your requirements
// For example, update the player's energy label or perform other actions
System.out.println("Player's energy increased by " + energyIncrease);
}
private void handleKeyPress(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_UP && playerY > 50) {
playerY -= 10;
} else if (keyCode == KeyEvent.VK_DOWN && playerY < 300) {
playerY += 10;
} else if (keyCode == KeyEvent.VK_LEFT && playerX > 50) {
playerX -= 10;
} else if (keyCode == KeyEvent.VK_RIGHT && playerX < 400) {
playerX += 10;
}
playerLabel.setLocation(playerX, playerY);
}
}