├── .gitignore ├── Episode 1 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ └── src │ └── dev │ └── codenmore │ └── tilegame │ └── Launcher.java ├── Episode 10 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ └── textures │ │ └── sheet.png │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ └── gfx │ ├── Assets.java │ ├── ImageLoader.java │ └── SpriteSheet.java ├── Episode 11 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ └── textures │ │ └── sheet.png │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── gfx │ ├── Assets.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ └── states │ ├── GameState.java │ └── State.java ├── Episode 12 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ └── textures │ │ └── sheet.png │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── gfx │ ├── Assets.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ └── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java ├── Episode 13 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ └── textures │ │ └── sheet.png │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Assets.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ └── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java ├── Episode 14 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ └── textures │ │ └── sheet.png │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Assets.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ └── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java ├── Episode 15 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ └── textures │ │ └── sheet.png │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Assets.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ └── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java ├── Episode 16 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ └── textures │ │ └── sheet.png │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Assets.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ └── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java ├── Episode 17 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ └── textures │ │ └── sheet.png │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Assets.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ └── worlds │ └── World.java ├── Episode 18 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Assets.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 19 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 2 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Launcher.java │ └── display │ └── Display.java ├── Episode 20 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 21 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 22 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 23 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 24 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 25 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ └── creatures │ │ ├── Creature.java │ │ └── Player.java │ ├── gfx │ ├── Animation.java │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 26 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ ├── EntityManager.java │ ├── creatures │ │ ├── Creature.java │ │ └── Player.java │ └── statics │ │ ├── StaticEntity.java │ │ └── Tree.java │ ├── gfx │ ├── Animation.java │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 27 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ ├── EntityManager.java │ ├── creatures │ │ ├── Creature.java │ │ └── Player.java │ └── statics │ │ ├── StaticEntity.java │ │ └── Tree.java │ ├── gfx │ ├── Animation.java │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 28 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ ├── EntityManager.java │ ├── creatures │ │ ├── Creature.java │ │ └── Player.java │ └── statics │ │ ├── StaticEntity.java │ │ └── Tree.java │ ├── gfx │ ├── Animation.java │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ └── KeyManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 29 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ ├── EntityManager.java │ ├── creatures │ │ ├── Creature.java │ │ └── Player.java │ └── statics │ │ ├── StaticEntity.java │ │ └── Tree.java │ ├── gfx │ ├── Animation.java │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ ├── KeyManager.java │ └── MouseManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 3 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ └── display │ └── Display.java ├── Episode 30 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ ├── EntityManager.java │ ├── creatures │ │ ├── Creature.java │ │ └── Player.java │ └── statics │ │ ├── StaticEntity.java │ │ └── Tree.java │ ├── gfx │ ├── Animation.java │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ ├── KeyManager.java │ └── MouseManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── ui │ ├── ClickListener.java │ ├── UIImageButton.java │ ├── UIManager.java │ └── UIObject.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 31 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ ├── EntityManager.java │ ├── creatures │ │ ├── Creature.java │ │ └── Player.java │ └── statics │ │ ├── Rock.java │ │ ├── StaticEntity.java │ │ └── Tree.java │ ├── gfx │ ├── Animation.java │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ ├── KeyManager.java │ └── MouseManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── ui │ ├── ClickListener.java │ ├── UIImageButton.java │ ├── UIManager.java │ └── UIObject.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 32 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ ├── EntityManager.java │ ├── creatures │ │ ├── Creature.java │ │ └── Player.java │ └── statics │ │ ├── Rock.java │ │ ├── StaticEntity.java │ │ └── Tree.java │ ├── gfx │ ├── Animation.java │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ ├── KeyManager.java │ └── MouseManager.java │ ├── items │ ├── Item.java │ └── ItemManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── ui │ ├── ClickListener.java │ ├── UIImageButton.java │ ├── UIManager.java │ └── UIObject.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 33 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── textures │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ ├── EntityManager.java │ ├── creatures │ │ ├── Creature.java │ │ └── Player.java │ └── statics │ │ ├── Rock.java │ │ ├── StaticEntity.java │ │ └── Tree.java │ ├── gfx │ ├── Animation.java │ ├── Assets.java │ ├── GameCamera.java │ ├── ImageLoader.java │ └── SpriteSheet.java │ ├── input │ ├── KeyManager.java │ └── MouseManager.java │ ├── inventory │ └── Inventory.java │ ├── items │ ├── Item.java │ └── ItemManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── ui │ ├── ClickListener.java │ ├── UIImageButton.java │ ├── UIManager.java │ └── UIObject.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 34 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ ├── README_ASSET_CREDITS.txt │ ├── fonts │ │ ├── Kottke Silkscreen License.txt │ │ └── slkscr.ttf │ ├── textures │ │ ├── inventoryScreen.png │ │ └── sheet.png │ └── worlds │ │ └── world1.txt │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Handler.java │ ├── Launcher.java │ ├── display │ └── Display.java │ ├── entities │ ├── Entity.java │ ├── EntityManager.java │ ├── creatures │ │ ├── Creature.java │ │ └── Player.java │ └── statics │ │ ├── Rock.java │ │ ├── StaticEntity.java │ │ └── Tree.java │ ├── gfx │ ├── Animation.java │ ├── Assets.java │ ├── FontLoader.java │ ├── GameCamera.java │ ├── ImageLoader.java │ ├── SpriteSheet.java │ └── Text.java │ ├── input │ ├── KeyManager.java │ └── MouseManager.java │ ├── inventory │ └── Inventory.java │ ├── items │ ├── Item.java │ └── ItemManager.java │ ├── states │ ├── GameState.java │ ├── MenuState.java │ └── State.java │ ├── tiles │ ├── DirtTile.java │ ├── GrassTile.java │ ├── RockTile.java │ └── Tile.java │ ├── ui │ ├── ClickListener.java │ ├── UIImageButton.java │ ├── UIManager.java │ └── UIObject.java │ ├── utils │ └── Utils.java │ └── worlds │ └── World.java ├── Episode 4 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ └── display │ └── Display.java ├── Episode 5 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ └── display │ └── Display.java ├── Episode 6 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ └── display │ └── Display.java ├── Episode 7 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ └── textures │ │ └── test.png │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ └── gfx │ └── ImageLoader.java ├── Episode 8 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ └── textures │ │ └── sheet.png │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ └── gfx │ ├── ImageLoader.java │ └── SpriteSheet.java ├── Epsiode 9 └── TileGame │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── res │ └── textures │ │ └── sheet.png │ └── src │ └── dev │ └── codenmore │ └── tilegame │ ├── Game.java │ ├── Launcher.java │ ├── display │ └── Display.java │ └── gfx │ ├── Assets.java │ ├── ImageLoader.java │ └── SpriteSheet.java ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | 3 | # Mobile Tools for Java (J2ME) 4 | .mtj.tmp/ 5 | 6 | # Package Files # 7 | *.jar 8 | *.war 9 | *.ear 10 | 11 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 12 | hs_err_pid* 13 | -------------------------------------------------------------------------------- /Episode 1/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Episode 1/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 1/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.4 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning 11 | org.eclipse.jdt.core.compiler.source=1.3 12 | -------------------------------------------------------------------------------- /Episode 1/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | public class Launcher { 4 | 5 | public static void main(String[] args){ 6 | 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /Episode 10/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 10/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 10/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 10/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 10/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 10/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 10/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | player = sheet.crop(0, 0, width, height); 15 | dirt = sheet.crop(width, 0, width, height); 16 | grass = sheet.crop(width * 2, 0, width, height); 17 | stone = sheet.crop(width * 3, 0, width, height); 18 | tree = sheet.crop(0, height, width, height); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 10/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 10/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 11/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 11/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 11/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 11/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 11/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 11/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 11/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | player = sheet.crop(0, 0, width, height); 15 | dirt = sheet.crop(width, 0, width, height); 16 | grass = sheet.crop(width * 2, 0, width, height); 17 | stone = sheet.crop(width * 3, 0, width, height); 18 | tree = sheet.crop(0, height, width, height); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 11/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 11/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 11/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | 6 | public class GameState extends State { 7 | 8 | public GameState(){ 9 | 10 | } 11 | 12 | @Override 13 | public void tick() { 14 | 15 | } 16 | 17 | @Override 18 | public void render(Graphics g) { 19 | g.drawImage(Assets.dirt, 0, 0, null); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /Episode 11/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | 6 | public abstract class State { 7 | 8 | private static State currentState = null; 9 | 10 | public static void setState(State state){ 11 | currentState = state; 12 | } 13 | 14 | public static State getState(){ 15 | return currentState; 16 | } 17 | 18 | //CLASS 19 | public abstract void tick(); 20 | 21 | public abstract void render(Graphics g); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 12/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 12/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 12/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 12/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 12/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 12/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 12/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | player = sheet.crop(0, 0, width, height); 15 | dirt = sheet.crop(width, 0, width, height); 16 | grass = sheet.crop(width * 2, 0, width, height); 17 | stone = sheet.crop(width * 3, 0, width, height); 18 | tree = sheet.crop(0, height, width, height); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 12/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 12/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 12/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | 6 | public class GameState extends State { 7 | 8 | public GameState(){ 9 | 10 | } 11 | 12 | @Override 13 | public void tick() { 14 | 15 | } 16 | 17 | @Override 18 | public void render(Graphics g) { 19 | 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /Episode 12/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | public class MenuState extends State { 6 | 7 | public MenuState(){ 8 | 9 | } 10 | 11 | @Override 12 | public void tick() { 13 | 14 | } 15 | 16 | @Override 17 | public void render(Graphics g) { 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 12/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | 6 | public abstract class State { 7 | 8 | private static State currentState = null; 9 | 10 | public static void setState(State state){ 11 | currentState = state; 12 | } 13 | 14 | public static State getState(){ 15 | return currentState; 16 | } 17 | 18 | //CLASS 19 | public abstract void tick(); 20 | 21 | public abstract void render(Graphics g); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 13/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 13/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 13/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 13/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 13/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 13/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 13/TileGame/src/dev/codenmore/tilegame/entities/Entity.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities; 2 | 3 | import java.awt.Graphics; 4 | 5 | public abstract class Entity { 6 | 7 | protected float x, y; 8 | 9 | public Entity(float x, float y){ 10 | this.x = x; 11 | this.y = y; 12 | } 13 | 14 | public abstract void tick(); 15 | 16 | public abstract void render(Graphics g); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /Episode 13/TileGame/src/dev/codenmore/tilegame/entities/creatures/Creature.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.creatures; 2 | 3 | import dev.codenmore.tilegame.entities.Entity; 4 | 5 | public abstract class Creature extends Entity { 6 | 7 | protected int health; 8 | 9 | public Creature(float x, float y) { 10 | super(x, y); 11 | health = 10; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /Episode 13/TileGame/src/dev/codenmore/tilegame/entities/creatures/Player.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.creatures; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.gfx.Assets; 6 | 7 | public class Player extends Creature { 8 | 9 | public Player(float x, float y) { 10 | super(x, y); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | g.drawImage(Assets.player, (int) x, (int) y, null); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 13/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | player = sheet.crop(0, 0, width, height); 15 | dirt = sheet.crop(width, 0, width, height); 16 | grass = sheet.crop(width * 2, 0, width, height); 17 | stone = sheet.crop(width * 3, 0, width, height); 18 | tree = sheet.crop(0, height, width, height); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 13/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 13/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 13/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.entities.creatures.Player; 6 | 7 | public class GameState extends State { 8 | 9 | private Player player; 10 | 11 | public GameState(){ 12 | player = new Player(100, 100); 13 | } 14 | 15 | @Override 16 | public void tick() { 17 | player.tick(); 18 | } 19 | 20 | @Override 21 | public void render(Graphics g) { 22 | player.render(g); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /Episode 13/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | public class MenuState extends State { 6 | 7 | public MenuState(){ 8 | 9 | } 10 | 11 | @Override 12 | public void tick() { 13 | 14 | } 15 | 16 | @Override 17 | public void render(Graphics g) { 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 13/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | 6 | public abstract class State { 7 | 8 | private static State currentState = null; 9 | 10 | public static void setState(State state){ 11 | currentState = state; 12 | } 13 | 14 | public static State getState(){ 15 | return currentState; 16 | } 17 | 18 | //CLASS 19 | public abstract void tick(); 20 | 21 | public abstract void render(Graphics g); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 14/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 14/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 14/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 14/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 14/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 14/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 14/TileGame/src/dev/codenmore/tilegame/entities/Entity.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities; 2 | 3 | import java.awt.Graphics; 4 | 5 | public abstract class Entity { 6 | 7 | protected float x, y; 8 | 9 | public Entity(float x, float y){ 10 | this.x = x; 11 | this.y = y; 12 | } 13 | 14 | public abstract void tick(); 15 | 16 | public abstract void render(Graphics g); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /Episode 14/TileGame/src/dev/codenmore/tilegame/entities/creatures/Creature.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.creatures; 2 | 3 | import dev.codenmore.tilegame.entities.Entity; 4 | 5 | public abstract class Creature extends Entity { 6 | 7 | protected int health; 8 | 9 | public Creature(float x, float y) { 10 | super(x, y); 11 | health = 10; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /Episode 14/TileGame/src/dev/codenmore/tilegame/entities/creatures/Player.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.creatures; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | import dev.codenmore.tilegame.gfx.Assets; 7 | 8 | public class Player extends Creature { 9 | 10 | private Game game; 11 | 12 | public Player(Game game, float x, float y) { 13 | super(x, y); 14 | this.game = game; 15 | } 16 | 17 | @Override 18 | public void tick() { 19 | if(game.getKeyManager().up) 20 | y -= 3; 21 | if(game.getKeyManager().down) 22 | y += 3; 23 | if(game.getKeyManager().left) 24 | x -= 3; 25 | if(game.getKeyManager().right) 26 | x += 3; 27 | } 28 | 29 | @Override 30 | public void render(Graphics g) { 31 | g.drawImage(Assets.player, (int) x, (int) y, null); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Episode 14/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | player = sheet.crop(0, 0, width, height); 15 | dirt = sheet.crop(width, 0, width, height); 16 | grass = sheet.crop(width * 2, 0, width, height); 17 | stone = sheet.crop(width * 3, 0, width, height); 18 | tree = sheet.crop(0, height, width, height); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 14/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 14/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 14/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | import dev.codenmore.tilegame.entities.creatures.Player; 7 | 8 | public class GameState extends State { 9 | 10 | private Player player; 11 | 12 | public GameState(Game game){ 13 | super(game); 14 | player = new Player(game, 100, 100); 15 | } 16 | 17 | @Override 18 | public void tick() { 19 | player.tick(); 20 | } 21 | 22 | @Override 23 | public void render(Graphics g) { 24 | player.render(g); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Episode 14/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Game game){ 10 | super(game); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 14/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Game game; 23 | 24 | public State(Game game){ 25 | this.game = game; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 15/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 15/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 15/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 15/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 15/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 15/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 15/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | player = sheet.crop(0, 0, width, height); 15 | dirt = sheet.crop(width, 0, width, height); 16 | grass = sheet.crop(width * 2, 0, width, height); 17 | stone = sheet.crop(width * 3, 0, width, height); 18 | tree = sheet.crop(0, height, width, height); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 15/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 15/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 15/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | import dev.codenmore.tilegame.entities.creatures.Player; 7 | 8 | public class GameState extends State { 9 | 10 | private Player player; 11 | 12 | public GameState(Game game){ 13 | super(game); 14 | player = new Player(game, 100, 100); 15 | } 16 | 17 | @Override 18 | public void tick() { 19 | player.tick(); 20 | } 21 | 22 | @Override 23 | public void render(Graphics g) { 24 | player.render(g); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Episode 15/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Game game){ 10 | super(game); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 15/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Game game; 23 | 24 | public State(Game game){ 25 | this.game = game; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 16/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 16/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 16/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 16/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 16/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 16/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 16/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | player = sheet.crop(0, 0, width, height); 15 | dirt = sheet.crop(width, 0, width, height); 16 | grass = sheet.crop(width * 2, 0, width, height); 17 | stone = sheet.crop(width * 3, 0, width, height); 18 | tree = sheet.crop(0, height, width, height); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 16/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 16/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 16/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | import dev.codenmore.tilegame.entities.creatures.Player; 7 | 8 | public class GameState extends State { 9 | 10 | private Player player; 11 | 12 | public GameState(Game game){ 13 | super(game); 14 | player = new Player(game, 100, 100); 15 | } 16 | 17 | @Override 18 | public void tick() { 19 | player.tick(); 20 | } 21 | 22 | @Override 23 | public void render(Graphics g) { 24 | player.render(g); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Episode 16/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Game game){ 10 | super(game); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 16/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Game game; 23 | 24 | public State(Game game){ 25 | this.game = game; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 16/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 16/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 16/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 17/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 17/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 17/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 17/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 17/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 17/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 17/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | player = sheet.crop(0, 0, width, height); 15 | dirt = sheet.crop(width, 0, width, height); 16 | grass = sheet.crop(width * 2, 0, width, height); 17 | stone = sheet.crop(width * 3, 0, width, height); 18 | tree = sheet.crop(0, height, width, height); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 17/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 17/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 17/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | import dev.codenmore.tilegame.entities.creatures.Player; 7 | import dev.codenmore.tilegame.worlds.World; 8 | 9 | public class GameState extends State { 10 | 11 | private Player player; 12 | private World world; 13 | 14 | public GameState(Game game){ 15 | super(game); 16 | player = new Player(game, 100, 100); 17 | world = new World(""); 18 | } 19 | 20 | @Override 21 | public void tick() { 22 | world.tick(); 23 | player.tick(); 24 | } 25 | 26 | @Override 27 | public void render(Graphics g) { 28 | world.render(g); 29 | player.render(g); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 17/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Game game){ 10 | super(game); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 17/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Game game; 23 | 24 | public State(Game game){ 25 | this.game = game; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 17/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 17/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 17/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 18/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 18/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 18/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 18/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 18/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 18/TileGame/res/worlds/world1.txt: -------------------------------------------------------------------------------- 1 | 5 7 2 | 0 0 3 | 0 0 0 0 0 4 | 1 1 1 1 1 5 | 2 2 2 2 2 6 | 0 0 0 0 0 7 | 0 1 2 0 0 8 | 0 0 0 0 0 9 | 0 0 0 0 0 -------------------------------------------------------------------------------- /Episode 18/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 18/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | player = sheet.crop(0, 0, width, height); 15 | dirt = sheet.crop(width, 0, width, height); 16 | grass = sheet.crop(width * 2, 0, width, height); 17 | stone = sheet.crop(width * 3, 0, width, height); 18 | tree = sheet.crop(0, height, width, height); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 18/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 18/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 18/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | import dev.codenmore.tilegame.entities.creatures.Player; 7 | import dev.codenmore.tilegame.worlds.World; 8 | 9 | public class GameState extends State { 10 | 11 | private Player player; 12 | private World world; 13 | 14 | public GameState(Game game){ 15 | super(game); 16 | player = new Player(game, 100, 100); 17 | world = new World("res/worlds/world1.txt"); 18 | } 19 | 20 | @Override 21 | public void tick() { 22 | world.tick(); 23 | player.tick(); 24 | } 25 | 26 | @Override 27 | public void render(Graphics g) { 28 | world.render(g); 29 | player.render(g); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 18/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Game game){ 10 | super(game); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 18/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Game game; 23 | 24 | public State(Game game){ 25 | this.game = game; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 18/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 18/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 18/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 19/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 19/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 19/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 19/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 19/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 19/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 19/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | player = sheet.crop(0, 0, width, height); 15 | dirt = sheet.crop(width, 0, width, height); 16 | grass = sheet.crop(width * 2, 0, width, height); 17 | stone = sheet.crop(width * 3, 0, width, height); 18 | tree = sheet.crop(0, height, width, height); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 19/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 19/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 19/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | import dev.codenmore.tilegame.entities.creatures.Player; 7 | import dev.codenmore.tilegame.worlds.World; 8 | 9 | public class GameState extends State { 10 | 11 | private Player player; 12 | private World world; 13 | 14 | public GameState(Game game){ 15 | super(game); 16 | player = new Player(game, 100, 100); 17 | world = new World(game, "res/worlds/world1.txt"); 18 | } 19 | 20 | @Override 21 | public void tick() { 22 | world.tick(); 23 | player.tick(); 24 | } 25 | 26 | @Override 27 | public void render(Graphics g) { 28 | world.render(g); 29 | player.render(g); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 19/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Game game){ 10 | super(game); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 19/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Game game; 23 | 24 | public State(Game game){ 25 | this.game = game; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 19/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 19/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 19/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 2/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Episode 2/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 2/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.4 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning 11 | org.eclipse.jdt.core.compiler.source=1.3 12 | -------------------------------------------------------------------------------- /Episode 2/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | import dev.codenmore.tilegame.display.Display; 4 | 5 | public class Launcher { 6 | 7 | public static void main(String[] args){ 8 | new Display("Title!", 300, 300); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 20/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 20/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 20/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 20/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 20/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 20/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 20/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | player = sheet.crop(0, 0, width, height); 15 | dirt = sheet.crop(width, 0, width, height); 16 | grass = sheet.crop(width * 2, 0, width, height); 17 | stone = sheet.crop(width * 3, 0, width, height); 18 | tree = sheet.crop(0, height, width, height); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Episode 20/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 20/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 20/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | import dev.codenmore.tilegame.entities.creatures.Player; 7 | import dev.codenmore.tilegame.worlds.World; 8 | 9 | public class GameState extends State { 10 | 11 | private Player player; 12 | private World world; 13 | 14 | public GameState(Game game){ 15 | super(game); 16 | player = new Player(game, 100, 100); 17 | world = new World(game, "res/worlds/world1.txt"); 18 | } 19 | 20 | @Override 21 | public void tick() { 22 | world.tick(); 23 | player.tick(); 24 | } 25 | 26 | @Override 27 | public void render(Graphics g) { 28 | world.render(g); 29 | player.render(g); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 20/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Game game){ 10 | super(game); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 20/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Game; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Game game; 23 | 24 | public State(Game game){ 25 | this.game = game; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 20/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 20/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 20/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 21/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 21/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 21/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 21/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 21/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 21/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 21/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | //PLAYER SPRITES PROVIDED BY: AddFact 15 | player = sheet.crop(width * 4, 0, width, height); 16 | 17 | dirt = sheet.crop(width, 0, width, height); 18 | grass = sheet.crop(width * 2, 0, width, height); 19 | stone = sheet.crop(width * 3, 0, width, height); 20 | tree = sheet.crop(0, 0, width, height); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 21/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 21/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 21/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.entities.creatures.Player; 7 | import dev.codenmore.tilegame.worlds.World; 8 | 9 | public class GameState extends State { 10 | 11 | private Player player; 12 | private World world; 13 | 14 | public GameState(Handler handler){ 15 | super(handler); 16 | world = new World(handler, "res/worlds/world1.txt"); 17 | handler.setWorld(world); 18 | player = new Player(handler, 100, 100); 19 | } 20 | 21 | @Override 22 | public void tick() { 23 | world.tick(); 24 | player.tick(); 25 | } 26 | 27 | @Override 28 | public void render(Graphics g) { 29 | world.render(g); 30 | player.render(g); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /Episode 21/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Handler handler){ 10 | super(handler); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 21/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 21/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 21/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 21/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 22/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 22/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 22/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 22/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 22/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 22/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 22/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | //PLAYER SPRITES PROVIDED BY: AddFact 15 | player = sheet.crop(width * 4, 0, width, height); 16 | 17 | dirt = sheet.crop(width, 0, width, height); 18 | grass = sheet.crop(width * 2, 0, width, height); 19 | stone = sheet.crop(width * 3, 0, width, height); 20 | tree = sheet.crop(0, 0, width, height); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 22/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 22/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 22/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.entities.creatures.Player; 7 | import dev.codenmore.tilegame.worlds.World; 8 | 9 | public class GameState extends State { 10 | 11 | private Player player; 12 | private World world; 13 | 14 | public GameState(Handler handler){ 15 | super(handler); 16 | world = new World(handler, "res/worlds/world1.txt"); 17 | handler.setWorld(world); 18 | player = new Player(handler, 100, 100); 19 | } 20 | 21 | @Override 22 | public void tick() { 23 | world.tick(); 24 | player.tick(); 25 | } 26 | 27 | @Override 28 | public void render(Graphics g) { 29 | world.render(g); 30 | player.render(g); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /Episode 22/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Handler handler){ 10 | super(handler); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 22/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 22/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 22/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 22/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 23/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 23/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 23/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 23/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 23/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 23/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 23/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | //PLAYER SPRITES PROVIDED BY: AddFact 15 | player = sheet.crop(width * 4, 0, width, height); 16 | 17 | dirt = sheet.crop(width, 0, width, height); 18 | grass = sheet.crop(width * 2, 0, width, height); 19 | stone = sheet.crop(width * 3, 0, width, height); 20 | tree = sheet.crop(0, 0, width, height); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 23/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 23/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 23/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.entities.creatures.Player; 7 | import dev.codenmore.tilegame.worlds.World; 8 | 9 | public class GameState extends State { 10 | 11 | private Player player; 12 | private World world; 13 | 14 | public GameState(Handler handler){ 15 | super(handler); 16 | world = new World(handler, "res/worlds/world1.txt"); 17 | handler.setWorld(world); 18 | player = new Player(handler, 100, 100); 19 | } 20 | 21 | @Override 22 | public void tick() { 23 | world.tick(); 24 | player.tick(); 25 | } 26 | 27 | @Override 28 | public void render(Graphics g) { 29 | world.render(g); 30 | player.render(g); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /Episode 23/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Handler handler){ 10 | super(handler); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 23/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 23/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 23/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 23/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 24/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 24/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 24/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 24/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 24/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 24/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 24/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | //PLAYER SPRITES PROVIDED BY: AddFact 15 | player = sheet.crop(width * 4, 0, width, height); 16 | 17 | dirt = sheet.crop(width, 0, width, height); 18 | grass = sheet.crop(width * 2, 0, width, height); 19 | stone = sheet.crop(width * 3, 0, width, height); 20 | tree = sheet.crop(0, 0, width, height); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 24/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 24/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 24/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.entities.creatures.Player; 7 | import dev.codenmore.tilegame.worlds.World; 8 | 9 | public class GameState extends State { 10 | 11 | private Player player; 12 | private World world; 13 | 14 | public GameState(Handler handler){ 15 | super(handler); 16 | world = new World(handler, "res/worlds/world1.txt"); 17 | handler.setWorld(world); 18 | player = new Player(handler, 100, 100); 19 | } 20 | 21 | @Override 22 | public void tick() { 23 | world.tick(); 24 | player.tick(); 25 | } 26 | 27 | @Override 28 | public void render(Graphics g) { 29 | world.render(g); 30 | player.render(g); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /Episode 24/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Handler handler){ 10 | super(handler); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 24/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 24/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 24/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 24/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 25/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 25/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 25/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 25/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 25/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 25/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 25/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 25/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 25/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.entities.creatures.Player; 7 | import dev.codenmore.tilegame.worlds.World; 8 | 9 | public class GameState extends State { 10 | 11 | private Player player; 12 | private World world; 13 | 14 | public GameState(Handler handler){ 15 | super(handler); 16 | world = new World(handler, "res/worlds/world1.txt"); 17 | handler.setWorld(world); 18 | player = new Player(handler, 100, 100); 19 | } 20 | 21 | @Override 22 | public void tick() { 23 | world.tick(); 24 | player.tick(); 25 | } 26 | 27 | @Override 28 | public void render(Graphics g) { 29 | world.render(g); 30 | player.render(g); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /Episode 25/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Handler handler){ 10 | super(handler); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 25/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 25/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 25/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 25/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 26/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 26/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 26/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 26/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 26/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 26/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 26/TileGame/src/dev/codenmore/tilegame/entities/statics/StaticEntity.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.statics; 2 | 3 | import dev.codenmore.tilegame.Handler; 4 | import dev.codenmore.tilegame.entities.Entity; 5 | 6 | public abstract class StaticEntity extends Entity { 7 | 8 | public StaticEntity(Handler handler, float x, float y, int width, int height){ 9 | super(handler, x, y, width, height); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Episode 26/TileGame/src/dev/codenmore/tilegame/entities/statics/Tree.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.statics; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.gfx.Assets; 7 | import dev.codenmore.tilegame.tiles.Tile; 8 | 9 | public class Tree extends StaticEntity { 10 | 11 | public Tree(Handler handler, float x, float y) { 12 | super(handler, x, y, Tile.TILEWIDTH, Tile.TILEHEIGHT * 2); 13 | } 14 | 15 | @Override 16 | public void tick() { 17 | 18 | } 19 | 20 | @Override 21 | public void render(Graphics g) { 22 | g.drawImage(Assets.tree, (int) (x - handler.getGameCamera().getxOffset()), (int) (y - handler.getGameCamera().getyOffset()), width, height, null); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /Episode 26/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 26/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 26/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.worlds.World; 7 | 8 | public class GameState extends State { 9 | 10 | private World world; 11 | 12 | public GameState(Handler handler){ 13 | super(handler); 14 | world = new World(handler, "res/worlds/world1.txt"); 15 | handler.setWorld(world); 16 | } 17 | 18 | @Override 19 | public void tick() { 20 | world.tick(); 21 | } 22 | 23 | @Override 24 | public void render(Graphics g) { 25 | world.render(g); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Episode 26/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Handler handler){ 10 | super(handler); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 26/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 26/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 26/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 26/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 27/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 27/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 27/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 27/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 27/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 27/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 27/TileGame/src/dev/codenmore/tilegame/entities/statics/StaticEntity.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.statics; 2 | 3 | import dev.codenmore.tilegame.Handler; 4 | import dev.codenmore.tilegame.entities.Entity; 5 | 6 | public abstract class StaticEntity extends Entity { 7 | 8 | public StaticEntity(Handler handler, float x, float y, int width, int height){ 9 | super(handler, x, y, width, height); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Episode 27/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 27/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 27/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.worlds.World; 7 | 8 | public class GameState extends State { 9 | 10 | private World world; 11 | 12 | public GameState(Handler handler){ 13 | super(handler); 14 | world = new World(handler, "res/worlds/world1.txt"); 15 | handler.setWorld(world); 16 | } 17 | 18 | @Override 19 | public void tick() { 20 | world.tick(); 21 | } 22 | 23 | @Override 24 | public void render(Graphics g) { 25 | world.render(g); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Episode 27/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Handler handler){ 10 | super(handler); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 27/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 27/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 27/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 27/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 28/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 28/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 28/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 28/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 28/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 28/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 28/TileGame/src/dev/codenmore/tilegame/entities/statics/StaticEntity.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.statics; 2 | 3 | import dev.codenmore.tilegame.Handler; 4 | import dev.codenmore.tilegame.entities.Entity; 5 | 6 | public abstract class StaticEntity extends Entity { 7 | 8 | public StaticEntity(Handler handler, float x, float y, int width, int height){ 9 | super(handler, x, y, width, height); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Episode 28/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 28/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 28/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.worlds.World; 7 | 8 | public class GameState extends State { 9 | 10 | private World world; 11 | 12 | public GameState(Handler handler){ 13 | super(handler); 14 | world = new World(handler, "res/worlds/world1.txt"); 15 | handler.setWorld(world); 16 | } 17 | 18 | @Override 19 | public void tick() { 20 | world.tick(); 21 | } 22 | 23 | @Override 24 | public void render(Graphics g) { 25 | world.render(g); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Episode 28/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | public class MenuState extends State { 8 | 9 | public MenuState(Handler handler){ 10 | super(handler); 11 | } 12 | 13 | @Override 14 | public void tick() { 15 | 16 | } 17 | 18 | @Override 19 | public void render(Graphics g) { 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 28/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 28/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 28/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 28/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 29/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 29/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 29/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 29/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 29/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 29/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 29/TileGame/src/dev/codenmore/tilegame/entities/statics/StaticEntity.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.statics; 2 | 3 | import dev.codenmore.tilegame.Handler; 4 | import dev.codenmore.tilegame.entities.Entity; 5 | 6 | public abstract class StaticEntity extends Entity { 7 | 8 | public StaticEntity(Handler handler, float x, float y, int width, int height){ 9 | super(handler, x, y, width, height); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Episode 29/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 29/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 29/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.worlds.World; 7 | 8 | public class GameState extends State { 9 | 10 | private World world; 11 | 12 | public GameState(Handler handler){ 13 | super(handler); 14 | world = new World(handler, "res/worlds/world1.txt"); 15 | handler.setWorld(world); 16 | } 17 | 18 | @Override 19 | public void tick() { 20 | world.tick(); 21 | } 22 | 23 | @Override 24 | public void render(Graphics g) { 25 | world.render(g); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Episode 29/TileGame/src/dev/codenmore/tilegame/states/MenuState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Color; 4 | import java.awt.Graphics; 5 | 6 | import dev.codenmore.tilegame.Handler; 7 | 8 | public class MenuState extends State { 9 | 10 | public MenuState(Handler handler){ 11 | super(handler); 12 | } 13 | 14 | @Override 15 | public void tick() { 16 | if(handler.getMouseManager().isLeftPressed() && handler.getMouseManager().isRightPressed()) 17 | State.setState(handler.getGame().gameState); 18 | } 19 | 20 | @Override 21 | public void render(Graphics g) { 22 | g.setColor(Color.RED); 23 | g.fillRect(handler.getMouseManager().getMouseX(), handler.getMouseManager().getMouseY(), 8, 8); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /Episode 29/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 29/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 29/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 29/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 3/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Episode 3/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 3/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.4 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning 11 | org.eclipse.jdt.core.compiler.source=1.3 12 | -------------------------------------------------------------------------------- /Episode 3/TileGame/src/dev/codenmore/tilegame/Game.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | import dev.codenmore.tilegame.display.Display; 4 | 5 | public class Game { 6 | 7 | private Display display; 8 | 9 | public int width, height; 10 | 11 | public Game(String title, int width, int height){ 12 | this.width = width; 13 | this.height = height; 14 | 15 | display = new Display(title, width, height); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /Episode 3/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | new Game("Tile Game!", 400, 400); 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Episode 30/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 30/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 30/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 30/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 30/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 30/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 30/TileGame/src/dev/codenmore/tilegame/entities/statics/StaticEntity.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.statics; 2 | 3 | import dev.codenmore.tilegame.Handler; 4 | import dev.codenmore.tilegame.entities.Entity; 5 | 6 | public abstract class StaticEntity extends Entity { 7 | 8 | public StaticEntity(Handler handler, float x, float y, int width, int height){ 9 | super(handler, x, y, width, height); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Episode 30/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 30/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 30/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.worlds.World; 7 | 8 | public class GameState extends State { 9 | 10 | private World world; 11 | 12 | public GameState(Handler handler){ 13 | super(handler); 14 | world = new World(handler, "res/worlds/world1.txt"); 15 | handler.setWorld(world); 16 | } 17 | 18 | @Override 19 | public void tick() { 20 | world.tick(); 21 | } 22 | 23 | @Override 24 | public void render(Graphics g) { 25 | world.render(g); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Episode 30/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 30/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 30/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 30/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 30/TileGame/src/dev/codenmore/tilegame/ui/ClickListener.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.ui; 2 | 3 | public interface ClickListener { 4 | 5 | public void onClick(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Episode 31/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 31/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 31/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 31/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 31/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 31/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 31/TileGame/src/dev/codenmore/tilegame/entities/statics/StaticEntity.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.statics; 2 | 3 | import dev.codenmore.tilegame.Handler; 4 | import dev.codenmore.tilegame.entities.Entity; 5 | 6 | public abstract class StaticEntity extends Entity { 7 | 8 | public StaticEntity(Handler handler, float x, float y, int width, int height){ 9 | super(handler, x, y, width, height); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Episode 31/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 31/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 31/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.worlds.World; 7 | 8 | public class GameState extends State { 9 | 10 | private World world; 11 | 12 | public GameState(Handler handler){ 13 | super(handler); 14 | world = new World(handler, "res/worlds/world1.txt"); 15 | handler.setWorld(world); 16 | } 17 | 18 | @Override 19 | public void tick() { 20 | world.tick(); 21 | } 22 | 23 | @Override 24 | public void render(Graphics g) { 25 | world.render(g); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Episode 31/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 31/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 31/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 31/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 31/TileGame/src/dev/codenmore/tilegame/ui/ClickListener.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.ui; 2 | 3 | public interface ClickListener { 4 | 5 | public void onClick(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Episode 32/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 32/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 32/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 32/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 32/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 32/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 32/TileGame/src/dev/codenmore/tilegame/entities/statics/StaticEntity.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.statics; 2 | 3 | import dev.codenmore.tilegame.Handler; 4 | import dev.codenmore.tilegame.entities.Entity; 5 | 6 | public abstract class StaticEntity extends Entity { 7 | 8 | public StaticEntity(Handler handler, float x, float y, int width, int height){ 9 | super(handler, x, y, width, height); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Episode 32/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 32/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 32/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.worlds.World; 7 | 8 | public class GameState extends State { 9 | 10 | private World world; 11 | 12 | public GameState(Handler handler){ 13 | super(handler); 14 | world = new World(handler, "res/worlds/world1.txt"); 15 | handler.setWorld(world); 16 | } 17 | 18 | @Override 19 | public void tick() { 20 | world.tick(); 21 | } 22 | 23 | @Override 24 | public void render(Graphics g) { 25 | world.render(g); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Episode 32/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 32/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 32/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 32/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 32/TileGame/src/dev/codenmore/tilegame/ui/ClickListener.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.ui; 2 | 3 | public interface ClickListener { 4 | 5 | public void onClick(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Episode 33/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 33/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 33/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 33/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 33/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 33/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 33/TileGame/src/dev/codenmore/tilegame/entities/statics/StaticEntity.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.statics; 2 | 3 | import dev.codenmore.tilegame.Handler; 4 | import dev.codenmore.tilegame.entities.Entity; 5 | 6 | public abstract class StaticEntity extends Entity { 7 | 8 | public StaticEntity(Handler handler, float x, float y, int width, int height){ 9 | super(handler, x, y, width, height); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Episode 33/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 33/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 33/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.worlds.World; 7 | 8 | public class GameState extends State { 9 | 10 | private World world; 11 | 12 | public GameState(Handler handler){ 13 | super(handler); 14 | world = new World(handler, "res/worlds/world1.txt"); 15 | handler.setWorld(world); 16 | } 17 | 18 | @Override 19 | public void tick() { 20 | world.tick(); 21 | } 22 | 23 | @Override 24 | public void render(Graphics g) { 25 | world.render(g); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Episode 33/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 33/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 33/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 33/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 33/TileGame/src/dev/codenmore/tilegame/ui/ClickListener.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.ui; 2 | 3 | public interface ClickListener { 4 | 5 | public void onClick(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Episode 34/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 34/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 34/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 34/TileGame/res/fonts/slkscr.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 34/TileGame/res/fonts/slkscr.ttf -------------------------------------------------------------------------------- /Episode 34/TileGame/res/textures/inventoryScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 34/TileGame/res/textures/inventoryScreen.png -------------------------------------------------------------------------------- /Episode 34/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 34/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 34/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 480); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 34/TileGame/src/dev/codenmore/tilegame/entities/statics/StaticEntity.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.entities.statics; 2 | 3 | import dev.codenmore.tilegame.Handler; 4 | import dev.codenmore.tilegame.entities.Entity; 5 | 6 | public abstract class StaticEntity extends Entity { 7 | 8 | public StaticEntity(Handler handler, float x, float y, int width, int height){ 9 | super(handler, x, y, width, height); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Episode 34/TileGame/src/dev/codenmore/tilegame/gfx/FontLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.Font; 4 | import java.awt.FontFormatException; 5 | import java.io.File; 6 | import java.io.IOException; 7 | 8 | public class FontLoader { 9 | 10 | public static Font loadFont(String path, float size){ 11 | try { 12 | return Font.createFont(Font.TRUETYPE_FONT, new File(path)).deriveFont(Font.PLAIN, size); 13 | } catch (FontFormatException | IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 34/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 34/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Episode 34/TileGame/src/dev/codenmore/tilegame/gfx/Text.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.Color; 4 | import java.awt.Font; 5 | import java.awt.FontMetrics; 6 | import java.awt.Graphics; 7 | 8 | public class Text { 9 | 10 | public static void drawString(Graphics g, String text, int xPos, int yPos, boolean center, Color c, Font font){ 11 | g.setColor(c); 12 | g.setFont(font); 13 | int x = xPos; 14 | int y = yPos; 15 | if(center){ 16 | FontMetrics fm = g.getFontMetrics(font); 17 | x = xPos - fm.stringWidth(text) / 2; 18 | y = (yPos - fm.getHeight() / 2) + fm.getAscent(); 19 | } 20 | g.drawString(text, x, y); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Episode 34/TileGame/src/dev/codenmore/tilegame/states/GameState.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | import dev.codenmore.tilegame.worlds.World; 7 | 8 | public class GameState extends State { 9 | 10 | private World world; 11 | 12 | public GameState(Handler handler){ 13 | super(handler); 14 | world = new World(handler, "res/worlds/world1.txt"); 15 | handler.setWorld(world); 16 | } 17 | 18 | @Override 19 | public void tick() { 20 | world.tick(); 21 | } 22 | 23 | @Override 24 | public void render(Graphics g) { 25 | world.render(g); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Episode 34/TileGame/src/dev/codenmore/tilegame/states/State.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.states; 2 | 3 | import java.awt.Graphics; 4 | 5 | import dev.codenmore.tilegame.Handler; 6 | 7 | 8 | public abstract class State { 9 | 10 | private static State currentState = null; 11 | 12 | public static void setState(State state){ 13 | currentState = state; 14 | } 15 | 16 | public static State getState(){ 17 | return currentState; 18 | } 19 | 20 | //CLASS 21 | 22 | protected Handler handler; 23 | 24 | public State(Handler handler){ 25 | this.handler = handler; 26 | } 27 | 28 | public abstract void tick(); 29 | 30 | public abstract void render(Graphics g); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Episode 34/TileGame/src/dev/codenmore/tilegame/tiles/DirtTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class DirtTile extends Tile { 6 | 7 | public DirtTile(int id) { 8 | super(Assets.dirt, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 34/TileGame/src/dev/codenmore/tilegame/tiles/GrassTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class GrassTile extends Tile { 6 | 7 | public GrassTile(int id) { 8 | super(Assets.grass, id); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 34/TileGame/src/dev/codenmore/tilegame/tiles/RockTile.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.tiles; 2 | 3 | import dev.codenmore.tilegame.gfx.Assets; 4 | 5 | public class RockTile extends Tile { 6 | 7 | public RockTile(int id) { 8 | super(Assets.stone, id); 9 | } 10 | 11 | @Override 12 | public boolean isSolid(){ 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Episode 34/TileGame/src/dev/codenmore/tilegame/ui/ClickListener.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.ui; 2 | 3 | public interface ClickListener { 4 | 5 | public void onClick(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Episode 4/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Episode 4/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 4/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 4/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | new Game("Tile Game!", 640, 480); 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Episode 5/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Episode 5/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 5/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 5/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 6/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Episode 6/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 6/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 6/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 7/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 7/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 7/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 7/TileGame/res/textures/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 7/TileGame/res/textures/test.png -------------------------------------------------------------------------------- /Episode 7/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 7/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 8/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Episode 8/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Episode 8/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Episode 8/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Episode 8/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Episode 8/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Episode 8/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Episode 8/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Epsiode 9/TileGame/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Epsiode 9/TileGame/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TileGame 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Epsiode 9/TileGame/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.8 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.8 12 | -------------------------------------------------------------------------------- /Epsiode 9/TileGame/res/textures/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNMore/New-Beginner-Java-Game-Programming-Src/96c4fc5e8aa750fa319951002ffdd4844cde853f/Epsiode 9/TileGame/res/textures/sheet.png -------------------------------------------------------------------------------- /Epsiode 9/TileGame/src/dev/codenmore/tilegame/Launcher.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame; 2 | 3 | 4 | public class Launcher { 5 | 6 | public static void main(String[] args){ 7 | Game game = new Game("Tile Game!", 640, 360); 8 | game.start(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Epsiode 9/TileGame/src/dev/codenmore/tilegame/gfx/Assets.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class Assets { 6 | 7 | private static final int width = 32, height = 32; 8 | 9 | public static BufferedImage player, dirt, grass, stone, tree; 10 | 11 | public static void init(){ 12 | SpriteSheet sheet = new SpriteSheet(ImageLoader.loadImage("/textures/sheet.png")); 13 | 14 | player = sheet.crop(0, 0, width, height); 15 | dirt = sheet.crop(width, 0, width, height); 16 | grass = sheet.crop(width * 2, 0, width, height); 17 | stone = sheet.crop(width * 3, 0, width, height); 18 | tree = sheet.crop(0, height, width, height); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Epsiode 9/TileGame/src/dev/codenmore/tilegame/gfx/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | import java.io.IOException; 5 | 6 | import javax.imageio.ImageIO; 7 | 8 | public class ImageLoader { 9 | 10 | public static BufferedImage loadImage(String path){ 11 | try { 12 | return ImageIO.read(ImageLoader.class.getResource(path)); 13 | } catch (IOException e) { 14 | e.printStackTrace(); 15 | System.exit(1); 16 | } 17 | return null; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /Epsiode 9/TileGame/src/dev/codenmore/tilegame/gfx/SpriteSheet.java: -------------------------------------------------------------------------------- 1 | package dev.codenmore.tilegame.gfx; 2 | 3 | import java.awt.image.BufferedImage; 4 | 5 | public class SpriteSheet { 6 | 7 | private BufferedImage sheet; 8 | 9 | public SpriteSheet(BufferedImage sheet){ 10 | this.sheet = sheet; 11 | } 12 | 13 | public BufferedImage crop(int x, int y, int width, int height){ 14 | return sheet.getSubimage(x, y, width, height); 15 | } 16 | 17 | } 18 | --------------------------------------------------------------------------------