zeldaremade's People
Forkers
themaximumviableproductszeldaremade's Issues
Split NPC and Enemies
TODO:
- Create an Enemy Interface that includes methods that enemies share.
- Refactor enemy classes to extend the enemy interface
NPCs: Merchant, Old man, Flame
Enemies: Bat, Skeleton, Dog, Big and small jellies, hand, trap, snake, dragon, dinosaur
Player Inventory
Finish NPCs/Enemies
Add more dinosaur movement
Code Refactoring
Clean Up
Create Player Sprite Classes
Create all sprite classes (ISprite implementations) for the player
- Draw method with correct source bounding box
- If animated sprite, cycle through animation frames
Create All Sprite Classes
Create concrete Sprite classes (derived from ISprite) for each enemy/NPC, item, player, and block
Create Command Classes
- Cycle forward/previous for blocks, items, enemies
- Reset command
- Quit command
Player commands - attack using sword
- WASD walking
- Switch items (1,2,3, etc)
- Take damage
Mouse Controller
Collisions
Fix sword upwards attack animation
When Link attacks with sword upwards, he should stay in the same position instead of moving downwards
Create interface for entites
- Movement
- Animation
- Using items
- Take damage
IEntity
- Link and Enemies derive from this
- Animation, using items, (potentially) taking damage
IEnemy
- derives from IEntity
- method for automated movement
IPlayer
- derives from IEntity
- methods for movement via input (using command design pattern)
Player Logic
Should include:
- Movement
- Actions
- Damage
Interface for Blocks
- Draw
- Update
Class for each Item
After #5 is completed, create a class for each item
- Each item has to display/cycle through it's sprites
- Register each item class to the command that cycles through them
- No interaction with other things currently
Store room layout as tree/graph
Depends on Level loading
Collision Loop
Player Damage
Knock-back and animation
Split Enemies and NPCs
TODO:
- Create an Enemy Interface that includes methods that enemies share.
- Refactor enemy classes to extend the enemy interface
NPCs: Merchant, Old man, Flame
Enemies: Bat, Skeleton, Dog, Big and small jellies, hand, trap, snake, dragon, dinosaur
Interface for Commands
Solidify command interface
Clicking to change rooms
Depend on Store room layout as tree/graph
Clean Up
Complete Sprint Planning for Sprint 2
Make sure all team members have been added to the project.
Enter start and end dates for Sprint 2.
Add several product backlog items (rows on the board) for the requirements for this sprint (controllers, commands, objects, sprites, etc.) and assign them to Sprint 2.
Add tasks with effort amounts and assign each to someone.
Examples could include:
Add a task for creating interfaces (or you can let the person responsible for each part of the implementation choose when to provide interfaces).
Add a task for creating a Link class.
Add a task for handling Link's state transitions.
Add a task for creating enemy classes.
Add a task for creating item classes.
Add a task for creating block class(es).
Add tasks for implementing commands and controllers.
Add a task to implement keyboard input.
Some advice: for Sprint 2 the player character logic is disproportionately larger than most of the other features, so it is recommended to split this work between at least two members.
Link Damage
Likely using decorator pattern
Create NPC Interface with NPCSpriteFactory
Create Block Sprite Classes
Create all sprite classes (ISprite implementations) for all blocks
- Draw method with correct source bounding box
- If animated sprite, cycle through animation frames
Create Item Sprite Classes
Create all sprite classes (ISprite implementations) for all items
- Draw method with correct source bounding box
- If animated sprite, cycle through animation frames
Code Refactoring
Enemy Logic
- Each enemy has it's own movement path
- Each enemy has it's own projectile
Create Player Sprites
Player sprites include:
- link movement animation
- link use item or weapon animation
- link pickup item animation
- link use sword animation
Creating all the sprites
https://www.spriters-resource.com/nes/legendofzelda/
Player
• Link (animated)
• Wooden Sword
• Sword beam
• Arrows
• Boomerang
• Bombs
• Blue Candle
• Blue Potion
• Blue ring
Items
• Compass
• Key
• Heart container
• Wooden boomerang
• Bow
• Heart
• Rupee
• Arrow
• Bomb
• Fairy
• Clock
Enemies and NPCs
• Bat (keese)
• Skeleton (stalfos)
• Dog-like monster (goriya)
• Jelly (gel-small and zol-big)
• Hand (wall master)
• Spike cross (trap)
• Snake (rope)
• Boss/Dragon (aquamentus)
• Boss/Dragon fireballs
• Boss/Dinosaur (Dodongo)
• Old man
• Merchant
• Flame
Environment – interactive
• Statues
• Square, sometimes movable block
• Walls
• Locked door
• Shut door
• Open door
• Bombed opening
• Gap tile
• Stairs
• Ladder tile
• Brick tile
• Fire
Environment – non-interactive
• Floor tile
• Room border
Collision Detection
All logic for collision detection
General Code Refactoring
Consider dependency graphs from class
Create Enemy/NPC Sprites
Create Item Sprites
Interface for Items
- Item movement
- Command to cycle through items shown
- Animation
Class for each Block
- Implement draw and update (consider animated blocks)
- Register block classes to command that cycles through them
Room Storage/Loading
Epic
Player Movement
WASD controls move and animate link
Character Logic
- Character moves with keys
- Character spawns items
- Character animates (walking, using items)
- Character takes damage
Bounding-Box Detection Functionality
Create Enemy Classes
Create all sprite classes (ISprite implementations) for all enemies
- Draw method with correct source bounding box
- If animated sprite, cycle through animation frames
There's a lot of enemies to make for this, so we can split this up among multiple people if needed
Add Commands for switching between block sprites
I have finished when I have
- Created command classes for getting next and previous block sprites
- Mapped 'Get next block' command to 'y' key and 'get previous block' command to 't' key in Keyboard controller
- When running, the game will change what block sprite is drawn when the 't' or 'y' key is pressed
Clean Up
Code Refactoring
Create All Sprites
Sprites need to be created for the player, enemies, and the items (and likely the map).
Creating a sprite involves creating the sprite sheet and implementing an ISprite class for that sprite
Sprite List:
https://www.spriters-resource.com/nes/legendofzelda/
Player
• Link (animated)
• Wooden Sword
• Sword beam
• Arrows
• Boomerang
• Bombs
• Blue Candle
• Blue Potion
• Blue ring
Items
• Compass
• Key
• Heart container
• Wooden boomerang
• Bow
• Heart
• Rupee
• Arrow
• Bomb
• Fairy
• Clock
Enemies and NPCs
• Bat (keese)
• Skeleton (stalfos)
• Dog-like monster (goriya)
• Jelly (gel-small and zol-big)
• Hand (wall master)
• Spike cross (trap)
• Snake (rope)
• Boss/Dragon (aquamentus)
• Boss/Dragon fireballs
• Boss/Dinosaur (Dodongo)
• Old man
• Merchant
• Flame
Environment – interactive
• Statues
• Square, sometimes movable block
• Walls
• Locked door
• Shut door
• Open door
• Bombed opening
• Gap tile
• Stairs
• Ladder tile
• Brick tile
• Fire
Environment – non-interactive
• Floor tile
• Room border
Player Actions
Using weapons and items
Fairy Movement
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.