Git Product home page Git Product logo

squirdle's Introduction


Table of Contents

About the Project

Summary

Squirdle is a Pokémon-themed version of the popular game Wordle. Currently, all Pokémon from generations I - IV are available in game. Although features and bug fixes are planned, development on this project has been put on hold indefinitely. Assets and data have been scraped from Serebii, PokéAPI, and Project Pokémon.

The most up-to-date version of Squirdle is currently deployed at: https://squirdle.herokuapp.com.

Tech Stack

Client
Vue.js SASS
Server
Node.js Express.js
Database
MongoDB
Deployment
Heroku

Environment Variables

To run this project, you will need to add the following environment variables to your .env file

  • ATLAS_URI

Getting Started

Prerequisites

This project uses NPM as a package manager

Run Locally

Clone the project

git clone https://github.com/czhangy/squirdle.git

Install dependencies

npm install

Start the server

npm run server

Start the application

npm run client

Roadmap

  • Build out Nav

    • Application name links to home

    • How to play button

    • Binoculars button

    • Settings button

  • Scrape data

    • Use PokéAPI to access data (API bug causes Heroku deploy error)
    • Scrape Pokémon attributes (name, generation, typing, evolution stage) from PokéAPI
    • Acquire image URLs of box sprites from Serebii
    • Acquire GIF URLs of main sprites from Project Pokémon
    • Generations I-VII (only I-IV done)
  • Build out Dropdown

    • Dropdown results should filter by input
    • Dropdown should limit height and be scrollable beyond max height
    • Dropdown placeholder should display the current guess number
    • Each dropdown result should contain the Pokémon's box sprite and name
    • Dropdown results should be hoverable
    • Dropdown guess should submit on enter or button press
    • Button should be disabled temporarily after guess for debouncing
  • Build out game logic

    • Players should have a maximum of 8 guesses
    • The 5 categories displayed to the player should be the box sprite, generation number, typing, evolution stage, and name length
    • Each panel must have 4 states: inactive, incorrect, close, and correct
    • Box sprites should never be close, only correct or incorrect
    • Generation numbers are close if the guessed Pokémon's generation is within 1 of the target's
    • Typing is close if at least one of the guessed Pokémon's types matches at least 1 of the target's, and correct if the types are an exact match
    • Evolution stages are close if the guessed Pokémon's stage is within 1 of the target's
    • Name lengths are close if the guessed Pokémon's length is within 2 of the target's
    • All guesses and current game state should be saved in local storage to allow player to persist their game
  • Build out Game Grid

    • Game grid should have 8 rows, one for each possible guess
    • Game grid should be scrollable so that the grid can fit on a mobile screen, but hidden rows can be accessible via scroll
    • There should be headers to clarify which column reflects which attribute
    • Each row should have 5 panels, one for each attribute
    • Each panel should visually reflect its 4 possible states
    • When active, each panel should reflect the contents of the guess the row represents
    • On guess, the panels should flip in sequence
    • Warnings display for invalid guesses
    • After each guess, the next empty row in the grid should be automatically scrolled to
  • Build out Game Over flow

    • On game over, a modal should appear reflecting what the target Pokémon was, including its attributes
    • Modal text should differentiate between a win and a loss
    • The dropdown should change into a reset button, allowing the player to generate a new target
  • Build out How to Play modal

    • Modal should pop up automatically for first-time players (as defined by local storage contents)
    • Modal should allow smooth navigation between pages using buttons to the left and right
    • First page should summarize the goal of the game
    • Next pages should define the various states for each attribute
    • The final page should include credits, both personal and external
  • Build out Binoculars modal

    • If game is in progress, a patch of grass should be displayed, indicating the target is unknown
    • If game is over, the game over modal should be accessible through this button
  • Build out Settings modal

    • Sliders for light mode and hard mode toggle
    • Tooltips to explain light mode and hard mode
    • A button that navigates to the user's profile (saved in local storage)
    • A share button that copies a link to the application to allow users to share with friends
    • A feedback button that allows user to send feedback through email
  • Build out Profile page

    • Display statistics of user: caught, seen, and streak
    • Display the user's Pokédex, where caught Pokémon display a box sprite, seen Pokémon display a silhouette sprite, and unseen Pokémon display their Pokédex number
    • Pokédex should be scrollable and update without refresh
    • Display the user's medals, which are pre-defined achievements based on game activity
    • Medals should be darkened and redacted when uncollected and reveal information when collected
    • Medals should display rarity, name, and description
    • A tab navigation system to switch between Pokédex and medals, with visual indicators for hover and active tabs
  • Implement Light Mode

    • Should persist in local storage
    • Should change theming application-wide (buggy)
  • Implement Hard Mode

    • Dropdown should be disabled, forcing users to type in each Pokémon name manually
    • Any hints obtained so far in the game must be used with each guess
  • Implement Feedback Form

    • Should have a subject field and message field
    • Should disable multiple requests
    • Should be easy to navigate back to the settings modal

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Charles Zhang:

LinkedIn Twitter Personal Site

Acknowledgements

squirdle's People

Contributors

czhangy avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.