Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
xKenKOfficial authored Jun 25, 2022
1 parent 262d42d commit 7a6cb0e
Show file tree
Hide file tree
Showing 23 changed files with 444 additions and 0 deletions.
76 changes: 76 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>xKenKOfficial</groupId>
<artifactId>BallGame</artifactId>
<version>1.0-SNAPSHOT</version>
<name>BallGame</name>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>

<repositories>
<repository>
<id>jcenter</id>
<url>https://jcenter.bintray.com</url>
<name>jcenter-bintray</name>
</repository>
</repositories>

<dependencies>
<!-- https://mvnrepository.com/artifact/club.minnced/java-discord-rpc -->
<dependency>
<groupId>club.minnced</groupId>
<artifactId>java-discord-rpc</artifactId>
<version>2.0.2</version>
<scope>compile</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<!-- utterly useless artifact from shade 2.x -->
<createDependencyReducedPom>false</createDependencyReducedPom>
<!-- when downloading via Maven we can pull depends individually -->
<shadedArtifactAttached>true</shadedArtifactAttached>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>x.KenKOfficial.BallGame.Basic.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>

</project>
23 changes: 23 additions & 0 deletions src/main/java/x/KenKOfficial/BallGame/Basic/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package x.KenKOfficial.BallGame.Basic;

import x.KenKOfficial.BallGame.Discord.DiscordRP;
import x.KenKOfficial.BallGame.Frames.GameFrame;
import x.KenKOfficial.BallGame.Utils.GameUtil;
import x.KenKOfficial.BallGame.Utils.Loggers.GLogger;

public class Main
{
private static final DiscordRP discordRP = new DiscordRP();

public static void main(String[] args)
{
GLogger.getLogger().info("Loading: " + GameUtil.getName() + "-" + GameUtil.getVersion());
new GameFrame().setVisible(true);
discordRP.start();
}

public static DiscordRP getDiscordRP()
{
return discordRP;
}
}
39 changes: 39 additions & 0 deletions src/main/java/x/KenKOfficial/BallGame/Discord/DiscordRP.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package x.KenKOfficial.BallGame.Discord;

import club.minnced.discord.rpc.DiscordEventHandlers;
import club.minnced.discord.rpc.DiscordRPC;
import club.minnced.discord.rpc.DiscordRichPresence;

public class DiscordRP
{
public void start() {
DiscordRPC discord = DiscordRPC.INSTANCE;
String appID = "990293566276382780";
String steamID = "";

DiscordEventHandlers handlers = new DiscordEventHandlers();
discord.Discord_Initialize(appID, handlers, true, steamID);

DiscordRichPresence presence = new DiscordRichPresence();
presence.startTimestamp = System.currentTimeMillis() / 1000;
presence.largeImageKey = "ballgame-large";
presence.largeImageText = "v1.0-SNAPSHOT";
presence.details = "v1.0-SNAPSHOT";
presence.state = "In Game.";
discord.Discord_UpdatePresence(presence);

new Thread( () -> {
System.out.println("THREAD STARTED");
while(!Thread.currentThread().isInterrupted()) {
try {
presence.state = "In Game.";
discord.Discord_UpdatePresence(presence);
Thread.sleep(2000L);
} catch(InterruptedException ignored) {

}
}
}, "DISCORD-RPC-Thread").start();

}
}
30 changes: 30 additions & 0 deletions src/main/java/x/KenKOfficial/BallGame/Frames/GameFrame.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package x.KenKOfficial.BallGame.Frames;

import x.KenKOfficial.BallGame.Panels.GamePanel;
import x.KenKOfficial.BallGame.Utils.GameUtil;
import x.KenKOfficial.BallGame.Utils.Loggers.GLogger;

import javax.swing.*;
import java.awt.*;

