GithubHelp home page GithubHelp logo

krisstee / spacecraft-cli Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pyymenta/spacecraft-cli

0.0 0.0 0.0 2.92 MB

Let's build a rocket together! Our rocket, Spacecraft, is a simple CLI Project made with typescript

License: MIT License

JavaScript 5.57% TypeScript 94.43%

spacecraft-cli's Introduction

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.

spacecraft-cli's People

Contributors

pyymenta avatar sudiptog81 avatar rosborne132 avatar danielvip3 avatar codemartian avatar ish-u avatar rickithadi avatar alenst avatar ianmuchina avatar phr-nk avatar yigitcukuren avatar jyooru avatar danielskjo avatar ehrenfeldn avatar gilsonmandalogo avatar guilhermeorcezi avatar ondkloss avatar ijustdev avatar krhero03 avatar m4yankchoudhary avatar ckesc 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.