Nighttime Possum Meandering

    spacecraft-app-cli

    0.0.8 • Public • Published

    Spacecraft-CLI

    Build status License GitHub contributors npm version

    A simple CLI to solve the Spacecraft Problem, made with TypeScript

    Let's build a rocket together!

    Image of a rocket

    The Problem

    Say, the Canadian Space Agency is building an unmanned spacecraft that’ll go to the moon.

    To the moon

    Here’s some more info about the project.

    • The ship’s starting coordinates are (0, 0), which is on Earth.

    • The ship’s final destination is (0, 250), which is on the moon.

    • The ship will be controlled over a CLI using a standard keyboard as follows:

    • The ship starts at (0, 0) at 0 speed, i.e. at complete rest. The ship only moves when a valid key is pressed.

    • Pressing W increases the ship’s speed and then moves it forward by speed units.

      • The ship’s maximum speed is 5.
    • Pressing S decreases the ship’s speed and then moves it forward by speed units.

      • The ship’s minimum speed is 0.
      • After launch, the ship cannot go below speed 1, i.e. it always moves forward until it reaches the moon.
    • Pressing A and D move the ship left and right by one unit respectively.

    • The ship also moves forward by speed units.

    Problem

    Write a CLI program in your preferred language to simulate the above spacecraft. Display output as follows:

    • Begin with (0, 0) ready for launch.
    • After every movement, display the updated position.
    • If the ship goes more than 5 points to the left/right, display wrong trajectory.
    • If the ship tries to decrease the speed below 1, display minimum speed.
    • If the ship tries to increase the speed over 5, display maximum speed.
    • When the ship reaches (0, 250) display on the moon.
    • If the ship goes beyond 250 on the y-axis, display contact lost.

    Demo

    Demo Example

    Sample output

    (0, 0) # Begin with original position.
    (0, 1) # W increases the speed to 1 and moves forward.
    (0, 3) # W increases the speed to 2 and moves forward.
    (-1, 5) # A moves the ship left and forward.
    (0, 7) # D moves the ship right and forward.
    (0, 8) # S decreases the speed to 1 and moves forward.
    ...
    (0, 250) on the moon # Ship reaches the moon

    Install Globally

    npm i -g spacecraft-app-cli

    or

    You can run directly with npx

    npx spacecraft-app-cli

    Getting started - Local Development

    Installation

    To get started locally, follow these instructions:

    1. Clone to your local computer using git.
    2. Make sure you have Node installed; see instructions here.
    3. Make sure that you have yarn installed; see instructions here.
    4. Run yarn install to install dependencies.

    Usage

    # starts 🚀 on coordinates (0,0) - Earth 
    yarn start
     
    # Use W, A, S, or D  to starting control 🚀 . 

    Build the CLI bundle

    yarn build

    Run tests

    yarn test

    Contributors

    Docs

    License

    Copyright (c) 2020 pyymenta

    Spacecraft is licensed under the MIT license.

    Install

    npm i spacecraft-app-cli

    DownloadsWeekly Downloads

    3

    Version

    0.0.8

    License

    MIT

    Unpacked Size

    2.84 MB

    Total Files

    26

    Last publish

    Collaborators

    • pyymenta