public class GameFrame extends JFrame
{
public GameFrame()
{
GLogger.getLogger().info("Loading game frame...");
this.setTitle(GameUtil.getName() + "-" + GameUtil.getVersion());
this.setIconImage(new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/textures/icon/ballgame.png"))).getImage());
//this.setBounds(10, 15, 1000, 700);
this.setLocation(4, 50);
this.initComponents();
this.setResizable(false);
this.setDefaultCloseOperation(3);
pack();
}

private void initComponents()
{
GLogger.getLogger().info("Loading components in game: " + GameUtil.getName() + "-" + GameUtil.getVersion());
this.getContentPane().add(new GamePanel());
}
}
196 changes: 196 additions & 0 deletions src/main/java/x/KenKOfficial/BallGame/Panels/GamePanel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
package x.KenKOfficial.BallGame.Panels;

import x.KenKOfficial.BallGame.Utils.Loggers.GLogger;

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 GamePanel extends JPanel implements ActionListener
{
private final int FRAME_HEIGHT = 600;
private final int FRAME_WIDTH = 1000;

private int PALETTE_WIDTH = 100;
private int PALETTE_HEIGHT = 20;

private int xp = (FRAME_WIDTH - PALETTE_WIDTH) / 2;
private int yp = FRAME_HEIGHT - PALETTE_HEIGHT;

private int diameterBall = 30;
private int xBall = (FRAME_WIDTH - diameterBall) / 2;
private int yBall = (FRAME_HEIGHT - diameterBall) / 2;

private Random generator = new Random();
private int poems = generator.nextInt(5) + 4;
private int columns = generator.nextInt(5) + 4;
private int brickWidth = 50;
private int brickHeight = 10;
private int brickInterval= 5;
private int brickIntervalLeft = (FRAME_WIDTH - (brickWidth*columns + brickInterval*(columns-1))) / 2;
private int brickIntervalUp = 10;
private int brickX[][] = new int[columns][poems];
private int brickY[][] = new int[columns][poems];

private boolean hitBricks[][] = new boolean[columns][poems];

private int dx = 2;
private int dy = -2;

private Timer timer;

private String gameStatus = "trwa";

public GamePanel()
{
GLogger.getLogger().info("Loadning game panel...");
initComponents();
this.setBackground(Color.black);

for(int i = 0; i < columns; i++) {
for(int j = 0; j < poems; j++) {
brickX[i][j] = i * (brickWidth + brickInterval) + brickIntervalLeft;
brickY[i][j] = j * (brickHeight + brickInterval) + brickIntervalUp;
hitBricks[i][j] = false;
}
}

timer = new Timer(10, this);
timer.start();
this.addKeyListener(new ControlKey());
this.setFocusable(true);
}

private void initComponents() {
this.setPreferredSize(new Dimension(FRAME_WIDTH, FRAME_HEIGHT));
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
this.painted(g);
}

private void painted(Graphics g)
{
if(gameStatus == "trwa") {
this.paintPalette(g);
this.paintBall(g);
this.paintBricks(g);
} else {
this.endGame(g);
}
}

private void paintPalette(Graphics g)
{
g.setColor(Color.red);
g.fillRect(xp, yp, PALETTE_WIDTH, PALETTE_HEIGHT);
g.setColor(Color.white);
g.drawRect(xp, yp, PALETTE_WIDTH, PALETTE_HEIGHT);
}

private void paintBall(Graphics g)
{
g.setColor(Color.red);
g.fillOval(xBall, yBall, diameterBall, diameterBall);
g.setColor(Color.white);
g.drawOval(xBall, yBall, diameterBall, diameterBall);
}

private void paintBricks(Graphics g)
{
for(int i = 0; i < columns; i++) {
for(int j = 0; j < poems; j++) {
if(!hitBricks[i][j]) {
g.setColor(Color.red);
g.fillRect(brickX[i][j], brickY[i][j], brickWidth, brickHeight);
g.setColor(Color.white);
g.drawRect(brickX[i][j], brickY[i][j], brickWidth, brickHeight);
}
}
}
}

private void endGame(Graphics g) {
Font font = new Font("Helvetica", Font.BOLD, 14);
FontMetrics fontMetrics = this.getFontMetrics(font);
g.setColor(Color.white);
g.setFont(font);
g.drawString(gameStatus, (FRAME_WIDTH - fontMetrics.stringWidth(gameStatus)) / 2, FRAME_HEIGHT / 2);
}

private void rushBall()
{
if(xBall <= 0 || xBall > FRAME_WIDTH - diameterBall) {
dx = dx * -1;
}
if(yBall <= 0 || yBall + diameterBall >= yp && xBall < xp + PALETTE_WIDTH) {
dy = dy * -1;
}
xBall = xBall + dx;
yBall = yBall + dy;
}

private void hitBallOnTheBrick()
{
for(int i = 0; i < columns; i++) {
for(int j = 0; j < poems; j++) {
if(hitBricks[i][j] == false) {
if(xBall > brickX[i][j] && xBall < brickX[i][j] + brickWidth && yBall + diameterBall > brickY[i][j] && yBall < brickY[i][j] + brickHeight) {
dy = -dy;
hitBricks[i][j] = true;
} else if(yBall > brickY[i][j] && yBall < brickY[i][j] + brickHeight && xBall + diameterBall > brickX[i][j] && xBall < brickX[i][j] + brickWidth) {
dx = -dx;
hitBricks[i][j] = true;
}
}
}
}
}

private void statusGame()
{
if(yBall > FRAME_HEIGHT) {
gameStatus = "PRZEGRYWASZ";
}
int dontHitBrick = 0;
for(int i = 0; i < columns; i++) {
for(int j = 0; j < poems; j++) {
if(hitBricks[i][j] == false) {
dontHitBrick += 1;
}
}
}
if(dontHitBrick == 0) {
gameStatus = "WYGRYWASZ";
}
}

@Override
public void actionPerformed(ActionEvent e) {
this.statusGame();
this.hitBallOnTheBrick();
this.rushBall();
this.repaint();
}

private class ControlKey extends KeyAdapter {

@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if(key == KeyEvent.VK_LEFT && xp > 0) {
xp = xp - 10;
}
if(key == KeyEvent.VK_RIGHT && xp < FRAME_WIDTH - PALETTE_WIDTH) {
xp = xp + 10;
}
}

}
}
23 changes: 23 additions & 0 deletions src/main/java/x/KenKOfficial/BallGame/Utils/GameUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package x.KenKOfficial.BallGame.Utils;

public class GameUtil
{
private static final String NAME = "BallGame";
private static final String VERSION = "v1.0-SNAPSHOT";
private static final String AUTHOR = "xKenKOfficial";

public static String getName()
{
return NAME;
}

public static String getVersion()
{
return VERSION;
}

public static String getAuthor()
{
return AUTHOR;
}
}
Loading

0 comments on commit 7a6cb0e

Please sign in to comment.