-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
262d42d
commit 7a6cb0e
Showing
23 changed files
with
444 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
39
src/main/java/x/KenKOfficial/BallGame/Discord/DiscordRP.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
30
src/main/java/x/KenKOfficial/BallGame/Frames/GameFrame.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
196
src/main/java/x/KenKOfficial/BallGame/Panels/GamePanel.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} |
Oops, something went wrong.