Skip to content

Falling Words is a small language learning game, In which players will see the word on the screen, and on behalf of the word, player will see falling words. The player can answer correct or wrong of the translation from falling words, After the game ends he/she can see the score and can replay.

Notifications You must be signed in to change notification settings

zaunabbas/Falling-Words

Repository files navigation

Falling Words

Falling Words is a small language game. The player will see a word in language one" on the screen. While this word is displayed, a word in language two will fall down on the screen. The player will have to choose if the falling word is the correct or incorrect translation. A timer counts as the word falls to the bottom of the screen, before which the player should have given an answer. The player needs to answer, before the word reaches the bottom of the screen. The Game is build with modern Android tech-stacks and MVVM architecture. Fetching data from the local json via repository pattern.

Download

Go to the Download Link to download the latest APK.

Screenshots

Tech stack & Open-source libraries

  • Minimum SDK level 23
  • 100% Kotlin based + Coroutines + Flow for asynchronous.
  • Google Material Design
  • Hilt for dependency injection.
  • JetPack
    • Lifecycle - dispose observing data when lifecycle state changes.
    • ViewModel - UI related data holder, lifecycle aware.
  • Architecture
    • MVVM Architecture (View - ViewModel - Model)
    • Repository pattern

Architecture

  • The app developed using Clean MVVM architecture combined with Repository and Domains pattern to limit coupling between application layers and components which provides a better codebase to be more testable, maintainable and also scalable for new features and updates.

  • GameViewModel contains the game logic and stores the data to survive the configuration changes so user can continue the game smoothly. Also fetching words list from the repository using Kotlin Coroutines and flows.

  • For now app is created for the portrait mode with Adaptive UI, for that I used SP and DP Libray.

  • App Contains Two Fragments

    • StartGameFragment: Which shows the game instructions and Start Game Button
    • FallingGameFragment: Shows the Game UI and Controls.

Time Distribution

  • I've spent about 7-8 hours on the app.
  • 1 hour for planning the game concept, base architecture with Dagger Hit setup.
  • 1:30 hour for building views and game UI controls.
  • 2:30 hour for developing game logic and the data layer.
  • 1:30 hour for writing tests both unit-testing and UI-testing.
  • 30 minutes for documentation.
  • 1 hour for Dev Testing.

To Improve

Due to time constraints, I wish I could improve the app with the following:

  • Introduce different levels of difficulty with easy, medicum and hard to speedup the falling word.
  • Creating background service to sync new words from the server to the app’s local database.
  • Improve user experience for better interaction by adding sounds and vibration effects, with correction if the chosen word is wrong.
  • Add a user dictionary where all the correct words saved, so users can get back to them any time.
  • Improve the scrore board screen and show the words with translations that played out during the session so.

About

Falling Words is a small language learning game, In which players will see the word on the screen, and on behalf of the word, player will see falling words. The player can answer correct or wrong of the translation from falling words, After the game ends he/she can see the score and can replay.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages