diff --git a/.replit b/.replit new file mode 100644 index 0000000..5c54b72 --- /dev/null +++ b/.replit @@ -0,0 +1,28 @@ +[nix] +packages = ["adoptopenjdk-openj9-bin-16"] + +[agent] +expertMode = true + +[workflows] +runButton = "Project" + +[[workflows.workflow]] +name = "Project" +mode = "parallel" +author = "agent" + +[[workflows.workflow.tasks]] +task = "workflow.run" +args = "Start application" + +[[workflows.workflow]] +name = "Start application" +author = "agent" + +[workflows.workflow.metadata] +outputType = "vnc" + +[[workflows.workflow.tasks]] +task = "shell.exec" +args = "cd /home/runner/workspace/American-Identity-Project && java Display" diff --git a/American-Identity-Project/Amendment.class b/American-Identity-Project/Amendment.class new file mode 100644 index 0000000..b23978c Binary files /dev/null and b/American-Identity-Project/Amendment.class differ diff --git a/American-Identity-Project/Amendment.java b/American-Identity-Project/Amendment.java new file mode 100644 index 0000000..4a2e56a --- /dev/null +++ b/American-Identity-Project/Amendment.java @@ -0,0 +1,8 @@ +import javax.swing.ImageIcon; + +public class Amendment extends Collectable { + + public Amendment(int x, int y, int w, int h) { + super(x, y, w, h, new ImageIcon("Sprites/Amendment.png")); + } +} diff --git a/American-Identity-Project/Brick.class b/American-Identity-Project/Brick.class new file mode 100644 index 0000000..75209c4 Binary files /dev/null and b/American-Identity-Project/Brick.class differ diff --git a/American-Identity-Project/Brick.java b/American-Identity-Project/Brick.java new file mode 100644 index 0000000..6ff79ad --- /dev/null +++ b/American-Identity-Project/Brick.java @@ -0,0 +1,8 @@ +import javax.swing.ImageIcon; + +public class Brick extends Tile { + + public Brick(int x, int y, int w, int h) { + super(x, y, w, h, new ImageIcon("Sprites/Bricks/Brick.png")); + } +} diff --git a/American-Identity-Project/Collectable.class b/American-Identity-Project/Collectable.class new file mode 100644 index 0000000..c3a9449 Binary files /dev/null and b/American-Identity-Project/Collectable.class differ diff --git a/American-Identity-Project/Collectable.java b/American-Identity-Project/Collectable.java new file mode 100644 index 0000000..c6b9842 --- /dev/null +++ b/American-Identity-Project/Collectable.java @@ -0,0 +1,7 @@ +import javax.swing.ImageIcon; + +public class Collectable extends Collidable { + public Collectable(int x, int y, int w, int h, ImageIcon i) { + super(x, y, w, h, i); + } +} diff --git a/American-Identity-Project/Collidable.class b/American-Identity-Project/Collidable.class new file mode 100644 index 0000000..3a97e64 Binary files /dev/null and b/American-Identity-Project/Collidable.class differ diff --git a/American-Identity-Project/Collidable.java b/American-Identity-Project/Collidable.java new file mode 100644 index 0000000..e5211ee --- /dev/null +++ b/American-Identity-Project/Collidable.java @@ -0,0 +1,30 @@ +import java.awt.Graphics; +import java.awt.Rectangle; +import javax.swing.ImageIcon; + +public class Collidable extends Sprite { + int x, y, width, height; + Rectangle rect; + + public Collidable(int x1, int y1, int w, int h, ImageIcon icon) { + super(icon); + x = x1; + y = y1; + width = w; + height = h; + rect = new Rectangle(x1, y1, w, h); + } + + public void draw(Graphics g) { + sprite = icon.getImage(); + g.drawImage(sprite, x, y, width, height, null); + } + + public boolean collidesWith(Collidable other) { + return this.rect.intersects(other.rect); + } + + public void onCollide(Collidable other) { + return; + } +} diff --git a/American-Identity-Project/Display.class b/American-Identity-Project/Display.class new file mode 100644 index 0000000..e8cc16f Binary files /dev/null and b/American-Identity-Project/Display.class differ diff --git a/American-Identity-Project/Display.java b/American-Identity-Project/Display.java new file mode 100644 index 0000000..f295366 --- /dev/null +++ b/American-Identity-Project/Display.java @@ -0,0 +1,21 @@ +import javax.swing.*; + +public class Display { + public static void main(String[] args) { + int boardWidth = 800; + int boardHeight = 600; + int tileSize = 20; + + JFrame game = new JFrame(); + game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + game.setSize(boardWidth, boardHeight); + game.setVisible(true); + game.setLocationRelativeTo(null); + game.setResizable(false); + + Platformer platformer = new Platformer(boardWidth, boardHeight, tileSize); + game.add(platformer); + game.pack(); + platformer.requestFocus(); + } +} diff --git a/American-Identity-Project/Enemy.class b/American-Identity-Project/Enemy.class new file mode 100644 index 0000000..1c23417 Binary files /dev/null and b/American-Identity-Project/Enemy.class differ diff --git a/American-Identity-Project/Enemy.java b/American-Identity-Project/Enemy.java new file mode 100644 index 0000000..d2d9bf6 --- /dev/null +++ b/American-Identity-Project/Enemy.java @@ -0,0 +1,53 @@ +import java.util.*; +import javax.swing.ImageIcon; + +public class Enemy extends Collidable { + int xVelo, yVelo; + boolean alive; + + public Enemy(int x, int y, int w, int h, int level) { + super(x, y, w, h, new ImageIcon("Sprites/Enemies/" + level + ".png")); + xVelo = 2; + yVelo = 0; + alive = true; + } + + public void moveX(int moveX) { + this.x += moveX; + this.rect.x = this.x; + } + + public void moveY(int moveY) { + this.y += moveY; + this.rect.y = this.y; + } + + public void patrol(ArrayList collidables) { + moveX(xVelo); + + for (Collidable c : collidables) { + if (this.collidesWith(c)) { + xVelo = -xVelo; + moveX(xVelo * 2); + break; + } + } + + // check edge detection - is there ground below next step? + boolean edgeAhead = true; + int nextX = this.x + xVelo; + for (Collidable c : collidables) { + if (c instanceof Tile) { + Tile t = (Tile) c; + // check if tile is below enemy's next position + if (nextX + this.width > t.x && nextX < t.x + t.width && t.y == this.y + this.height) { + edgeAhead = false; + break; + } + } + } + if (edgeAhead) { + xVelo = -xVelo; + } + } +} diff --git a/American-Identity-Project/Flag.class b/American-Identity-Project/Flag.class new file mode 100644 index 0000000..d7cc9e1 Binary files /dev/null and b/American-Identity-Project/Flag.class differ diff --git a/American-Identity-Project/Flag.java b/American-Identity-Project/Flag.java new file mode 100644 index 0000000..7ebdf65 --- /dev/null +++ b/American-Identity-Project/Flag.java @@ -0,0 +1,15 @@ +import javax.swing.ImageIcon; + +public class Flag extends Collidable { + public Flag(int x, int y, int w, int h) { + super(x, y, w, h, new ImageIcon("Sprites/Flag.png")); + } + + public void setPosition(int x, int y, int w, int h) { + this.x = x; + this.y = y; + this.width = w; + this.height = h; + this.rect.setBounds(x, y, w, h); + } +} diff --git a/American-Identity-Project/InvisibleTile.class b/American-Identity-Project/InvisibleTile.class new file mode 100644 index 0000000..ccac479 Binary files /dev/null and b/American-Identity-Project/InvisibleTile.class differ diff --git a/American-Identity-Project/InvisibleTile.java b/American-Identity-Project/InvisibleTile.java new file mode 100644 index 0000000..05c0676 --- /dev/null +++ b/American-Identity-Project/InvisibleTile.java @@ -0,0 +1,13 @@ +import java.awt.Graphics; +import javax.swing.ImageIcon; + +public class InvisibleTile extends Tile { + public InvisibleTile(int x, int y, int w, int h) { + super(x, y, w, h, new ImageIcon("Sprites/Bricks/Brick.png")); + } + + @Override + public void draw(Graphics g) { + // draw nothing + } +} diff --git a/American-Identity-Project/LevelLoader.class b/American-Identity-Project/LevelLoader.class new file mode 100644 index 0000000..24a5d36 Binary files /dev/null and b/American-Identity-Project/LevelLoader.class differ diff --git a/American-Identity-Project/LevelLoader.java b/American-Identity-Project/LevelLoader.java new file mode 100644 index 0000000..7f12511 --- /dev/null +++ b/American-Identity-Project/LevelLoader.java @@ -0,0 +1,62 @@ +import java.io.*; +import java.util.*; + +public class LevelLoader { + static int enemyWidth[] = {0, 31, 20, 20, 20, 20, 20, 29, 29, 20, 20}; + static int enemyHeight[] = {0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20}; + + public static void load( + int tileSize, + ArrayList collidables, + ArrayList collectables, + ArrayList enemies, + Flag flag, + Player player, + int level) + throws IOException { + collidables.clear(); + collectables.clear(); + enemies.clear(); + + /* left wall */ collidables.add(new Brick(-20, 0, 20, 2000)); + + BufferedReader br = new BufferedReader(new FileReader("Levels/level" + level + ".txt")); + String line; + int row = 0; + while ((line = br.readLine()) != null) { + for (int col = 0; col < line.length(); col++) { + char c = line.charAt(col); + int x = col * tileSize; + int y = row * tileSize; + switch (c) { + case 'B': + collidables.add(new Brick(x, y, tileSize, tileSize)); + break; + case 'Q': + collidables.add(new PowerBrick(x, y, tileSize, tileSize, 1)); + break; + case 'A': + collectables.add(new Amendment(x, y, tileSize, tileSize)); + break; + case 'F': + flag.setPosition(x, y, tileSize, tileSize); + break; + case 'P': + player.x = x; + player.y = y; + player.rect.x = x; + player.rect.y = y; + break; + case 'E': + enemies.add(new Enemy(x, y, enemyWidth[level], enemyHeight[level], level)); + break; + case 'X': + collidables.add(new InvisibleTile(x, y, tileSize, tileSize)); + break; + } + } + row++; + } + br.close(); + } +} diff --git a/American-Identity-Project/Levels/level1.txt b/American-Identity-Project/Levels/level1.txt new file mode 100644 index 0000000..307d0cd --- /dev/null +++ b/American-Identity-Project/Levels/level1.txt @@ -0,0 +1,20 @@ +.................................................................................................... +.................................................................................................... +.................................................................................................... +.................................................................................................... +.................................................................................................... +.................................................................................................... +.................................................................................................... +.................................................................................................... +.................................................................................................... +................................................................................ +. +. +. +.................................................. +..............................BBBBB....BBBBB..................................A.......................... +............A.......BBBBB........................BBBBB.......BBBBB.........BBQBB................................... +..........BBBBB.......................................................................BBBBB.............. +.................................................................................................... +.P........................A........E...................E...A...............E.....................F.. +BBBBBBBBBBBBBBBBBBBB..BBBBBBBBBBBBBBBBBBBBBBB..BBBBBBBBBBBBBBBBBBBBBBB..BBBBBBBBBBBBBBBBBBBBBBBBBBBB \ No newline at end of file diff --git a/American-Identity-Project/Levels/level10.txt b/American-Identity-Project/Levels/level10.txt new file mode 100644 index 0000000..20113c6 --- /dev/null +++ b/American-Identity-Project/Levels/level10.txt @@ -0,0 +1,24 @@ +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +..P................................................................................................................ +..............................................B................................................................... +BBBBBBBBBBB...................................B.............................................................................. +..............................................B................................................................... +..............................................B.......................................................................BBBBBBBBBBBBBBBBBBBBBBBBB......................................... +..............................................B.......................................................................B.............................................................. +....B.........................................B.......................................................................B............................................................................................. +....B.................BBBB....................B.......................................................................B........E......A.....E...................................................................... +....B.........................................B..........B............................................................B.....BBBBBBBBBBBBBBBBBBBBBB......XXXXXX................................................ +....B.........................................B..........B............................................................B..........................B....................A....................A....................... +....BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB..........B............................................................B..........................B.................XXXXXX..............XXXXXXX............... +.........................................................B............................................................BBBBBBBBBBBBBBBB...........B.............................................................. +.........................................................B...........................................................................B...........B............................XXXXX.............................................. +.........................................................BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...........B................................................................F +.................................................Q...............................................................................................B......................................A...................XXXXXXXXX.... +...................AAAAAAAAAAAAAAAAAA......................................E.......................A....E....................E...................B...................................XXXXXXX........................... +.................BBBBBBBBBBBBBBBBBBBBBBB.....BBBBBBBBBBBBBBBBBBBBB....BBBBBBBBBBBBBBBBBB........BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...................................................................................... +.................................................................................................................. +.................................................................................................................. diff --git a/American-Identity-Project/Levels/level2.txt b/American-Identity-Project/Levels/level2.txt new file mode 100644 index 0000000..df06d20 --- /dev/null +++ b/American-Identity-Project/Levels/level2.txt @@ -0,0 +1,39 @@ +.................................................................................................... +...................................................... +. +. +. +. + +. +. +. +. +. +. +...............................................................................................A........................... +............................................................................................BBBBBB........... +..........................................................................BBBBBB +........................................................................ +............................................................A............ +..........................................................BBBBB +....................................................... +..................................................................................................................A +............................................BBBBB....................................................... +.................................BBBBB.............................................................. +...........................A......................................................................... +.........................BBBBB........................................................................ +.................................................................................................... +.................BBBBB................................................................................... +.................................................................................................... +............................................................................................. +............................................................................................. +................................................................. +. +. +............E..................................... +........BBBBB.............A.................................................................... +.........................QBQQQQQBBBB +.................................................................................................... +.P............................E...................E............................................................F.. +BBBBBBBBBBBBBBBBBB...BBBBBBBBBBBBBBBBB...BBBBBBBBBBBBBBBBBBB...BBBBBBB......................................BBBBBBBBBBBBBBBBBBBB diff --git a/American-Identity-Project/Levels/level3.txt b/American-Identity-Project/Levels/level3.txt new file mode 100644 index 0000000..d8f5d13 --- /dev/null +++ b/American-Identity-Project/Levels/level3.txt @@ -0,0 +1,29 @@ +.................................................................................................................. +.................................................................................................. +.................................................................................................. +....................Q............................................................................. +.................................................................................................. +....................A............................................................................. +...................BBBBB......................................................................... +. +. +.................................BBBBB +.......................................................... +.................................................A................................................ +..............................................BBBBBBBB.. +. +.................................................. +..........................................................BBBBB.. +...................................... +.....................................................................BBBBBBBBBB....A............................A +..................................................................................BBBBB.....BBBBB............BBBBBBB.........E.................... +.......................................................................................................................BBBBBBBB........................................ +.....................................................................................................A................................................................... +....................................................................................................BBBBBB...........................A........................... +.................................................................................................................................BBBBBBBB........ +...............................................................A +..P...................A..................BBBQBBBBB............BBBBBBBB.................BBBQBBBB.................................................................... +.............................................................................................. +................................................................. +...............E.............A..............................................A........................................................................F...... +BBBBBBBB......BBBBBBBBBB....BBBBB...BBBBBBBBBBBBB........................BBBBBBBBBB.......BB................................................BBBBBBBBBB diff --git a/American-Identity-Project/Levels/level4.txt b/American-Identity-Project/Levels/level4.txt new file mode 100644 index 0000000..f7afa6f --- /dev/null +++ b/American-Identity-Project/Levels/level4.txt @@ -0,0 +1,24 @@ +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +..P................................................................................................................ +.................................................................................................................. +BBBBBBBBBBB.................................................................................................................. +.................................................................................................................. +.... +....B.........................................B +....B.........................................B...................... +....B................BB.......................B.................................................................... +....B.........................................B.................................................................... +....B.........................................B..................................................................... +....BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB.............................................................................................................. +................................................ +. +.................................................................. +.................................................................................................................. +...................AAAAAAAAAAAAAAAAAA..........................F............................................ +.................BBBBBBBBBBBBBBBBBBBBBBB.....BBBBBBBBBBBBBBBBBBBBB............................................................................................ +.................................................................................................................. +.................................................................................................................. diff --git a/American-Identity-Project/Levels/level5.txt b/American-Identity-Project/Levels/level5.txt new file mode 100644 index 0000000..d8ee277 --- /dev/null +++ b/American-Identity-Project/Levels/level5.txt @@ -0,0 +1,20 @@ +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +...............................................B................................................................... +...............................................B................................................................... +...............................................B................................................................... +...............................................B................................................................... +...............................................B.................................................................. +...............................................B.................................................................. +...............................................B...............E....E.....A...E...................A................. +...............................................BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB................................ +...............................................B.................................................................. +...............................................B................................................................. +............................Q............................BBBBBBBBBBBBBB.......BBBBBBBBBBBB.......BBBBBBBBBBBB...............A.......................... +..P.........................................E............B.............................................................BBBBBBBBBBB........ +............................A.........BBBBBBBBBBBB...BBBBB........................................................................................................EEEEEEEEE.............F +......A....................BBBBBB.................................................................................................................A...........BBBBBBBBBBBBBBBBBBBBBBBBBBBBB +BBBBBBBBBB.....BBBBBB...............................................................................................................BBBBBBBBBB...BBB...BBB.... diff --git a/American-Identity-Project/Levels/level6.txt b/American-Identity-Project/Levels/level6.txt new file mode 100644 index 0000000..031c4cb --- /dev/null +++ b/American-Identity-Project/Levels/level6.txt @@ -0,0 +1,25 @@ +.....................................................................................................B +.....................................................................................................B +.....................................................................................................B +.....................................................................................................B +.....................................................................................................B +.....................................................................................................B...............BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +.....................................................................................................B...............B...................................B +.....................................................................................................B...............B...................................B +.....................................................................................................B..............BB........BB.........................B +.....................................................................................................B.............B.........BB..........................B +.....................................................................................................B............B..........BB..........................B +.....................................................................................................B............B.........BB...........................B +.............................................................A.......................................B...........B........BB.............................B +........................................BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB....BBBBBBBBBBBB.......BB...............................B +........................................B...............................................................................B................................B +..........................Q.............B.................E............................................................B.................................B +........................................B........BBBBBBBBBBBBBBBB........................................A............B..................................B +............................A...........B........B..............B...........................BBBBBBBBBBBBBBBBBBBBBBBBBB...................................B +........................BBBBBBBBBBBBBBBBB........B..............B...........................B........................B........................A..........B +........................B.......................QB..............B...........................B........................B...................................B +........................B........................B..............B...........................B........................B.......Q...........................B +BBBBBBBBBBBBBBBBBBBBBBBBB....BBBBBBBBBBBBBBBBBBBBB..............B.............Q.............B........................B....................................BBBBBBBB +.............................B..................................B...........................B........................B....................A......................B +.P................E..........B..................................B...........E.........E.....B........................B....A.................................F....B +BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB..................................BBBBBBBBBBBBBBBBBBBBBBBBBBBBB........................BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB diff --git a/American-Identity-Project/Levels/level7.txt b/American-Identity-Project/Levels/level7.txt new file mode 100644 index 0000000..a8d738a --- /dev/null +++ b/American-Identity-Project/Levels/level7.txt @@ -0,0 +1,20 @@ +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +..............................................................A...........................................................E...A +...........................................................BBBBBBBBB.......................A...........................EBBBBBBBBB... +........................................................................................BBBBBBB.....................E.BBBBBBBBBBB... +...................................................................................................................EBBBBBBBBBBBBB +............................................................................E...................................E.BBBBBBBBBBBBBBB +..P........................Q..................EEE.........................BBBBBBB.........................A.....BBBBBBBBBBBBBBBBB.........F +..........................................BBBBBBBBBBBB..................................................BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...................... +........E........A......BBBBBBBBB.......................................................................................... +BBBBBBBBBB.....BBBBBB............................................................................................................. diff --git a/American-Identity-Project/Levels/level8.txt b/American-Identity-Project/Levels/level8.txt new file mode 100644 index 0000000..8e169c2 --- /dev/null +++ b/American-Identity-Project/Levels/level8.txt @@ -0,0 +1,20 @@ +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +..........................................................................................................A........ +....................................................................................................BBBBBBBBB.............. +.................................................................A................................................. +............................................................BBBBBBBBB...................................................... +..................................................E...A....................................................BBBBBBBBBBB......... +.............................................BBBBBBBBBBBB...................................BBBBBB.................................. +..P......................................EE..............................AE.......................................... +.............................E.....BBBBBBBBB...........................BBBBBBB.........................................BBBBBBB........... +.......................A...BBBBBB....................................................BBBBBBB...............................................F +BBBBBBBBBB.....BBBBBB..BBBBBBBBBB...................................................................................................BBBBBBBBBBBBBB........ diff --git a/American-Identity-Project/Levels/level9.txt b/American-Identity-Project/Levels/level9.txt new file mode 100644 index 0000000..ff14db5 --- /dev/null +++ b/American-Identity-Project/Levels/level9.txt @@ -0,0 +1,25 @@ +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.................................................................................................................. +.A................................................................................................................ +XXXX................................................................A............................................. +....................................A.............................XXXX......XXXX........................................... +............XXXXX................XXXXX.........A.........XX........................................................ +....................XXXXXXX...................XXXXXX...............................XXXX...................................... +.................................................................................................................. +.................................................................................................................. +...........................................................................................F...................... +......................................................XXXXXXXXXXX........................XXXXXX.................................... +.................................................................................................................. +.................................................................................................................. +..P.......A........XXXXX...................Q........................................................................... +.........XXXXX...............A......................................................................................X. +............................XXXXXX.......XXXXXXX....................................................................X......... +BBBBB...............................................................................................................X +..................................................................................................................... +........... +. +......................................................................................................... +...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX diff --git a/American-Identity-Project/Platformer.class b/American-Identity-Project/Platformer.class new file mode 100644 index 0000000..9c9a3a7 Binary files /dev/null and b/American-Identity-Project/Platformer.class differ diff --git a/American-Identity-Project/Platformer.java b/American-Identity-Project/Platformer.java new file mode 100644 index 0000000..b8b061e --- /dev/null +++ b/American-Identity-Project/Platformer.java @@ -0,0 +1,590 @@ +import java.awt.*; +import java.awt.event.*; +import java.awt.image.*; +import java.io.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import javax.sound.sampled.*; +import javax.swing.*; + +public class Platformer extends JPanel implements KeyListener, ActionListener { + + // constants + static final int GRAVITY = 1; + static final Color playerColor = Color.RED; + static final Color tileColor = Color.BLUE; + static final Color SKY = new Color(135, 206, 235); + static final Color NIGHT_SKY = new Color(4, 26, 64); + static final int FRICTION = 1; + static final int MAXYVELO = 15; + static final int MAXXVELO = 5; + static final int totalLevels = 10; + static int[] numAm = {4, 5, 10, 18, 6, 6, 5, 5, 6, 23}; + + // game objects + Player player; + ArrayList collidables; + ArrayList collectables; + Flag flag; + ArrayList enemies; + ArrayList projectiles; + + // game vars + int boardWidth; + int boardHeight; + int tileSize; + int enemiesKilled; + Timer gameTimer; + HashMap pressedKeys; + boolean jumpPressed; + int cameraX, cameraY; + int currentLevel; + boolean allCollected; + boolean gameOver; + boolean gameStarted; + Image heart, emptyHeart, slash, amendmentImg, powerImg, pressRImg, endImg, winImg, titleImg; + ArrayList numbers; + Clip jumpSound, shootSound, hitSound, collectSound; + + public Platformer(int boardWidth, int boardHeight, int tileSize) { + // setup game + this.boardWidth = boardWidth; + this.boardHeight = boardHeight; + this.tileSize = tileSize; + setPreferredSize(new Dimension(this.boardWidth, this.boardHeight)); + addKeyListener(this); + this.setFocusable(true); + this.setLayout(null); + + pressedKeys = new HashMap<>(); + jumpPressed = false; + gameOver = false; + gameStarted = false; + setBackground(SKY); + + // setup objects + heart = new ImageIcon("Sprites/Hearts/heart.png").getImage(); + titleImg = new ImageIcon("Sprites/Title.png").getImage(); + emptyHeart = new ImageIcon("Sprites/Hearts/emptyHeart.png").getImage(); + endImg = new ImageIcon("Sprites/end.png").getImage(); + pressRImg = new ImageIcon("Sprites/PressR.png").getImage(); + winImg = new ImageIcon("Sprites/win.png").getImage(); + jumpSound = loadClip("Sounds/jump.wav"); + shootSound = loadClip("Sounds/shoot.wav"); + hitSound = loadClip("Sounds/hit.wav"); + collectSound = loadClip("Sounds/collect.wav"); + gameTimer = new Timer(15, this); + player = new Player(-20, 0, tileSize, tileSize); + collidables = new ArrayList<>(); + collectables = new ArrayList<>(); + enemies = new ArrayList<>(); + projectiles = new ArrayList<>(); + flag = new Flag(-20, 0, tileSize, tileSize); + cameraX = 0; + cameraY = 0; + currentLevel = 0; + enemiesKilled = 0; + numbers = new ArrayList<>(); + for (int i = 0; i < 10; i++) + numbers.add((new ImageIcon("Sprites/Numbers/" + i + ".png")).getImage()); + slash = new ImageIcon("Sprites/Numbers/Slash.png").getImage(); + amendmentImg = new ImageIcon("Sprites/Amendment.png").getImage(); + powerImg = new ImageIcon("Sprites/Powerup1.png").getImage(); + + gameTimer.start(); + + // if i wanna add a button + /* + * JButton gameStart = new JButton("Start Game"); + * gameStart.addActionListener(e -> { + * loadLevel(currentLevel); + * gameTimer.start(); + * this.remove(gameStart); + * this.revalidate(); + * this.repaint(); + * }); + * gameStart.setBorderPainted(false); + * gameStart.setFocusPainted(false); + * gameStart.setBounds(193,200,114,15); + * gameStart.setForeground(new Color(52, 152, 219)); + * this.add(gameStart); + */ + } + + // gameloop + public void gameLoop() { + if (currentLevel > totalLevels) return; + + // lvl 3 arena + if (currentLevel == 4 || currentLevel == 10) { + boolean empty = currentLevel == 4 ? enemies.isEmpty() : enemies.size() <= 5; + if (enemiesKilled < 100 * (currentLevel == 4 ? 1 : 4) && empty) { + Random rand = new Random(); + int xOff = rand.nextInt(700); + + for (int i = 0; i < 10; i++) { + xOff = rand.nextInt(700); + if (xOff + 80 <= player.x && player.x <= xOff + 140) xOff += 60; + enemies.add(new Enemy(100 + xOff, 280, 20, 20, currentLevel)); + } + + } else if (enemiesKilled >= 100 * (currentLevel == 4 ? 1 : 4)) { + collidables.removeIf(c -> c.y == 300 && c.x >= 440 && c.x <= 520); + } + } + + // camera + cameraX = player.x - boardWidth / 2; + cameraX = Math.max(0, cameraX); + cameraY = player.y - boardHeight / 2; + // cameraY = Math.max(0, cameraY); + + // win + allCollected = player.numAmendments >= numAm[currentLevel - 1]; + if (player.collidesWith(flag) && allCollected) { + currentLevel++; + player.health = 3; + if (currentLevel > totalLevels) { + gameTimer.stop(); + System.out.println("You win!"); + return; + } else { + loadLevel(currentLevel); + } + return; + } + + // keys + if (Math.abs(player.xVelo) < MAXXVELO) { + if (isKeyPressed(KeyEvent.VK_D) || isKeyPressed(KeyEvent.VK_RIGHT)) { + player.xVelo += 1; + } else if (isKeyPressed(KeyEvent.VK_A) || isKeyPressed(KeyEvent.VK_LEFT)) { + player.xVelo -= 1; + } + } + if (!isKeyPressed(KeyEvent.VK_D) + && !isKeyPressed(KeyEvent.VK_RIGHT) + && !isKeyPressed(KeyEvent.VK_A) + && !isKeyPressed(KeyEvent.VK_LEFT)) { // friction + if (player.xVelo > 0) { + player.xVelo = Math.max(0, player.xVelo - FRICTION); + } else if (player.xVelo < 0) { + player.xVelo = Math.min(0, player.xVelo + FRICTION); + } + } + + // jump + boolean jumpKeyDown = (isKeyPressed(KeyEvent.VK_W) || isKeyPressed(KeyEvent.VK_UP)); + if (jumpKeyDown && !jumpPressed) { + if (player.onGround) { + playClip(jumpSound); + player.yVelo = -15; + player.onGround = false; + jumpPressed = true; + player.airJumps = 0; + } else if (player.curPower == 1 && player.airJumps < 1) { + playClip(jumpSound); + player.yVelo = -15; + player.airJumps++; + jumpPressed = true; + } + } + if (!jumpKeyDown) { + jumpPressed = false; + } + + // gravity + if (player.yVelo < MAXYVELO) { + player.yVelo += GRAVITY; + } + + // fall out of world + if (player.y > 1400) { // 1400/20 = 70 rows to work with per level + loadLevel(currentLevel); + player.health--; + } + + for (Collectable c : collectables) { + if (c instanceof Powerup) { + Powerup pu = (Powerup) c; + if (pu.yVelo < MAXYVELO && !pu.onGround) { + pu.yVelo += GRAVITY; + } + pu.moveY(pu.yVelo); + for (Collidable col : collidables) { + if (pu.collidesWith(col)) { + pu.yVelo = 0; + pu.onGround = true; + pu.y = ((Tile) col).y - pu.height; + pu.rect.y = pu.y; + } + } + if (player.collidesWith(pu)) { + player.curPower = pu.id; + player.powerTimer = Player.POWER_DURATION; + } + } else if (c instanceof Amendment) { + Amendment am = (Amendment) c; + if (player.collidesWith(am)) { + player.numAmendments++; + playClip(collectSound); + } + } + } + collectables.removeIf(c -> player.collidesWith(c)); + + // update x + player.moveX(player.xVelo); + + // collision with all tiles x + for (Collidable c : collidables) { + if (player.collidesWith(c)) { + player.onCollideX(c); + } + } + + // update y + player.moveY(player.yVelo); + // assume not on ground + player.onGround = false; + + // collision with all tiles y + for (Collidable c : collidables) { + if (player.collidesWith(c)) { + player.onCollideY(c, collectables); + } + } + + // Powerup timer + if (player.curPower > 0) { + player.powerTimer--; + if (player.powerTimer <= 0) { + player.curPower = 0; + } + } + + // update facing + if (player.xVelo > 0) player.facing = 1; + else if (player.xVelo < 0) player.facing = -1; + + // shoot cooldown + if (player.shootCooldown > 0) player.shootCooldown--; + + // invincibility timer + if (player.invincibleTimer > 0) player.invincibleTimer--; + + // shoot + // projectiles + if (isKeyPressed(KeyEvent.VK_SPACE) && player.shootCooldown == 0) { + playClip(shootSound); + int projX = player.facing == 1 ? player.x + player.width : player.x - 10; + projectiles.add(new Projectile(projX, player.y, tileSize, 10, currentLevel, player.facing)); + player.shootCooldown = Player.SHOOT_COOLDOWN; + } + + projectiles.removeIf(p -> p.x < -50 + cameraX || p.x > boardWidth + cameraX + 200); + for (Projectile p : new ArrayList<>(projectiles)) { + p.move(); + // projectile hits tile + for (Collidable c : collidables) { + if (p.collidesWith(c)) { + projectiles.remove(p); + break; + } + } + } + + // update enemies + for (Enemy e : enemies) { + e.patrol(collidables); + // enemy hits player + if (player.collidesWith(e)) { + player.takeDamage(); + playClip(hitSound); + } + } + + // die + if (player.health <= 0) { + System.out.print("Game Over - You Died!"); + gameOver = true; + gameTimer.stop(); + } + + // projectile hits enemy + for (Projectile p : new ArrayList<>(projectiles)) { + for (Enemy e : new ArrayList<>(enemies)) { + if (p.collidesWith(e)) { + enemies.remove(e); + enemiesKilled++; + projectiles.remove(p); + break; + } + } + } + enemies.removeIf(e -> !e.alive); + } + + public void loadLevel(int level) { + projectiles.clear(); + enemiesKilled = 0; + try { + LevelLoader.load(tileSize, collidables, collectables, enemies, flag, player, level); + player.reset(); + player.setLevel(level); + cameraX = 0; + cameraY = 0; + } catch (IOException e) { + System.out.println("Could not load level " + level); + } + } + + // paintComponent + public void paintComponent(Graphics g) { + super.paintComponent(g); + draw(g); + } + + // draw function + public void draw(Graphics g) { + // gameover screen + if (gameOver) { + g.drawImage(endImg, boardWidth / 2 - 100, boardHeight / 2 - 150, null); + g.drawImage(pressRImg, boardWidth / 2 - 80, boardHeight / 2, null); + return; + } + + if (currentLevel > totalLevels) { + g.drawImage(winImg, boardWidth / 2 - 100, boardHeight / 2 - 50, null); + g.drawImage(pressRImg, boardWidth / 2 - 80, boardHeight / 2 + 60, null); + return; + } + + if (currentLevel == 6) { + this.setBackground(NIGHT_SKY); + } + if (currentLevel != 6) { + this.setBackground(SKY); + } + + g.translate(-cameraX, -cameraY); + + player.draw(g); + for (Collidable c : collidables) c.draw(g); + for (Collectable c : collectables) c.draw(g); + for (Enemy e : enemies) e.draw(g); + for (Projectile p : projectiles) p.draw(g); + flag.draw(g); + if (currentLevel == 2) { + g.drawString("Take a leap of faith....", flag.x - 25, flag.y - 400); + } + if (currentLevel == 4 || currentLevel == 10) { + g.drawString("Kill " + 100 * (currentLevel == 4 ? 1 : 4) + " of them...", 220, 200); + } + + if (currentLevel == 10) { + g.drawString("Final Level.... Time for the gauntlet", 80, 80); + } + // flag counter + int amOnes = player.numAmendments % 10; + int amTens = player.numAmendments / 10; + + if (currentLevel > 0 && player.numAmendments < numAm[currentLevel - 1]) { + int lvlAmOnes = numAm[currentLevel - 1] % 10; + int lvlAmTens = numAm[currentLevel - 1] / 10; + if (amTens > 0) g.drawImage(numbers.get(amTens), flag.x - 20, flag.y - 30, null); + g.drawImage(numbers.get(amOnes), flag.x + 5, flag.y - 30, null); + g.drawImage(slash, flag.x + 28, flag.y - 32, null); + if (lvlAmTens > 0) { + g.drawImage(numbers.get(lvlAmTens), flag.x + 55, flag.y - 30, null); + g.drawImage(numbers.get(lvlAmOnes), flag.x + 80, flag.y - 30, null); + g.drawImage(amendmentImg, flag.x + 110, flag.y - 30, null); + + } else { + g.drawImage(numbers.get(lvlAmOnes), flag.x + 55, flag.y - 30, null); + g.drawImage(amendmentImg, flag.x + 85, flag.y - 30, null); + } + } + + g.translate(cameraX, cameraY); + + if (currentLevel == 8) { + BufferedImage darkness = + new BufferedImage(boardWidth, boardHeight, BufferedImage.TYPE_INT_ARGB); + Graphics2D g2 = darkness.createGraphics(); + + // fill entire overlay with fully opaque black + g2.setColor(new Color(0, 0, 0, 255)); + g2.fillRect(0, 0, boardWidth + 1000, boardHeight + 1000); + + // player's position in screen coordinates + int screenX = (player.x + player.width / 2) - cameraX; + int screenY = (player.y + player.height / 2) - cameraY; + + // cut circle centered on player + g2.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR)); + g2.fillOval(screenX - 80, screenY - 100, 160, 160); + + g2.dispose(); + + // draw overlay in screen space (after translate reset) + g.drawImage(darkness, 0, 0, null); + } + + int modAmt = 2000; + int curTime = (int) System.currentTimeMillis() % modAmt; + curTime = Math.abs(curTime); + + // start screen + int startTime = 0; + if (curTime >= 0 && curTime <= modAmt / 4 - 1) startTime = 0; + else if (curTime >= modAmt / 4 && curTime <= modAmt / 2 - 1) startTime = 1; + else if (curTime >= modAmt / 2 && curTime <= modAmt * 3 / 4 - 1) startTime = 2; + else if (curTime >= modAmt * 3 / 4 && curTime <= modAmt - 1) startTime = 3; + + if (currentLevel == 0) { + g.drawImage(titleImg, boardWidth / 2 - 150, boardHeight / 2 - 200, null); + + g.drawString("An American Identity Project", boardWidth / 2 - 75, boardHeight / 2 - 40); + String text = "Press P to Start!"; + int xBase = 340; + int yBase = 400; + int spacing = 8; + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + + // x moves linearly + int x = xBase + (i * spacing); + + // y uses a sine wave + // Math.sin takes radians. We use (startTime + i) to give each letter a + // different phase. + double waveOffset = Math.sin(startTime + i * 0.5) * 10; + int y = yBase + (int) waveOffset; + + g.drawString(String.valueOf(c), x, y); + } + } + + if (currentLevel > 0) { + + // draw hearts: + int heartTime = 0; + if (curTime >= 0 && curTime <= modAmt / 2 - 1) heartTime = 1; + else if (curTime >= modAmt / 2 && curTime <= modAmt - 1) heartTime = 0; + for (int i = 0; i < player.health; i++) { + g.drawImage(heart, (((i + 1) * 20) - 10) + heartTime, 10 + heartTime * 2, null); + } + for (int i = 0; i < 3 - player.health; i++) { + g.drawImage(emptyHeart, (50 - (i * 20)) + heartTime, 10 + heartTime * 2, null); + } + + // draw amendments counter in top right + + if (amTens > 0) g.drawImage(numbers.get(amTens), 315, 10, null); + g.drawImage(numbers.get(amOnes), 340, 10, null); + int lvlAmOnes = numAm[currentLevel - 1] % 10; + int lvlAmTens = numAm[currentLevel - 1] / 10; + g.drawImage(slash, 363, 12, null); + if (lvlAmTens > 0) { + g.drawImage(numbers.get(lvlAmTens), 390, 10, null); + g.drawImage(numbers.get(lvlAmOnes), 415, 10, null); + + g.drawImage(amendmentImg, 445, 10, null); + } else { + g.drawImage(numbers.get(lvlAmOnes), 390, 10, null); + g.drawImage(amendmentImg, 420, 10, null); + } + } + + // draw powerup timer + if (player.curPower == 1) { + int secs = player.powerTimer / 66; + int tens = secs / 10; + int ones = secs % 10; + if (tens > 0) { + g.drawImage(numbers.get(tens), 184, 10, null); + } + g.drawImage(numbers.get(ones), 205, 10, null); + g.drawImage(powerImg, 220, 10, null); + } + } + + // is key pressed + public boolean isKeyPressed(int key) { + return pressedKeys.getOrDefault(key, false); + } + + // every tick + @Override + public void actionPerformed(ActionEvent e) { + if (gameStarted) { + gameLoop(); + } + repaint(); + } + + // check for key presses + @Override + public void keyPressed(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_P) { + if (currentLevel == 0) { + currentLevel = 1; + loadLevel(currentLevel); + gameStarted = true; + } + gameTimer.start(); + return; + } + + if (e.getKeyCode() == KeyEvent.VK_R) { + if (gameOver) { + gameTimer.stop(); + loadLevel(1); + currentLevel = 1; + jumpPressed = false; + player.health = 3; + gameOver = false; + repaint(); + gameTimer.start(); + gameStarted = true; + } + } + + if (e.getKeyCode() == KeyEvent.VK_O) { + currentLevel++; + loadLevel(currentLevel); + } + + pressedKeys.put(e.getKeyCode(), true); + } + + @Override + public void keyReleased(KeyEvent e) { + pressedKeys.put(e.getKeyCode(), false); + } + + // dont need + @Override + public void keyTyped(KeyEvent e) {} + + public Clip loadClip(String path) { + try { + AudioInputStream audio = AudioSystem.getAudioInputStream(new File(path)); + Clip clip = AudioSystem.getClip(); + clip.open(audio); + return clip; + } catch (Exception e) { + System.out.println("Could not load sound: " + path); + return null; + } + } + + public void playClip(Clip clip) { + if (clip != null) { + clip.setFramePosition(0); // rewind to start + clip.start(); + } + } +} diff --git a/American-Identity-Project/Player.class b/American-Identity-Project/Player.class new file mode 100644 index 0000000..518d500 Binary files /dev/null and b/American-Identity-Project/Player.class differ diff --git a/American-Identity-Project/Player.java b/American-Identity-Project/Player.java new file mode 100644 index 0000000..56261e0 --- /dev/null +++ b/American-Identity-Project/Player.java @@ -0,0 +1,112 @@ +import java.util.*; +import javax.swing.ImageIcon; + +public class Player extends Collidable { + + static final int JUMP_HEIGHT = 10; + static final int POWER_DURATION = 2000; // 2000 ticks ≈ 30 seconds + static final int I_FRAMES = 67; // ~1 second + static final int SHOOT_COOLDOWN = 33; // ~0.5 second + + int health; + int yVelo; + int xVelo; + boolean onGround; + int curPower; + int powerTimer; + int airJumps; + int facing; // 1 is right -1 is left + int invincibleTimer; + int shootCooldown; + int numAmendments; + + public Player(int x, int y, int w, int h) { + super(x, y, w, h, new ImageIcon("Sprites/Player/1.png")); + xVelo = 0; + yVelo = 0; + onGround = false; + curPower = 0; + powerTimer = 0; + airJumps = 0; + invincibleTimer = 0; + shootCooldown = 0; + health = 3; + facing = 1; + numAmendments = 0; + } + + public void moveX(int moveX) { + this.x += moveX; + this.rect.x = this.x; + } + + public void moveY(int moveY) { + this.y += moveY; + this.rect.y = this.y; + } + + public void setLevel(int level) { + if (level >= 2) { + this.icon = new ImageIcon("Sprites/Player/2.png"); + return; + } + this.icon = new ImageIcon("Sprites/Player/" + level + ".png"); + } + + public void onCollideX(Collidable other) { + if (other instanceof Tile) { + Tile t = (Tile) other; + int playerCenterX = this.x + this.width / 2; + int tileCenterX = t.x + t.width / 2; + if (playerCenterX > tileCenterX) { // player on right side of tiile + this.x = t.x + t.width; + } else { // player on left side of tile + this.x = t.x - this.width; + } + this.xVelo = 0; + this.rect.x = this.x; + } + } + + public void onCollideY(Collidable other, ArrayList collectables) { + if (other instanceof Tile) { + Tile t = (Tile) other; + if (this.yVelo >= 0) { // falling down, land on top of tile + this.y = t.y - this.height; + onGround = true; + airJumps = 0; + } else { // moving up, hit underside of tile + this.y = t.y + t.height; + if (other instanceof PowerBrick) { + PowerBrick pb = (PowerBrick) other; + if (!pb.hit) { + pb.spawnPower(collectables); + } + } + } + this.yVelo = 0; + this.rect.y = this.y; + } + } + + public void takeDamage() { + if (invincibleTimer <= 0) { + health--; + invincibleTimer = I_FRAMES; + } + } + + public void reset() { + this.rect.x = this.x; + this.rect.y = this.y; + this.xVelo = this.yVelo = 0; + this.curPower = 0; + this.powerTimer = 0; + this.airJumps = 0; + this.onGround = false; + this.invincibleTimer = 0; + this.shootCooldown = 0; + this.facing = 1; + this.numAmendments = 0; + } +} diff --git a/American-Identity-Project/PowerBrick.class b/American-Identity-Project/PowerBrick.class new file mode 100644 index 0000000..b5510f5 Binary files /dev/null and b/American-Identity-Project/PowerBrick.class differ diff --git a/American-Identity-Project/PowerBrick.java b/American-Identity-Project/PowerBrick.java new file mode 100644 index 0000000..6536d1a --- /dev/null +++ b/American-Identity-Project/PowerBrick.java @@ -0,0 +1,24 @@ +import java.util.*; +import javax.swing.ImageIcon; + +public class PowerBrick extends Tile { + int id; + boolean hit; + + public PowerBrick(int x, int y, int w, int h, int id) { + super(x, y, w, h, new ImageIcon("Sprites/Bricks/PowerBrick.png")); + this.id = id; + hit = false; + } + + public void spawnPower(ArrayList powerups) { + this.icon = new ImageIcon("Sprites/Bricks/EmptyBrick.png"); + hit = true; + powerups.add(new Powerup(this.x, this.y - this.height, this.width, this.height, 1)); + } + + public void reset() { + hit = false; + this.icon = new ImageIcon("Sprites/Bricks/PowerBrick.png"); + } +} diff --git a/American-Identity-Project/Powerup.class b/American-Identity-Project/Powerup.class new file mode 100644 index 0000000..ef472f3 Binary files /dev/null and b/American-Identity-Project/Powerup.class differ diff --git a/American-Identity-Project/Powerup.java b/American-Identity-Project/Powerup.java new file mode 100644 index 0000000..1403f8a --- /dev/null +++ b/American-Identity-Project/Powerup.java @@ -0,0 +1,24 @@ +import javax.swing.ImageIcon; + +public class Powerup extends Collectable { + int yVelo, xVelo, id; + boolean onGround; + + public Powerup(int x, int y, int w, int h, int id) { + super(x, y, w, h, new ImageIcon("Sprites/Powerup" + id + ".png")); + xVelo = 0; + yVelo = -7; + onGround = false; + this.id = id; + } + + public void moveX(int moveX) { + this.x += moveX; + this.rect.x = this.x; + } + + public void moveY(int moveY) { + this.y += moveY; + this.rect.y = this.y; + } +} diff --git a/American-Identity-Project/Projectile.class b/American-Identity-Project/Projectile.class new file mode 100644 index 0000000..489b701 Binary files /dev/null and b/American-Identity-Project/Projectile.class differ diff --git a/American-Identity-Project/Projectile.java b/American-Identity-Project/Projectile.java new file mode 100644 index 0000000..40dbd7f --- /dev/null +++ b/American-Identity-Project/Projectile.java @@ -0,0 +1,16 @@ +import javax.swing.ImageIcon; + +public class Projectile extends Collidable { + int xVelo; + + public Projectile(int x, int y, int w, int h, int curLevel, int direction) { + super( + x, y, w, h, new ImageIcon("Sprites/Projectiles/" + ((curLevel == 1) ? "1" : "2") + ".png")); + xVelo = 10 * direction; + } + + public void move() { + this.x += xVelo; + this.rect.x = this.x; + } +} diff --git a/American-Identity-Project/Sounds/collect.wav b/American-Identity-Project/Sounds/collect.wav new file mode 100644 index 0000000..1c29617 Binary files /dev/null and b/American-Identity-Project/Sounds/collect.wav differ diff --git a/American-Identity-Project/Sounds/hit.wav b/American-Identity-Project/Sounds/hit.wav new file mode 100644 index 0000000..a76ae32 Binary files /dev/null and b/American-Identity-Project/Sounds/hit.wav differ diff --git a/American-Identity-Project/Sounds/jump.wav b/American-Identity-Project/Sounds/jump.wav new file mode 100644 index 0000000..8ba729d Binary files /dev/null and b/American-Identity-Project/Sounds/jump.wav differ diff --git a/American-Identity-Project/Sounds/shoot.wav b/American-Identity-Project/Sounds/shoot.wav new file mode 100644 index 0000000..93e83fa Binary files /dev/null and b/American-Identity-Project/Sounds/shoot.wav differ diff --git a/American-Identity-Project/Sprite.class b/American-Identity-Project/Sprite.class new file mode 100644 index 0000000..a18ac5a Binary files /dev/null and b/American-Identity-Project/Sprite.class differ diff --git a/American-Identity-Project/Sprite.java b/American-Identity-Project/Sprite.java new file mode 100644 index 0000000..53d96f4 --- /dev/null +++ b/American-Identity-Project/Sprite.java @@ -0,0 +1,12 @@ +import java.awt.Image; +import javax.swing.ImageIcon; + +public class Sprite { + ImageIcon icon; + Image sprite; + + public Sprite(ImageIcon i) { + icon = i; + sprite = i.getImage(); + } +} diff --git a/American-Identity-Project/Sprites/Amendment.png b/American-Identity-Project/Sprites/Amendment.png new file mode 100644 index 0000000..9357af7 Binary files /dev/null and b/American-Identity-Project/Sprites/Amendment.png differ diff --git a/American-Identity-Project/Sprites/Bricks/Brick.png b/American-Identity-Project/Sprites/Bricks/Brick.png new file mode 100644 index 0000000..7613b41 Binary files /dev/null and b/American-Identity-Project/Sprites/Bricks/Brick.png differ diff --git a/American-Identity-Project/Sprites/Bricks/EmptyBrick.png b/American-Identity-Project/Sprites/Bricks/EmptyBrick.png new file mode 100644 index 0000000..57778e3 Binary files /dev/null and b/American-Identity-Project/Sprites/Bricks/EmptyBrick.png differ diff --git a/American-Identity-Project/Sprites/Bricks/PowerBrick.png b/American-Identity-Project/Sprites/Bricks/PowerBrick.png new file mode 100644 index 0000000..553c855 Binary files /dev/null and b/American-Identity-Project/Sprites/Bricks/PowerBrick.png differ diff --git a/American-Identity-Project/Sprites/Enemies/1.png b/American-Identity-Project/Sprites/Enemies/1.png new file mode 100644 index 0000000..14ce8ec Binary files /dev/null and b/American-Identity-Project/Sprites/Enemies/1.png differ diff --git a/American-Identity-Project/Sprites/Enemies/10.png b/American-Identity-Project/Sprites/Enemies/10.png new file mode 100644 index 0000000..5e627d6 Binary files /dev/null and b/American-Identity-Project/Sprites/Enemies/10.png differ diff --git a/American-Identity-Project/Sprites/Enemies/2.png b/American-Identity-Project/Sprites/Enemies/2.png new file mode 100644 index 0000000..51b6415 Binary files /dev/null and b/American-Identity-Project/Sprites/Enemies/2.png differ diff --git a/American-Identity-Project/Sprites/Enemies/3.png b/American-Identity-Project/Sprites/Enemies/3.png new file mode 100644 index 0000000..6f0f11f Binary files /dev/null and b/American-Identity-Project/Sprites/Enemies/3.png differ diff --git a/American-Identity-Project/Sprites/Enemies/4.png b/American-Identity-Project/Sprites/Enemies/4.png new file mode 100644 index 0000000..3701c47 Binary files /dev/null and b/American-Identity-Project/Sprites/Enemies/4.png differ diff --git a/American-Identity-Project/Sprites/Enemies/5.png b/American-Identity-Project/Sprites/Enemies/5.png new file mode 100644 index 0000000..745462c Binary files /dev/null and b/American-Identity-Project/Sprites/Enemies/5.png differ diff --git a/American-Identity-Project/Sprites/Enemies/6.png b/American-Identity-Project/Sprites/Enemies/6.png new file mode 100644 index 0000000..02bc268 Binary files /dev/null and b/American-Identity-Project/Sprites/Enemies/6.png differ diff --git a/American-Identity-Project/Sprites/Enemies/7.png b/American-Identity-Project/Sprites/Enemies/7.png new file mode 100644 index 0000000..6925fe1 Binary files /dev/null and b/American-Identity-Project/Sprites/Enemies/7.png differ diff --git a/American-Identity-Project/Sprites/Enemies/8.png b/American-Identity-Project/Sprites/Enemies/8.png new file mode 100644 index 0000000..cc296c4 Binary files /dev/null and b/American-Identity-Project/Sprites/Enemies/8.png differ diff --git a/American-Identity-Project/Sprites/Enemies/9.png b/American-Identity-Project/Sprites/Enemies/9.png new file mode 100644 index 0000000..d99a513 Binary files /dev/null and b/American-Identity-Project/Sprites/Enemies/9.png differ diff --git a/American-Identity-Project/Sprites/Flag.png b/American-Identity-Project/Sprites/Flag.png new file mode 100644 index 0000000..854d3ec Binary files /dev/null and b/American-Identity-Project/Sprites/Flag.png differ diff --git a/American-Identity-Project/Sprites/Hearts/emptyHeart.png b/American-Identity-Project/Sprites/Hearts/emptyHeart.png new file mode 100644 index 0000000..f35e155 Binary files /dev/null and b/American-Identity-Project/Sprites/Hearts/emptyHeart.png differ diff --git a/American-Identity-Project/Sprites/Hearts/heart.png b/American-Identity-Project/Sprites/Hearts/heart.png new file mode 100644 index 0000000..9d52396 Binary files /dev/null and b/American-Identity-Project/Sprites/Hearts/heart.png differ diff --git a/American-Identity-Project/Sprites/Numbers/0.png b/American-Identity-Project/Sprites/Numbers/0.png new file mode 100644 index 0000000..9de6e11 Binary files /dev/null and b/American-Identity-Project/Sprites/Numbers/0.png differ diff --git a/American-Identity-Project/Sprites/Numbers/1.png b/American-Identity-Project/Sprites/Numbers/1.png new file mode 100644 index 0000000..dd1b5d9 Binary files /dev/null and b/American-Identity-Project/Sprites/Numbers/1.png differ diff --git a/American-Identity-Project/Sprites/Numbers/2.png b/American-Identity-Project/Sprites/Numbers/2.png new file mode 100644 index 0000000..d7e31b9 Binary files /dev/null and b/American-Identity-Project/Sprites/Numbers/2.png differ diff --git a/American-Identity-Project/Sprites/Numbers/3.png b/American-Identity-Project/Sprites/Numbers/3.png new file mode 100644 index 0000000..d547a82 Binary files /dev/null and b/American-Identity-Project/Sprites/Numbers/3.png differ diff --git a/American-Identity-Project/Sprites/Numbers/4.png b/American-Identity-Project/Sprites/Numbers/4.png new file mode 100644 index 0000000..c72d4cc Binary files /dev/null and b/American-Identity-Project/Sprites/Numbers/4.png differ diff --git a/American-Identity-Project/Sprites/Numbers/5.png b/American-Identity-Project/Sprites/Numbers/5.png new file mode 100644 index 0000000..abf6902 Binary files /dev/null and b/American-Identity-Project/Sprites/Numbers/5.png differ diff --git a/American-Identity-Project/Sprites/Numbers/6.png b/American-Identity-Project/Sprites/Numbers/6.png new file mode 100644 index 0000000..a6eb761 Binary files /dev/null and b/American-Identity-Project/Sprites/Numbers/6.png differ diff --git a/American-Identity-Project/Sprites/Numbers/7.png b/American-Identity-Project/Sprites/Numbers/7.png new file mode 100644 index 0000000..612b773 Binary files /dev/null and b/American-Identity-Project/Sprites/Numbers/7.png differ diff --git a/American-Identity-Project/Sprites/Numbers/8.png b/American-Identity-Project/Sprites/Numbers/8.png new file mode 100644 index 0000000..79c083e Binary files /dev/null and b/American-Identity-Project/Sprites/Numbers/8.png differ diff --git a/American-Identity-Project/Sprites/Numbers/9.png b/American-Identity-Project/Sprites/Numbers/9.png new file mode 100644 index 0000000..18a972e Binary files /dev/null and b/American-Identity-Project/Sprites/Numbers/9.png differ diff --git a/American-Identity-Project/Sprites/Numbers/Slash.png b/American-Identity-Project/Sprites/Numbers/Slash.png new file mode 100644 index 0000000..ba63733 Binary files /dev/null and b/American-Identity-Project/Sprites/Numbers/Slash.png differ diff --git a/American-Identity-Project/Sprites/Player/1.png b/American-Identity-Project/Sprites/Player/1.png new file mode 100644 index 0000000..dedc9c6 Binary files /dev/null and b/American-Identity-Project/Sprites/Player/1.png differ diff --git a/American-Identity-Project/Sprites/Player/2.png b/American-Identity-Project/Sprites/Player/2.png new file mode 100644 index 0000000..e1c7f24 Binary files /dev/null and b/American-Identity-Project/Sprites/Player/2.png differ diff --git a/American-Identity-Project/Sprites/Player/3.png b/American-Identity-Project/Sprites/Player/3.png new file mode 100644 index 0000000..dedc9c6 Binary files /dev/null and b/American-Identity-Project/Sprites/Player/3.png differ diff --git a/American-Identity-Project/Sprites/Powerup1.png b/American-Identity-Project/Sprites/Powerup1.png new file mode 100644 index 0000000..b2cfae3 Binary files /dev/null and b/American-Identity-Project/Sprites/Powerup1.png differ diff --git a/American-Identity-Project/Sprites/PressR.png b/American-Identity-Project/Sprites/PressR.png new file mode 100644 index 0000000..3511962 Binary files /dev/null and b/American-Identity-Project/Sprites/PressR.png differ diff --git a/American-Identity-Project/Sprites/Projectiles/1.png b/American-Identity-Project/Sprites/Projectiles/1.png new file mode 100644 index 0000000..6503a78 Binary files /dev/null and b/American-Identity-Project/Sprites/Projectiles/1.png differ diff --git a/American-Identity-Project/Sprites/Projectiles/2.png b/American-Identity-Project/Sprites/Projectiles/2.png new file mode 100644 index 0000000..7ac65a3 Binary files /dev/null and b/American-Identity-Project/Sprites/Projectiles/2.png differ diff --git a/American-Identity-Project/Sprites/Title.png b/American-Identity-Project/Sprites/Title.png new file mode 100644 index 0000000..4a420c0 Binary files /dev/null and b/American-Identity-Project/Sprites/Title.png differ diff --git a/American-Identity-Project/Sprites/end.png b/American-Identity-Project/Sprites/end.png new file mode 100644 index 0000000..719c2f3 Binary files /dev/null and b/American-Identity-Project/Sprites/end.png differ diff --git a/American-Identity-Project/Sprites/win.png b/American-Identity-Project/Sprites/win.png new file mode 100644 index 0000000..525f70d Binary files /dev/null and b/American-Identity-Project/Sprites/win.png differ diff --git a/American-Identity-Project/Tile.class b/American-Identity-Project/Tile.class new file mode 100644 index 0000000..b360d7c Binary files /dev/null and b/American-Identity-Project/Tile.class differ diff --git a/American-Identity-Project/Tile.java b/American-Identity-Project/Tile.java new file mode 100644 index 0000000..1d197cc --- /dev/null +++ b/American-Identity-Project/Tile.java @@ -0,0 +1,8 @@ +import javax.swing.ImageIcon; + +public class Tile extends Collidable { + + public Tile(int x, int y, int w, int h, ImageIcon i) { + super(x, y, w, h, i); + } +} diff --git a/American-Identity-Project/manifest.txt b/American-Identity-Project/manifest.txt new file mode 100644 index 0000000..4118f36 --- /dev/null +++ b/American-Identity-Project/manifest.txt @@ -0,0 +1,2 @@ +Main-Class: Display +