diff --git a/src/examples/game_character/GameCharacterExample.java b/src/examples/game_character/GameCharacterExample.java new file mode 100644 index 0000000..ea09aaa --- /dev/null +++ b/src/examples/game_character/GameCharacterExample.java @@ -0,0 +1,87 @@ +package examples.game_character; + +import game_tools.Game; +import game_tools.GameCharacter; +import game_tools.GameControlScene; + +import java.awt.*; +import java.awt.event.KeyEvent; + +public class GameCharacterExample implements GameControlScene { + + Game game = new Game(); + + GameCharacter character1 = new GameCharacter(); + + GameCharacter character2 = new GameCharacter(50, 50); + + GameCharacter character3 = new GameCharacter(100, 100, Color.BLUE); + + GameCharacter character4 = new GameCharacter(150, 150, 96, 214, 163); + + GameCharacter character5 = new GameCharacter(200, 200, 75, 75, "/game_tools/game_character_images/cat_face/cat-face.png"); + + GameCharacter character6 = new GameCharacter(20, 400, GameCharacter.PremadeCharacter.ALIEN); + + GameCharacter character7; + + public GameCharacterExample() { + //initialize character 7 + String[] animationImageLocations = { + "/examples/flappy/bird0.png", + "/examples/flappy/bird1.png", + "/examples/flappy/bird2.png", + "/examples/flappy/bird3.png", + "/examples/flappy/bird4.png", + "/examples/flappy/bird5.png", + }; + character7 = new GameCharacter(275, 275, 100, 100, animationImageLocations); + + //start game + game.setScene(this); + game.start(); + } + + public static void main(String[] args) throws InterruptedException { + GameCharacterExample example = new GameCharacterExample(); + //move character6 + for(int i=0; i<100; i++){ + Thread.sleep(20); + example.character6.moveRight(); + } + } + + @Override + public void draw(Graphics g) { + //background + g.setColor(new Color(100, 150, 230)); + g.fillRect(0, 0, game.screenWidth, game.screenHeight); + + // draw character1 + character1.draw(g); + + //draw character2 + character2.draw(g); + + //draw character3 + character3.draw(g); + + //draw character4 + character4.draw(g); + + //draw character 5 + character5.draw(g); + + //draw character6 + character6.draw(g); + + //draw character6 + character7.draw(g); + } + + @Override + public void keyPressed(KeyEvent e) { + + } + +} diff --git a/src/game_tools/Animation.java b/src/game_tools/Animation.java index c433ea3..d1bfcc6 100644 --- a/src/game_tools/Animation.java +++ b/src/game_tools/Animation.java @@ -19,6 +19,12 @@ public Animation() { this.spritesList = new ArrayList<>(Arrays.asList(sprites)); } + Animation(String... imageFileLocations) { + this.spritesList = new ArrayList<>(Arrays.asList( + Arrays.stream(imageFileLocations).map(Sprite::new).toArray(Sprite[]::new) + )); + } + public void add(Sprite sprite) { this.spritesList.add(sprite); } diff --git a/src/game_tools/GameCharacter.java b/src/game_tools/GameCharacter.java new file mode 100644 index 0000000..480ad8c --- /dev/null +++ b/src/game_tools/GameCharacter.java @@ -0,0 +1,176 @@ +package game_tools; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; + +public class GameCharacter { + + //position + public int x; + public int y; + + //movement + public int verticalMovementSpeed = 2; + public int horizontalMovementSpeed = 2; + public int previousX = x; + public int previousY = y; + + //size + public int width = 50; + public int height = 50; + + //shape color + public Color color = Color.RED; + + //image + public BufferedImage image; + + //animation + public Animation idleAnimation; + public Animation moveRightAnimation; + + //characters + public PremadeCharacter premadeCharacter; + + public GameCharacter() { + } + + public GameCharacter(int x, int y) { + this.x = x; + this.y = y; + } + + public GameCharacter(int x, int y, Color color) { + this.x = x; + this.y = y; + this.color=color; + } + + public GameCharacter(int x, int y, int redValue, int greenValue, int blueValue) { + this(x, y, new Color(redValue, greenValue, blueValue)); + } + + public GameCharacter(int x, int y, Color color, int width, int height) { + this.x = x; + this.y = y; + this.color = color; + this.width = width; + this.height = height; + } + + public GameCharacter(int x, int y, int redValue, int greenValue, int blueValue, int width, int height) { + this(x, y, new Color(redValue, greenValue, blueValue), width, height); + } + + public GameCharacter(int x, int y, int width, int height, String... imageFileLocations) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.idleAnimation = new Animation(imageFileLocations); + } + + public GameCharacter(String imageLocation){ + try { + image = ImageIO.read(getClass().getResourceAsStream(imageLocation)); + } catch (Exception e) { + System.err.println("Failed to load Image: " + imageLocation); + e.printStackTrace(); + } + } + + public GameCharacter(int x, int y, int width, int height, String imageLocation){ + this.x = x; + this.y = y; + this.width = width; + this.height = height; + + try { + image = ImageIO.read(getClass().getResourceAsStream(imageLocation)); + } catch (Exception e) { + System.err.println("Failed to load Image: " + imageLocation); + e.printStackTrace(); + } + } + + public GameCharacter(PremadeCharacter premadeCharacter) { + this.premadeCharacter = premadeCharacter; + if(premadeCharacter == PremadeCharacter.ALIEN) { + //initialize idle animation + String[] idleAnimationImageLocations = { + "/game_tools/game_character_images/alien/idle/red__0000_idle_1.png", + "/game_tools/game_character_images/alien/idle/red__0001_idle_2.png", + "/game_tools/game_character_images/alien/idle/red__0002_idle_3.png" + }; + this.idleAnimation = new Animation(idleAnimationImageLocations); + //initialize move right animation + String[] moveRightAnimationImageLocations = { + "/game_tools/game_character_images/alien/walk/red__0006_walk_1.png", + "/game_tools/game_character_images/alien/walk/red__0007_walk_2.png", + "/game_tools/game_character_images/alien/walk/red__0008_walk_3.png", + "/game_tools/game_character_images/alien/walk/red__0009_walk_4.png", + "/game_tools/game_character_images/alien/walk/red__0010_walk_5.png", + "/game_tools/game_character_images/alien/walk/red__0011_walk_6.png", + }; + this.moveRightAnimation = new Animation(moveRightAnimationImageLocations); + + //adjust framerate + idleAnimation.frameRate = 10; + moveRightAnimation.frameRate = 10; + } + } + + public GameCharacter(int x, int y, PremadeCharacter premadeCharacter) { + this(premadeCharacter); + this.x = x; + this.y = y; + } + + public void moveRight(){ + this.x += horizontalMovementSpeed; + } + + public void moveLeft(){ + this.x -= horizontalMovementSpeed; + } + + public void moveUp(){ + this.y -= verticalMovementSpeed; + } + + public void moveDown(){ + this.y += verticalMovementSpeed; + } + + public void draw(Graphics g) { + if(idleAnimation != null){ + idleAnimation.draw(g, x, y, width, height); + if(moveRightAnimation != null && previousX < x){ + moveRightAnimation.draw(g, x, y, width, height); + previousX = x; + } + } + else if(image != null){ + g.drawImage(image, x, y, width, height, null); + } + else{ + g.setColor(color); + g.fillRect(x, y, width, height); + } +// g.setColor(Color.YELLOW); +// moveMouth(g); +// ghost.draw(g); +// x++; +// count++; + } + //if shape == null + //draw rect + + + public enum PremadeCharacter { + ALIEN, + DOG, + } + +} diff --git a/src/game_tools/game_character_images/alien/attack/red__0031_attack_1.png b/src/game_tools/game_character_images/alien/attack/red__0031_attack_1.png new file mode 100644 index 0000000..4f9a109 Binary files /dev/null and b/src/game_tools/game_character_images/alien/attack/red__0031_attack_1.png differ diff --git a/src/game_tools/game_character_images/alien/attack/red__0032_attack_2.png b/src/game_tools/game_character_images/alien/attack/red__0032_attack_2.png new file mode 100644 index 0000000..ac7ebb1 Binary files /dev/null and b/src/game_tools/game_character_images/alien/attack/red__0032_attack_2.png differ diff --git a/src/game_tools/game_character_images/alien/attack/red__0033_attack_3.png b/src/game_tools/game_character_images/alien/attack/red__0033_attack_3.png new file mode 100644 index 0000000..f2273b1 Binary files /dev/null and b/src/game_tools/game_character_images/alien/attack/red__0033_attack_3.png differ diff --git a/src/game_tools/game_character_images/alien/attack/red__0034_attack_4.png b/src/game_tools/game_character_images/alien/attack/red__0034_attack_4.png new file mode 100644 index 0000000..8a2ec23 Binary files /dev/null and b/src/game_tools/game_character_images/alien/attack/red__0034_attack_4.png differ diff --git a/src/game_tools/game_character_images/alien/dead/red__0022_dead_1.png b/src/game_tools/game_character_images/alien/dead/red__0022_dead_1.png new file mode 100644 index 0000000..a2422ea Binary files /dev/null and b/src/game_tools/game_character_images/alien/dead/red__0022_dead_1.png differ diff --git a/src/game_tools/game_character_images/alien/dead/red__0023_dead_2.png b/src/game_tools/game_character_images/alien/dead/red__0023_dead_2.png new file mode 100644 index 0000000..34354e9 Binary files /dev/null and b/src/game_tools/game_character_images/alien/dead/red__0023_dead_2.png differ diff --git a/src/game_tools/game_character_images/alien/dead/red__0024_dead_3.png b/src/game_tools/game_character_images/alien/dead/red__0024_dead_3.png new file mode 100644 index 0000000..5347971 Binary files /dev/null and b/src/game_tools/game_character_images/alien/dead/red__0024_dead_3.png differ diff --git a/src/game_tools/game_character_images/alien/dead/red__0025_dead_4.png b/src/game_tools/game_character_images/alien/dead/red__0025_dead_4.png new file mode 100644 index 0000000..9984a58 Binary files /dev/null and b/src/game_tools/game_character_images/alien/dead/red__0025_dead_4.png differ diff --git a/src/game_tools/game_character_images/alien/dead/red__0026_dead_5.png b/src/game_tools/game_character_images/alien/dead/red__0026_dead_5.png new file mode 100644 index 0000000..e8fdae8 Binary files /dev/null and b/src/game_tools/game_character_images/alien/dead/red__0026_dead_5.png differ diff --git a/src/game_tools/game_character_images/alien/fire/red__0035_fire_1.png b/src/game_tools/game_character_images/alien/fire/red__0035_fire_1.png new file mode 100644 index 0000000..377830d Binary files /dev/null and b/src/game_tools/game_character_images/alien/fire/red__0035_fire_1.png differ diff --git a/src/game_tools/game_character_images/alien/fire/red__0036_fire_2.png b/src/game_tools/game_character_images/alien/fire/red__0036_fire_2.png new file mode 100644 index 0000000..829a849 Binary files /dev/null and b/src/game_tools/game_character_images/alien/fire/red__0036_fire_2.png differ diff --git a/src/game_tools/game_character_images/alien/fire/red__0037_fire_3.png b/src/game_tools/game_character_images/alien/fire/red__0037_fire_3.png new file mode 100644 index 0000000..114ff40 Binary files /dev/null and b/src/game_tools/game_character_images/alien/fire/red__0037_fire_3.png differ diff --git a/src/game_tools/game_character_images/alien/fire/red__0038_fire_4.png b/src/game_tools/game_character_images/alien/fire/red__0038_fire_4.png new file mode 100644 index 0000000..22d01ca Binary files /dev/null and b/src/game_tools/game_character_images/alien/fire/red__0038_fire_4.png differ diff --git a/src/game_tools/game_character_images/alien/fire/red__0039_fire_5.png b/src/game_tools/game_character_images/alien/fire/red__0039_fire_5.png new file mode 100644 index 0000000..929bc6b Binary files /dev/null and b/src/game_tools/game_character_images/alien/fire/red__0039_fire_5.png differ diff --git a/src/game_tools/game_character_images/alien/fire/red__0040_fire_6.png b/src/game_tools/game_character_images/alien/fire/red__0040_fire_6.png new file mode 100644 index 0000000..1be189e Binary files /dev/null and b/src/game_tools/game_character_images/alien/fire/red__0040_fire_6.png differ diff --git a/src/game_tools/game_character_images/alien/fire/red__0041_fire_7.png b/src/game_tools/game_character_images/alien/fire/red__0041_fire_7.png new file mode 100644 index 0000000..5b68fdf Binary files /dev/null and b/src/game_tools/game_character_images/alien/fire/red__0041_fire_7.png differ diff --git a/src/game_tools/game_character_images/alien/fire/red__0042_fire_8.png b/src/game_tools/game_character_images/alien/fire/red__0042_fire_8.png new file mode 100644 index 0000000..5e42ee1 Binary files /dev/null and b/src/game_tools/game_character_images/alien/fire/red__0042_fire_8.png differ diff --git a/src/game_tools/game_character_images/alien/fire/red__0043_fire_9.png b/src/game_tools/game_character_images/alien/fire/red__0043_fire_9.png new file mode 100644 index 0000000..1ba97c2 Binary files /dev/null and b/src/game_tools/game_character_images/alien/fire/red__0043_fire_9.png differ diff --git a/src/game_tools/game_character_images/alien/fire/red__0044_fire_10.png b/src/game_tools/game_character_images/alien/fire/red__0044_fire_10.png new file mode 100644 index 0000000..68bc955 Binary files /dev/null and b/src/game_tools/game_character_images/alien/fire/red__0044_fire_10.png differ diff --git a/src/game_tools/game_character_images/alien/fire/red__0045_fire_11.png b/src/game_tools/game_character_images/alien/fire/red__0045_fire_11.png new file mode 100644 index 0000000..6598356 Binary files /dev/null and b/src/game_tools/game_character_images/alien/fire/red__0045_fire_11.png differ diff --git a/src/game_tools/game_character_images/alien/hurt/red__0018_hurt_1.png b/src/game_tools/game_character_images/alien/hurt/red__0018_hurt_1.png new file mode 100644 index 0000000..4a89a37 Binary files /dev/null and b/src/game_tools/game_character_images/alien/hurt/red__0018_hurt_1.png differ diff --git a/src/game_tools/game_character_images/alien/hurt/red__0019_hurt_2.png b/src/game_tools/game_character_images/alien/hurt/red__0019_hurt_2.png new file mode 100644 index 0000000..0663bc0 Binary files /dev/null and b/src/game_tools/game_character_images/alien/hurt/red__0019_hurt_2.png differ diff --git a/src/game_tools/game_character_images/alien/hurt/red__0020_hurt_3.png b/src/game_tools/game_character_images/alien/hurt/red__0020_hurt_3.png new file mode 100644 index 0000000..3a20885 Binary files /dev/null and b/src/game_tools/game_character_images/alien/hurt/red__0020_hurt_3.png differ diff --git a/src/game_tools/game_character_images/alien/hurt/red__0021_hurt_4.png b/src/game_tools/game_character_images/alien/hurt/red__0021_hurt_4.png new file mode 100644 index 0000000..5454125 Binary files /dev/null and b/src/game_tools/game_character_images/alien/hurt/red__0021_hurt_4.png differ diff --git a/src/game_tools/game_character_images/alien/idle/red__0000_idle_1.png b/src/game_tools/game_character_images/alien/idle/red__0000_idle_1.png new file mode 100644 index 0000000..f8aa6b1 Binary files /dev/null and b/src/game_tools/game_character_images/alien/idle/red__0000_idle_1.png differ diff --git a/src/game_tools/game_character_images/alien/idle/red__0001_idle_2.png b/src/game_tools/game_character_images/alien/idle/red__0001_idle_2.png new file mode 100644 index 0000000..f2c6457 Binary files /dev/null and b/src/game_tools/game_character_images/alien/idle/red__0001_idle_2.png differ diff --git a/src/game_tools/game_character_images/alien/idle/red__0002_idle_3.png b/src/game_tools/game_character_images/alien/idle/red__0002_idle_3.png new file mode 100644 index 0000000..4eeda8e Binary files /dev/null and b/src/game_tools/game_character_images/alien/idle/red__0002_idle_3.png differ diff --git a/src/game_tools/game_character_images/alien/jump/red__0027_jump_1.png b/src/game_tools/game_character_images/alien/jump/red__0027_jump_1.png new file mode 100644 index 0000000..f158e0c Binary files /dev/null and b/src/game_tools/game_character_images/alien/jump/red__0027_jump_1.png differ diff --git a/src/game_tools/game_character_images/alien/jump/red__0028_jump_2.png b/src/game_tools/game_character_images/alien/jump/red__0028_jump_2.png new file mode 100644 index 0000000..94175ee Binary files /dev/null and b/src/game_tools/game_character_images/alien/jump/red__0028_jump_2.png differ diff --git a/src/game_tools/game_character_images/alien/jump/red__0029_jump_3.png b/src/game_tools/game_character_images/alien/jump/red__0029_jump_3.png new file mode 100644 index 0000000..8193db0 Binary files /dev/null and b/src/game_tools/game_character_images/alien/jump/red__0029_jump_3.png differ diff --git a/src/game_tools/game_character_images/alien/jump/red__0030_jump_4.png b/src/game_tools/game_character_images/alien/jump/red__0030_jump_4.png new file mode 100644 index 0000000..4cecbb8 Binary files /dev/null and b/src/game_tools/game_character_images/alien/jump/red__0030_jump_4.png differ diff --git a/src/game_tools/game_character_images/alien/run/red__0012_run_1.png b/src/game_tools/game_character_images/alien/run/red__0012_run_1.png new file mode 100644 index 0000000..08f98b9 Binary files /dev/null and b/src/game_tools/game_character_images/alien/run/red__0012_run_1.png differ diff --git a/src/game_tools/game_character_images/alien/run/red__0013_run_2.png b/src/game_tools/game_character_images/alien/run/red__0013_run_2.png new file mode 100644 index 0000000..bafb60b Binary files /dev/null and b/src/game_tools/game_character_images/alien/run/red__0013_run_2.png differ diff --git a/src/game_tools/game_character_images/alien/run/red__0014_run_3.png b/src/game_tools/game_character_images/alien/run/red__0014_run_3.png new file mode 100644 index 0000000..27c7909 Binary files /dev/null and b/src/game_tools/game_character_images/alien/run/red__0014_run_3.png differ diff --git a/src/game_tools/game_character_images/alien/run/red__0015_run_4.png b/src/game_tools/game_character_images/alien/run/red__0015_run_4.png new file mode 100644 index 0000000..eb3089e Binary files /dev/null and b/src/game_tools/game_character_images/alien/run/red__0015_run_4.png differ diff --git a/src/game_tools/game_character_images/alien/run/red__0016_run_5.png b/src/game_tools/game_character_images/alien/run/red__0016_run_5.png new file mode 100644 index 0000000..08f98b9 Binary files /dev/null and b/src/game_tools/game_character_images/alien/run/red__0016_run_5.png differ diff --git a/src/game_tools/game_character_images/alien/run/red__0017_run_6.png b/src/game_tools/game_character_images/alien/run/red__0017_run_6.png new file mode 100644 index 0000000..d1b9816 Binary files /dev/null and b/src/game_tools/game_character_images/alien/run/red__0017_run_6.png differ diff --git a/src/game_tools/game_character_images/alien/run/red__0018_run_8.png b/src/game_tools/game_character_images/alien/run/red__0018_run_8.png new file mode 100644 index 0000000..ac7b497 Binary files /dev/null and b/src/game_tools/game_character_images/alien/run/red__0018_run_8.png differ diff --git a/src/game_tools/game_character_images/alien/turn/red__0003_turn_1.png b/src/game_tools/game_character_images/alien/turn/red__0003_turn_1.png new file mode 100644 index 0000000..c933006 Binary files /dev/null and b/src/game_tools/game_character_images/alien/turn/red__0003_turn_1.png differ diff --git a/src/game_tools/game_character_images/alien/turn/red__0004_turn_2.png b/src/game_tools/game_character_images/alien/turn/red__0004_turn_2.png new file mode 100644 index 0000000..173b562 Binary files /dev/null and b/src/game_tools/game_character_images/alien/turn/red__0004_turn_2.png differ diff --git a/src/game_tools/game_character_images/alien/turn/red__0005_turn_3.png b/src/game_tools/game_character_images/alien/turn/red__0005_turn_3.png new file mode 100644 index 0000000..dfcc509 Binary files /dev/null and b/src/game_tools/game_character_images/alien/turn/red__0005_turn_3.png differ diff --git a/src/game_tools/game_character_images/alien/walk/red__0006_walk_1.png b/src/game_tools/game_character_images/alien/walk/red__0006_walk_1.png new file mode 100644 index 0000000..d7d1a0f Binary files /dev/null and b/src/game_tools/game_character_images/alien/walk/red__0006_walk_1.png differ diff --git a/src/game_tools/game_character_images/alien/walk/red__0007_walk_2.png b/src/game_tools/game_character_images/alien/walk/red__0007_walk_2.png new file mode 100644 index 0000000..1245b8f Binary files /dev/null and b/src/game_tools/game_character_images/alien/walk/red__0007_walk_2.png differ diff --git a/src/game_tools/game_character_images/alien/walk/red__0008_walk_3.png b/src/game_tools/game_character_images/alien/walk/red__0008_walk_3.png new file mode 100644 index 0000000..693c55c Binary files /dev/null and b/src/game_tools/game_character_images/alien/walk/red__0008_walk_3.png differ diff --git a/src/game_tools/game_character_images/alien/walk/red__0009_walk_4.png b/src/game_tools/game_character_images/alien/walk/red__0009_walk_4.png new file mode 100644 index 0000000..50eb7c8 Binary files /dev/null and b/src/game_tools/game_character_images/alien/walk/red__0009_walk_4.png differ diff --git a/src/game_tools/game_character_images/alien/walk/red__0010_walk_5.png b/src/game_tools/game_character_images/alien/walk/red__0010_walk_5.png new file mode 100644 index 0000000..2fa0493 Binary files /dev/null and b/src/game_tools/game_character_images/alien/walk/red__0010_walk_5.png differ diff --git a/src/game_tools/game_character_images/alien/walk/red__0011_walk_6.png b/src/game_tools/game_character_images/alien/walk/red__0011_walk_6.png new file mode 100644 index 0000000..250007b Binary files /dev/null and b/src/game_tools/game_character_images/alien/walk/red__0011_walk_6.png differ diff --git a/src/game_tools/game_character_images/cat_face/cat-face.png b/src/game_tools/game_character_images/cat_face/cat-face.png new file mode 100644 index 0000000..0c57e35 Binary files /dev/null and b/src/game_tools/game_character_images/cat_face/cat-face.png differ