Use the arrow keys to move and turn, and check out Spidertest's original project for more cool raycasting. :) Use phosphorus if it gets too slow: https://phosphorus.github.io/#166184438
All of the code for movement and detecting walls was made by @Spidertest; I just modified the drawing aspect of it. Thanks to @PullJosh for dynamic resolution (resolution changes to match your speed). In case you're wondering, drawing more walls through transparent ones was done by using recursion (basically, add a wall to the list of walls that need to be drawn and draw them from most recently added to the first added).