Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .vscode/launch.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "clang - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: clang build active file"
}
]
}
6 changes: 6 additions & 0 deletions .vscode/settings.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
{
"files.associations": {
"*.py": "python",
"time.h": "c"
}
}
12 changes: 12 additions & 0 deletions Invaders.iml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Binary file addedsounds/death.wav
Binary file not shown.
Binary file addedsounds/music.wav
Binary file not shown.
Binary file addedsounds/shot.wav
Binary file not shown.
1 change: 1 addition & 0 deletions src/engine/Core.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -117,6 +117,7 @@ public static void main(final String[] args) {
switch (returnCode) {
case 1:
// Main menu.
Sound.playMusic();
currentScreen = new TitleScreen(width, height, FPS);
LOGGER.info("Starting " + WIDTH + "x" + HEIGHT
+ " title screen at " + FPS + " fps.");
Expand Down
33 changes: 20 additions & 13 deletions src/engine/Frame.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,8 @@

import screen.Screen;



/**
* Implements a frame to show screens on.
*
Expand All@@ -15,20 +17,24 @@
@SuppressWarnings("serial")
public class Frame extends JFrame {

/** Frame width. */
/**
* Frame width.
*/
private int width;
/** Frame height. */
/**
* Frame height.
*/
private int height;
/** Screen currently shown. */
/**
* Screen currently shown.
*/
private Screen currentScreen;

/**
* Initializes the new frame.
*
* @param width
* Frame width.
* @param height
* Frame height.
*
* @param width Frame width.
* @param height Frame height.
*/
public Frame(final int width, final int height) {
setSize(width, height);
Expand All@@ -48,9 +54,8 @@ public Frame(final int width, final int height) {

/**
* Sets current screen.
*
* @param screen
* Screen to show.
*
* @param screen Screen to show.
* @return Return code of the finished screen.
*/
public final int setScreen(final Screen screen) {
Expand All@@ -61,7 +66,7 @@ public final int setScreen(final Screen screen) {

/**
* Getter for frame width.
*
*
* @return Frame width.
*/
public final int getWidth() {
Expand All@@ -70,11 +75,13 @@ public final int getWidth() {

/**
* Getter for frame height.
*
*
* @return Frame height.
*/

public final int getHeight() {
return this.height;
}


}
60 changes: 60 additions & 0 deletions src/engine/Sound.java
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
package engine;

//Responsible for the sounds of the game

import javax.sound.sampled.*;
import java.io.File;

public class Sound
{

public static void playMusic() //background music class
{
File musicfile = new File("sounds/music.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(musicfile);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY);
}
catch(Exception e)
{

}
}

public static void shoot() //shooting sound effect
{
File shot = new File("sounds/shot.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(shot);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

public static void death() //shooting sound effect
{
File dead = new File("sounds/death.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(dead);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

}
3 changes: 3 additions & 0 deletions src/entity/BulletPool.java
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
package entity;

import engine.Sound;

import java.util.HashSet;
import java.util.Set;

Expand DownExpand Up@@ -38,6 +40,7 @@ public static Bullet getBullet(final int positionX,
final int positionY, final int speed) {
Bullet bullet;
if (!pool.isEmpty()) {
Sound.shoot();
bullet = pool.iterator().next();
pool.remove(bullet);
bullet.setPositionX(positionX - bullet.getWidth() / 2);
Expand Down
2 changes: 2 additions & 0 deletions src/entity/Ship.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@
import engine.Cooldown;
import engine.Core;
import engine.DrawManager.SpriteType;
import engine.Sound;

/**
* Implements a ship, to be controlled by the player.
Expand DownExpand Up@@ -91,6 +92,7 @@ public final void update() {
*/
public final void destroy() {
this.destructionCooldown.reset();
Sound.death();
}

/**
Expand Down
2 changes: 2 additions & 0 deletions src/screen/TitleScreen.java
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
package screen;

import java.awt.event.KeyEvent;
import engine.Sound;

import engine.Cooldown;
import engine.Core;
Expand DownExpand Up@@ -108,4 +109,5 @@ private void draw() {

drawManager.completeDrawing(this);
}

}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .vscode/launch.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "clang - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: clang build active file"
}
]
}
6 changes: 6 additions & 0 deletions .vscode/settings.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
{
"files.associations": {
"*.py": "python",
"time.h": "c"
}
}
12 changes: 12 additions & 0 deletions Invaders.iml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Binary file addedsounds/death.wav
Binary file not shown.
Binary file addedsounds/music.wav
Binary file not shown.
Binary file addedsounds/shot.wav
Binary file not shown.
1 change: 1 addition & 0 deletions src/engine/Core.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -117,6 +117,7 @@ public static void main(final String[] args) {
switch (returnCode) {
case 1:
// Main menu.
Sound.playMusic();
currentScreen = new TitleScreen(width, height, FPS);
LOGGER.info("Starting " + WIDTH + "x" + HEIGHT
+ " title screen at " + FPS + " fps.");
Expand Down
33 changes: 20 additions & 13 deletions src/engine/Frame.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,8 @@

import screen.Screen;



/**
* Implements a frame to show screens on.
*
Expand All@@ -15,20 +17,24 @@
@SuppressWarnings("serial")
public class Frame extends JFrame {

/** Frame width. */
/**
* Frame width.
*/
private int width;
/** Frame height. */
/**
* Frame height.
*/
private int height;
/** Screen currently shown. */
/**
* Screen currently shown.
*/
private Screen currentScreen;

/**
* Initializes the new frame.
*
* @param width
* Frame width.
* @param height
* Frame height.
*
* @param width Frame width.
* @param height Frame height.
*/
public Frame(final int width, final int height) {
setSize(width, height);
Expand All@@ -48,9 +54,8 @@ public Frame(final int width, final int height) {

/**
* Sets current screen.
*
* @param screen
* Screen to show.
*
* @param screen Screen to show.
* @return Return code of the finished screen.
*/
public final int setScreen(final Screen screen) {
Expand All@@ -61,7 +66,7 @@ public final int setScreen(final Screen screen) {

/**
* Getter for frame width.
*
*
* @return Frame width.
*/
public final int getWidth() {
Expand All@@ -70,11 +75,13 @@ public final int getWidth() {

/**
* Getter for frame height.
*
*
* @return Frame height.
*/

public final int getHeight() {
return this.height;
}


}
60 changes: 60 additions & 0 deletions src/engine/Sound.java
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
package engine;

//Responsible for the sounds of the game

import javax.sound.sampled.*;
import java.io.File;

public class Sound
{

public static void playMusic() //background music class
{
File musicfile = new File("sounds/music.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(musicfile);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY);
}
catch(Exception e)
{

}
}

public static void shoot() //shooting sound effect
{
File shot = new File("sounds/shot.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(shot);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

public static void death() //shooting sound effect
{
File dead = new File("sounds/death.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(dead);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

}
3 changes: 3 additions & 0 deletions src/entity/BulletPool.java
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
package entity;

import engine.Sound;

import java.util.HashSet;
import java.util.Set;

Expand DownExpand Up@@ -38,6 +40,7 @@ public static Bullet getBullet(final int positionX,
final int positionY, final int speed) {
Bullet bullet;
if (!pool.isEmpty()) {
Sound.shoot();
bullet = pool.iterator().next();
pool.remove(bullet);
bullet.setPositionX(positionX - bullet.getWidth() / 2);
Expand Down
2 changes: 2 additions & 0 deletions src/entity/Ship.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@
import engine.Cooldown;
import engine.Core;
import engine.DrawManager.SpriteType;
import engine.Sound;

/**
* Implements a ship, to be controlled by the player.
Expand DownExpand Up@@ -91,6 +92,7 @@ public final void update() {
*/
public final void destroy() {
this.destructionCooldown.reset();
Sound.death();
}

/**
Expand Down
2 changes: 2 additions & 0 deletions src/screen/TitleScreen.java
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
package screen;

import java.awt.event.KeyEvent;
import engine.Sound;

import engine.Cooldown;
import engine.Core;
Expand DownExpand Up@@ -108,4 +109,5 @@ private void draw() {

drawManager.completeDrawing(this);
}

}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .vscode/launch.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "clang - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: clang build active file"
}
]
}
6 changes: 6 additions & 0 deletions .vscode/settings.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
{
"files.associations": {
"*.py": "python",
"time.h": "c"
}
}
12 changes: 12 additions & 0 deletions Invaders.iml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Binary file addedsounds/death.wav
Binary file not shown.
Binary file addedsounds/music.wav
Binary file not shown.
Binary file addedsounds/shot.wav
Binary file not shown.
1 change: 1 addition & 0 deletions src/engine/Core.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -117,6 +117,7 @@ public static void main(final String[] args) {
switch (returnCode) {
case 1:
// Main menu.
Sound.playMusic();
currentScreen = new TitleScreen(width, height, FPS);
LOGGER.info("Starting " + WIDTH + "x" + HEIGHT
+ " title screen at " + FPS + " fps.");
Expand Down
33 changes: 20 additions & 13 deletions src/engine/Frame.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,8 @@

import screen.Screen;



/**
* Implements a frame to show screens on.
*
Expand All@@ -15,20 +17,24 @@
@SuppressWarnings("serial")
public class Frame extends JFrame {

/** Frame width. */
/**
* Frame width.
*/
private int width;
/** Frame height. */
/**
* Frame height.
*/
private int height;
/** Screen currently shown. */
/**
* Screen currently shown.
*/
private Screen currentScreen;

/**
* Initializes the new frame.
*
* @param width
* Frame width.
* @param height
* Frame height.
*
* @param width Frame width.
* @param height Frame height.
*/
public Frame(final int width, final int height) {
setSize(width, height);
Expand All@@ -48,9 +54,8 @@ public Frame(final int width, final int height) {

/**
* Sets current screen.
*
* @param screen
* Screen to show.
*
* @param screen Screen to show.
* @return Return code of the finished screen.
*/
public final int setScreen(final Screen screen) {
Expand All@@ -61,7 +66,7 @@ public final int setScreen(final Screen screen) {

/**
* Getter for frame width.
*
*
* @return Frame width.
*/
public final int getWidth() {
Expand All@@ -70,11 +75,13 @@ public final int getWidth() {

/**
* Getter for frame height.
*
*
* @return Frame height.
*/

public final int getHeight() {
return this.height;
}


}
60 changes: 60 additions & 0 deletions src/engine/Sound.java
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
package engine;

//Responsible for the sounds of the game

import javax.sound.sampled.*;
import java.io.File;

public class Sound
{

public static void playMusic() //background music class
{
File musicfile = new File("sounds/music.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(musicfile);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY);
}
catch(Exception e)
{

}
}

public static void shoot() //shooting sound effect
{
File shot = new File("sounds/shot.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(shot);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

public static void death() //shooting sound effect
{
File dead = new File("sounds/death.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(dead);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

}
3 changes: 3 additions & 0 deletions src/entity/BulletPool.java
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
package entity;

import engine.Sound;

import java.util.HashSet;
import java.util.Set;

Expand DownExpand Up@@ -38,6 +40,7 @@ public static Bullet getBullet(final int positionX,
final int positionY, final int speed) {
Bullet bullet;
if (!pool.isEmpty()) {
Sound.shoot();
bullet = pool.iterator().next();
pool.remove(bullet);
bullet.setPositionX(positionX - bullet.getWidth() / 2);
Expand Down
2 changes: 2 additions & 0 deletions src/entity/Ship.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@
import engine.Cooldown;
import engine.Core;
import engine.DrawManager.SpriteType;
import engine.Sound;

/**
* Implements a ship, to be controlled by the player.
Expand DownExpand Up@@ -91,6 +92,7 @@ public final void update() {
*/
public final void destroy() {
this.destructionCooldown.reset();
Sound.death();
}

/**
Expand Down
2 changes: 2 additions & 0 deletions src/screen/TitleScreen.java
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
package screen;

import java.awt.event.KeyEvent;
import engine.Sound;

import engine.Cooldown;
import engine.Core;
Expand DownExpand Up@@ -108,4 +109,5 @@ private void draw() {

drawManager.completeDrawing(this);
}

}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .vscode/launch.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "clang - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: clang build active file"
}
]
}
6 changes: 6 additions & 0 deletions .vscode/settings.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
{
"files.associations": {
"*.py": "python",
"time.h": "c"
}
}
12 changes: 12 additions & 0 deletions Invaders.iml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Binary file addedsounds/death.wav
Binary file not shown.
Binary file addedsounds/music.wav
Binary file not shown.
Binary file addedsounds/shot.wav
Binary file not shown.
1 change: 1 addition & 0 deletions src/engine/Core.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -117,6 +117,7 @@ public static void main(final String[] args) {
switch (returnCode) {
case 1:
// Main menu.
Sound.playMusic();
currentScreen = new TitleScreen(width, height, FPS);
LOGGER.info("Starting " + WIDTH + "x" + HEIGHT
+ " title screen at " + FPS + " fps.");
Expand Down
33 changes: 20 additions & 13 deletions src/engine/Frame.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,8 @@

import screen.Screen;



/**
* Implements a frame to show screens on.
*
Expand All@@ -15,20 +17,24 @@
@SuppressWarnings("serial")
public class Frame extends JFrame {

/** Frame width. */
/**
* Frame width.
*/
private int width;
/** Frame height. */
/**
* Frame height.
*/
private int height;
/** Screen currently shown. */
/**
* Screen currently shown.
*/
private Screen currentScreen;

/**
* Initializes the new frame.
*
* @param width
* Frame width.
* @param height
* Frame height.
*
* @param width Frame width.
* @param height Frame height.
*/
public Frame(final int width, final int height) {
setSize(width, height);
Expand All@@ -48,9 +54,8 @@ public Frame(final int width, final int height) {

/**
* Sets current screen.
*
* @param screen
* Screen to show.
*
* @param screen Screen to show.
* @return Return code of the finished screen.
*/
public final int setScreen(final Screen screen) {
Expand All@@ -61,7 +66,7 @@ public final int setScreen(final Screen screen) {

/**
* Getter for frame width.
*
*
* @return Frame width.
*/
public final int getWidth() {
Expand All@@ -70,11 +75,13 @@ public final int getWidth() {

/**
* Getter for frame height.
*
*
* @return Frame height.
*/

public final int getHeight() {
return this.height;
}


}
60 changes: 60 additions & 0 deletions src/engine/Sound.java
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
package engine;

//Responsible for the sounds of the game

import javax.sound.sampled.*;
import java.io.File;

public class Sound
{

public static void playMusic() //background music class
{
File musicfile = new File("sounds/music.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(musicfile);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY);
}
catch(Exception e)
{

}
}

public static void shoot() //shooting sound effect
{
File shot = new File("sounds/shot.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(shot);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

public static void death() //shooting sound effect
{
File dead = new File("sounds/death.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(dead);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

}
3 changes: 3 additions & 0 deletions src/entity/BulletPool.java
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
package entity;

import engine.Sound;

import java.util.HashSet;
import java.util.Set;

Expand DownExpand Up@@ -38,6 +40,7 @@ public static Bullet getBullet(final int positionX,
final int positionY, final int speed) {
Bullet bullet;
if (!pool.isEmpty()) {
Sound.shoot();
bullet = pool.iterator().next();
pool.remove(bullet);
bullet.setPositionX(positionX - bullet.getWidth() / 2);
Expand Down
2 changes: 2 additions & 0 deletions src/entity/Ship.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@
import engine.Cooldown;
import engine.Core;
import engine.DrawManager.SpriteType;
import engine.Sound;

/**
* Implements a ship, to be controlled by the player.
Expand DownExpand Up@@ -91,6 +92,7 @@ public final void update() {
*/
public final void destroy() {
this.destructionCooldown.reset();
Sound.death();
}

/**
Expand Down
2 changes: 2 additions & 0 deletions src/screen/TitleScreen.java
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
package screen;

import java.awt.event.KeyEvent;
import engine.Sound;

import engine.Cooldown;
import engine.Core;
Expand DownExpand Up@@ -108,4 +109,5 @@ private void draw() {

drawManager.completeDrawing(this);
}

}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .vscode/launch.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "clang - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: clang build active file"
}
]
}
6 changes: 6 additions & 0 deletions .vscode/settings.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
{
"files.associations": {
"*.py": "python",
"time.h": "c"
}
}
12 changes: 12 additions & 0 deletions Invaders.iml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Binary file addedsounds/death.wav
Binary file not shown.
Binary file addedsounds/music.wav
Binary file not shown.
Binary file addedsounds/shot.wav
Binary file not shown.
1 change: 1 addition & 0 deletions src/engine/Core.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -117,6 +117,7 @@ public static void main(final String[] args) {
switch (returnCode) {
case 1:
// Main menu.
Sound.playMusic();
currentScreen = new TitleScreen(width, height, FPS);
LOGGER.info("Starting " + WIDTH + "x" + HEIGHT
+ " title screen at " + FPS + " fps.");
Expand Down
33 changes: 20 additions & 13 deletions src/engine/Frame.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,8 @@

import screen.Screen;



/**
* Implements a frame to show screens on.
*
Expand All@@ -15,20 +17,24 @@
@SuppressWarnings("serial")
public class Frame extends JFrame {

/** Frame width. */
/**
* Frame width.
*/
private int width;
/** Frame height. */
/**
* Frame height.
*/
private int height;
/** Screen currently shown. */
/**
* Screen currently shown.
*/
private Screen currentScreen;

/**
* Initializes the new frame.
*
* @param width
* Frame width.
* @param height
* Frame height.
*
* @param width Frame width.
* @param height Frame height.
*/
public Frame(final int width, final int height) {
setSize(width, height);
Expand All@@ -48,9 +54,8 @@ public Frame(final int width, final int height) {

/**
* Sets current screen.
*
* @param screen
* Screen to show.
*
* @param screen Screen to show.
* @return Return code of the finished screen.
*/
public final int setScreen(final Screen screen) {
Expand All@@ -61,7 +66,7 @@ public final int setScreen(final Screen screen) {

/**
* Getter for frame width.
*
*
* @return Frame width.
*/
public final int getWidth() {
Expand All@@ -70,11 +75,13 @@ public final int getWidth() {

/**
* Getter for frame height.
*
*
* @return Frame height.
*/

public final int getHeight() {
return this.height;
}


}
60 changes: 60 additions & 0 deletions src/engine/Sound.java
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
package engine;

//Responsible for the sounds of the game

import javax.sound.sampled.*;
import java.io.File;

public class Sound
{

public static void playMusic() //background music class
{
File musicfile = new File("sounds/music.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(musicfile);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY);
}
catch(Exception e)
{

}
}

public static void shoot() //shooting sound effect
{
File shot = new File("sounds/shot.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(shot);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

public static void death() //shooting sound effect
{
File dead = new File("sounds/death.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(dead);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

}
3 changes: 3 additions & 0 deletions src/entity/BulletPool.java
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
package entity;

import engine.Sound;

import java.util.HashSet;
import java.util.Set;

Expand DownExpand Up@@ -38,6 +40,7 @@ public static Bullet getBullet(final int positionX,
final int positionY, final int speed) {
Bullet bullet;
if (!pool.isEmpty()) {
Sound.shoot();
bullet = pool.iterator().next();
pool.remove(bullet);
bullet.setPositionX(positionX - bullet.getWidth() / 2);
Expand Down
2 changes: 2 additions & 0 deletions src/entity/Ship.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@
import engine.Cooldown;
import engine.Core;
import engine.DrawManager.SpriteType;
import engine.Sound;

/**
* Implements a ship, to be controlled by the player.
Expand DownExpand Up@@ -91,6 +92,7 @@ public final void update() {
*/
public final void destroy() {
this.destructionCooldown.reset();
Sound.death();
}

/**
Expand Down
2 changes: 2 additions & 0 deletions src/screen/TitleScreen.java
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
package screen;

import java.awt.event.KeyEvent;
import engine.Sound;

import engine.Cooldown;
import engine.Core;
Expand DownExpand Up@@ -108,4 +109,5 @@ private void draw() {

drawManager.completeDrawing(this);
}

}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .vscode/launch.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "clang - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: clang build active file"
}
]
}
6 changes: 6 additions & 0 deletions .vscode/settings.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
{
"files.associations": {
"*.py": "python",
"time.h": "c"
}
}
12 changes: 12 additions & 0 deletions Invaders.iml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Binary file addedsounds/death.wav
Binary file not shown.
Binary file addedsounds/music.wav
Binary file not shown.
Binary file addedsounds/shot.wav
Binary file not shown.
1 change: 1 addition & 0 deletions src/engine/Core.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -117,6 +117,7 @@ public static void main(final String[] args) {
switch (returnCode) {
case 1:
// Main menu.
Sound.playMusic();
currentScreen = new TitleScreen(width, height, FPS);
LOGGER.info("Starting " + WIDTH + "x" + HEIGHT
+ " title screen at " + FPS + " fps.");
Expand Down
33 changes: 20 additions & 13 deletions src/engine/Frame.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,8 @@

import screen.Screen;



/**
* Implements a frame to show screens on.
*
Expand All@@ -15,20 +17,24 @@
@SuppressWarnings("serial")
public class Frame extends JFrame {

/** Frame width. */
/**
* Frame width.
*/
private int width;
/** Frame height. */
/**
* Frame height.
*/
private int height;
/** Screen currently shown. */
/**
* Screen currently shown.
*/
private Screen currentScreen;

/**
* Initializes the new frame.
*
* @param width
* Frame width.
* @param height
* Frame height.
*
* @param width Frame width.
* @param height Frame height.
*/
public Frame(final int width, final int height) {
setSize(width, height);
Expand All@@ -48,9 +54,8 @@ public Frame(final int width, final int height) {

/**
* Sets current screen.
*
* @param screen
* Screen to show.
*
* @param screen Screen to show.
* @return Return code of the finished screen.
*/
public final int setScreen(final Screen screen) {
Expand All@@ -61,7 +66,7 @@ public final int setScreen(final Screen screen) {

/**
* Getter for frame width.
*
*
* @return Frame width.
*/
public final int getWidth() {
Expand All@@ -70,11 +75,13 @@ public final int getWidth() {

/**
* Getter for frame height.
*
*
* @return Frame height.
*/

public final int getHeight() {
return this.height;
}


}
60 changes: 60 additions & 0 deletions src/engine/Sound.java
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
package engine;

//Responsible for the sounds of the game

import javax.sound.sampled.*;
import java.io.File;

public class Sound
{

public static void playMusic() //background music class
{
File musicfile = new File("sounds/music.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(musicfile);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY);
}
catch(Exception e)
{

}
}

public static void shoot() //shooting sound effect
{
File shot = new File("sounds/shot.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(shot);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

public static void death() //shooting sound effect
{
File dead = new File("sounds/death.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(dead);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

}
3 changes: 3 additions & 0 deletions src/entity/BulletPool.java
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
package entity;

import engine.Sound;

import java.util.HashSet;
import java.util.Set;

Expand DownExpand Up@@ -38,6 +40,7 @@ public static Bullet getBullet(final int positionX,
final int positionY, final int speed) {
Bullet bullet;
if (!pool.isEmpty()) {
Sound.shoot();
bullet = pool.iterator().next();
pool.remove(bullet);
bullet.setPositionX(positionX - bullet.getWidth() / 2);
Expand Down
2 changes: 2 additions & 0 deletions src/entity/Ship.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@
import engine.Cooldown;
import engine.Core;
import engine.DrawManager.SpriteType;
import engine.Sound;

/**
* Implements a ship, to be controlled by the player.
Expand DownExpand Up@@ -91,6 +92,7 @@ public final void update() {
*/
public final void destroy() {
this.destructionCooldown.reset();
Sound.death();
}

/**
Expand Down
2 changes: 2 additions & 0 deletions src/screen/TitleScreen.java
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
package screen;

import java.awt.event.KeyEvent;
import engine.Sound;

import engine.Cooldown;
import engine.Core;
Expand DownExpand Up@@ -108,4 +109,5 @@ private void draw() {

drawManager.completeDrawing(this);
}

}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .vscode/launch.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "clang - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: clang build active file"
}
]
}
6 changes: 6 additions & 0 deletions .vscode/settings.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
{
"files.associations": {
"*.py": "python",
"time.h": "c"
}
}
12 changes: 12 additions & 0 deletions Invaders.iml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Binary file addedsounds/death.wav
Binary file not shown.
Binary file addedsounds/music.wav
Binary file not shown.
Binary file addedsounds/shot.wav
Binary file not shown.
1 change: 1 addition & 0 deletions src/engine/Core.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -117,6 +117,7 @@ public static void main(final String[] args) {
switch (returnCode) {
case 1:
// Main menu.
Sound.playMusic();
currentScreen = new TitleScreen(width, height, FPS);
LOGGER.info("Starting " + WIDTH + "x" + HEIGHT
+ " title screen at " + FPS + " fps.");
Expand Down
33 changes: 20 additions & 13 deletions src/engine/Frame.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,8 @@

import screen.Screen;



/**
* Implements a frame to show screens on.
*
Expand All@@ -15,20 +17,24 @@
@SuppressWarnings("serial")
public class Frame extends JFrame {

/** Frame width. */
/**
* Frame width.
*/
private int width;
/** Frame height. */
/**
* Frame height.
*/
private int height;
/** Screen currently shown. */
/**
* Screen currently shown.
*/
private Screen currentScreen;

/**
* Initializes the new frame.
*
* @param width
* Frame width.
* @param height
* Frame height.
*
* @param width Frame width.
* @param height Frame height.
*/
public Frame(final int width, final int height) {
setSize(width, height);
Expand All@@ -48,9 +54,8 @@ public Frame(final int width, final int height) {

/**
* Sets current screen.
*
* @param screen
* Screen to show.
*
* @param screen Screen to show.
* @return Return code of the finished screen.
*/
public final int setScreen(final Screen screen) {
Expand All@@ -61,7 +66,7 @@ public final int setScreen(final Screen screen) {

/**
* Getter for frame width.
*
*
* @return Frame width.
*/
public final int getWidth() {
Expand All@@ -70,11 +75,13 @@ public final int getWidth() {

/**
* Getter for frame height.
*
*
* @return Frame height.
*/

public final int getHeight() {
return this.height;
}


}
60 changes: 60 additions & 0 deletions src/engine/Sound.java
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
package engine;

//Responsible for the sounds of the game

import javax.sound.sampled.*;
import java.io.File;

public class Sound
{

public static void playMusic() //background music class
{
File musicfile = new File("sounds/music.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(musicfile);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY);
}
catch(Exception e)
{

}
}

public static void shoot() //shooting sound effect
{
File shot = new File("sounds/shot.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(shot);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

public static void death() //shooting sound effect
{
File dead = new File("sounds/death.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(dead);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

}
3 changes: 3 additions & 0 deletions src/entity/BulletPool.java
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
package entity;

import engine.Sound;

import java.util.HashSet;
import java.util.Set;

Expand DownExpand Up@@ -38,6 +40,7 @@ public static Bullet getBullet(final int positionX,
final int positionY, final int speed) {
Bullet bullet;
if (!pool.isEmpty()) {
Sound.shoot();
bullet = pool.iterator().next();
pool.remove(bullet);
bullet.setPositionX(positionX - bullet.getWidth() / 2);
Expand Down
2 changes: 2 additions & 0 deletions src/entity/Ship.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@
import engine.Cooldown;
import engine.Core;
import engine.DrawManager.SpriteType;
import engine.Sound;

/**
* Implements a ship, to be controlled by the player.
Expand DownExpand Up@@ -91,6 +92,7 @@ public final void update() {
*/
public final void destroy() {
this.destructionCooldown.reset();
Sound.death();
}

/**
Expand Down
2 changes: 2 additions & 0 deletions src/screen/TitleScreen.java
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
package screen;

import java.awt.event.KeyEvent;
import engine.Sound;

import engine.Cooldown;
import engine.Core;
Expand DownExpand Up@@ -108,4 +109,5 @@ private void draw() {

drawManager.completeDrawing(this);
}

}
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .vscode/launch.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "clang - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: clang build active file"
}
]
}
6 changes: 6 additions & 0 deletions .vscode/settings.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
{
"files.associations": {
"*.py": "python",
"time.h": "c"
}
}
12 changes: 12 additions & 0 deletions Invaders.iml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Binary file addedsounds/death.wav
Binary file not shown.
Binary file addedsounds/music.wav
Binary file not shown.
Binary file addedsounds/shot.wav
Binary file not shown.
1 change: 1 addition & 0 deletions src/engine/Core.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -117,6 +117,7 @@ public static void main(final String[] args) {
switch (returnCode) {
case 1:
// Main menu.
Sound.playMusic();
currentScreen = new TitleScreen(width, height, FPS);
LOGGER.info("Starting " + WIDTH + "x" + HEIGHT
+ " title screen at " + FPS + " fps.");
Expand Down
33 changes: 20 additions & 13 deletions src/engine/Frame.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,8 @@

import screen.Screen;



/**
* Implements a frame to show screens on.
*
Expand All@@ -15,20 +17,24 @@
@SuppressWarnings("serial")
public class Frame extends JFrame {

/** Frame width. */
/**
* Frame width.
*/
private int width;
/** Frame height. */
/**
* Frame height.
*/
private int height;
/** Screen currently shown. */
/**
* Screen currently shown.
*/
private Screen currentScreen;

/**
* Initializes the new frame.
*
* @param width
* Frame width.
* @param height
* Frame height.
*
* @param width Frame width.
* @param height Frame height.
*/
public Frame(final int width, final int height) {
setSize(width, height);
Expand All@@ -48,9 +54,8 @@ public Frame(final int width, final int height) {

/**
* Sets current screen.
*
* @param screen
* Screen to show.
*
* @param screen Screen to show.
* @return Return code of the finished screen.
*/
public final int setScreen(final Screen screen) {
Expand All@@ -61,7 +66,7 @@ public final int setScreen(final Screen screen) {

/**
* Getter for frame width.
*
*
* @return Frame width.
*/
public final int getWidth() {
Expand All@@ -70,11 +75,13 @@ public final int getWidth() {

/**
* Getter for frame height.
*
*
* @return Frame height.
*/

public final int getHeight() {
return this.height;
}


}
60 changes: 60 additions & 0 deletions src/engine/Sound.java
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
package engine;

//Responsible for the sounds of the game

import javax.sound.sampled.*;
import java.io.File;

public class Sound
{

public static void playMusic() //background music class
{
File musicfile = new File("sounds/music.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(musicfile);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY);
}
catch(Exception e)
{

}
}

public static void shoot() //shooting sound effect
{
File shot = new File("sounds/shot.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(shot);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

public static void death() //shooting sound effect
{
File dead = new File("sounds/death.wav");
try
{
AudioInputStream Audio = AudioSystem.getAudioInputStream(dead);
Clip clip = AudioSystem.getClip();
clip.open(Audio);
clip.start();
}
catch(Exception e)
{

}
}

}
3 changes: 3 additions & 0 deletions src/entity/BulletPool.java
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
package entity;

import engine.Sound;

import java.util.HashSet;
import java.util.Set;

Expand DownExpand Up@@ -38,6 +40,7 @@ public static Bullet getBullet(final int positionX,
final int positionY, final int speed) {
Bullet bullet;
if (!pool.isEmpty()) {
Sound.shoot();
bullet = pool.iterator().next();
pool.remove(bullet);
bullet.setPositionX(positionX - bullet.getWidth() / 2);
Expand Down
2 changes: 2 additions & 0 deletions src/entity/Ship.java
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,6 +6,7 @@
import engine.Cooldown;
import engine.Core;
import engine.DrawManager.SpriteType;
import engine.Sound;

/**
* Implements a ship, to be controlled by the player.
Expand DownExpand Up@@ -91,6 +92,7 @@ public final void update() {
*/
public final void destroy() {
this.destructionCooldown.reset();
Sound.death();
}

/**
Expand Down
2 changes: 2 additions & 0 deletions src/screen/TitleScreen.java
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
package screen;

import java.awt.event.KeyEvent;
import engine.Sound;

import engine.Cooldown;
import engine.Core;
Expand DownExpand Up@@ -108,4 +109,5 @@ private void draw() {

drawManager.completeDrawing(this);
}

}