Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zernie/typescript-redux-card-game
Hearthstone-like card game built for educational purposes.
https://github.com/zernie/typescript-redux-card-game
card-game drag-and-drop functional-programming hearthstone heroes html immer javascript lodash react redux semantic-ui semantic-ui-react turns typescript
Last synced: 3 months ago
JSON representation
Hearthstone-like card game built for educational purposes.
- Host: GitHub
- URL: https://github.com/zernie/typescript-redux-card-game
- Owner: zernie
- License: gpl-3.0
- Created: 2017-07-08T18:28:43.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T05:45:19.000Z (almost 2 years ago)
- Last Synced: 2024-04-09T20:26:49.892Z (7 months ago)
- Topics: card-game, drag-and-drop, functional-programming, hearthstone, heroes, html, immer, javascript, lodash, react, redux, semantic-ui, semantic-ui-react, turns, typescript
- Language: TypeScript
- Homepage: https://zergetaev.ru/typescript-redux-card-game
- Size: 23.7 MB
- Stars: 11
- Watchers: 1
- Forks: 4
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# React & Redux based Hearthstone clone
Built for educational purposes only. Your contributions are welcome 😉### [PLAY DEMO](https://zernie.com/typescript-redux-card-game/)
## Project structure
* `src/models` contains game models' type declarations and some helper functions.
* `src/redux` contains the actual game logic, decoupled from the UI rendering. It uses **Redux** state library.
It is highly recommended to use [redux-devtools](https://github.com/reduxjs/redux-devtools) Chrome extension for debugging.
* `src/UI` is a **React**-based implementation of Game's UI.## Development
$ yarn && yarn startNow open [localhost:3000](http://localhost:3000) in your web browser :tada:
## Roadmap:
### Gameplay
* [x] Stats
* [x] Armor
* [x] HP
* [x] Mana
* [ ] Overload
* [x] Entities
* [x] Player
* [x] Hero
* [x] Minion
* [x] Weapon
* [ ] Hero power
* [ ] Spell
* [ ] Secret
* [ ] Quest
* [ ] Sidequest
* [ ] Enchantment
* [ ] Aura
* [x] Zones
* [x] Play
* [x] Hand
* [x] Deck
* [ ] Graveyard
* [ ] Set aside
* [ ] Secret
* [ ] Removed from game
* [x] Turns
* [x] Player control switch
* [x] Fatigue damage
* [x] Card overdraw damage
* [ ] 🕡 Turn timer
(https://github.com/matpaul/redux-timer-middleware, https://stackoverflow.com/questions/3969475/javascript-pause-settimeout)
* [x] Basic mechanics
* [x] Charge
* [x] Windfury
* [x] Taunt
* [ ] Battlecry (needs triggers)
* [ ] Stealth (needs targeting improvements)
* [ ] Poisonous
* [ ] Divine shield
* [ ] Mulligan (needs spells)
* [ ] Choosing a deck
* [ ] Card targeting
* [ ] Play requirements
* [ ] Deck import/export### Visual
* [x] Card rendering
* [x] Basic
* [ ] Use [Sunwell](https://github.com/HearthSim/Sunwell)?
* [x] Drag & Drop cards (`react-dnd`)
* [x] Touch screen support
* [ ] Fix minion death animation bug (#10)### Technical
* [ ] Merge all game entities into `game.entities` (?)
* [ ] Tests
* [ ] [Sequences](https://hearthstone.gamepedia.com/Advanced_rulebook#Advanced_mechanics_101_.28READ_THIS_FIRST.29) (will require major refactoring)
* [ ] Load cards from https://hearthstonejson.com
* [ ] Save/Load
* [ ] LocalStorage
* [ ] File system
* [ ] [Triggers](https://hearthstone.gamepedia.com/Triggered_effect)
* [ ] ~~Multiplayer~~