├── .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 |
--------------------------------------------------------------------------------