GithubHelp home page GithubHelp logo

tiny-adventure's Introduction

A tiny adventure game, implemented in various languages for practice.

Here's an example session:

## hallway

This room feels very welcoming, with warm colors and a friendly atmosphere.
There's a big huge door to the south, that beckons for you to open it.
Exits are east.

> east

## kitchen

All neat and clean surfaces. Clearly this kitchen is tended by a professional.

There is a key here.
Exits are west.

> take key

You pick up the key.

> west

## hallway

> open door

You unlock the door with the key.
You open the door. There's now a new exit to the south.

> look

This room feels very welcoming, with warm colors and a friendly atmosphere.
Cool air wafts in the open door to the south. It beckons for you walk through it.
Exits are east, and south.

> south

You win the game. Thanks for playing!

Languages to investigate

Might as well dump this information here, before it gets lost in the Slack backlog.

  • Lisp (1958)
    • Because of its many "firsts", and the way it pushed the boundaries early.
    • Because the syntax is the AST, kinda. Homoiconicity.
    • Because of the power of functions and lambdas.
    • Because of self-hosting and the metacircular evaluator.
    • Because of Lisp macros.
    • Because of its early connections to AI.
  • APL (1964)
    • Because of the "all the primitives built in" paradigm.
    • Because of the vector-based thinking.
  • Logo (1967)
    • Because of the connection to children learning programming.
  • Forth (1970)
    • Because of the stack-based paradigm.
    • Because of the refactoring ethos.
  • Scheme (1970)
    • Because it drives home the point of lexical closures and lambdas.
    • Because it will never be friends with Common Lisp.
  • C (1972)
    • Because it makes you think about memory management.
    • Because it's basically a universal assembly language for the von Neumann architecture.
    • Because you can talk about what a linker is.
  • Prolog (1972)
    • Because of its logic programming paradigm.
    • Because of its quite different execution strategy, involving search with backtracking.
  • Smalltalk (1972)
    • Because of the connection to the birth of OOP.
    • Because of its "object purity".
    • Because nothing is fixed and everything is late-bound.
    • Because of the connection to children learning programming.
  • SQL (1974)
    • Because it's the only fifth-generation language on the list (along with Prolog)
    • Because it has things to teach us about declarative syntax and "do what I mean"
    • Because relational algebra is interesting
    • Because the ways in which SQL isn't ideal (but still won big) are interesting
    • Because SQL's NULL and three-value logic are "interesting" and slightly controversial (but much used)
    • Because the transactional/ACID requirements on databases are interesting
  • C++ (1983)
    • Because of the completely different take on OOP compared to Smalltalk.
    • Because it's still to this day in some sense relevant.
    • Because it combines OOP and manual memory management.
    • Because this is as good place a any to talk about vtables.
  • Eiffel (1986)
    • Because of its interesting stance on DBC and invariants.
  • Erlang (1986)
    • Because of its approach to distributed programming.
  • Haskell (1990)
    • Because it is a good case of a lazy, functional language with type inference.
  • Brainfuck (1993)
    • Because it shows it doesn't take a lot for a language to be Turing complete.
    • Because it shows that built-in higher-level abstractions matter.
  • D (2001)
    • Because of the interesting perspectives it gives on C and C++
  • Go (2009)
    • Because it highlights what a "modern C" could look like.
    • Because it favors compilation speed over a lot of other concerns.
    • Because it has interesting features for concurrency and parallelism.
    • Because it remains, in many regards, boring and stuck in the 1900s, and in many ways reflects its creators recurring preferences when creating languages.
    • Because it formats your code for you with an official formatter!
  • Rust (2010)
    • Because it uses the type system to guarantee memory safety.

tiny-adventure's People

Watchers

Carl Mäsak avatar David Waller avatar James Cloos avatar  avatar

tiny-adventure's Issues

extract adventure data

Really neat initiative! I definitely venture outside JS way too seldom.

A thought: How about extracting the adventure data into a JSON blob that we can reuse across implementations?

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.