Advertisement
Guest User

Untitled

a guest
Oct 1st, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. viewport = document.getElementById "viewport"
  2. colortable =
  3.     'w': "White"
  4.     'o': "OrangeRed"
  5.     ' ': "Black"
  6.  
  7. colorize = (rep, fore, back) ->
  8.     gargle = "<span style='color:#{fore}; background-color:#{back}'>#{rep}</span>"
  9.     gargle
  10. # colortable[ fore_colormap[y][x] ]
  11. class Entity
  12.     constructor: ( @repr, @x, @y, @foreground) ->
  13.     moveEntity: ( newX, newY ) ->
  14.       if map[ newY ][ newX ] == ' '
  15.         map[ @y ][ @x ] = colorize(' ', "White", "Black")
  16.         fore_colormap[ @y ][ @x ] = 'w'
  17.         back_colormap[ @y ][ @x ] = ' '
  18.         [ @x, @y ] = [newX, newY]
  19.         map[ @y ][ @x ] = colorize(@repr, @foreground, "Black")
  20.  
  21. fore_colormap = (row.split '' for row in '''
  22.   wwwwwwwwwwwwww
  23.   wwwwwwwwwwwwww
  24.   wwwwwwwwwwwwww
  25.   wwwwwwwwwwwwww
  26.   wwwwwwwwwwwwww
  27.   wwwwwwwwwwwwww
  28.   wwwwwwwwwwwwww
  29.   wwwwwowwwowwww
  30.   wwwwwwwwwwwwww
  31.   wwwwwwwwwwwwww
  32.   wwwwwwwwwwwwww
  33. '''.split '\n')
  34.  
  35. back_colormap = (row.split '' for row in '''
  36.   wwwwwwwwwwwwww
  37.   w            w
  38.   w            w
  39.   w            w
  40.   w      ww ww w
  41.   w      w   w w
  42.   w      w   w w
  43.   w      w   w w
  44.   w      wwwww w
  45.   w            w
  46.   wwwwwwwwwwwwww
  47. '''.split '\n')
  48.  
  49. map = (row.split '' for row in '''
  50.   ##############
  51.   #            #
  52.   #            #
  53.   #            #
  54.   #      ##+## #
  55.   #      #   # #
  56.   #      #   # #
  57.   #      # ☺ # #
  58.   #      ##### #
  59.   #            #
  60.   ##############
  61. '''.split '\n')
  62.  
  63. i = 0
  64. i2 = 0
  65. while (i < map.length)
  66.   while (i2 < map[i].length)
  67.     map[i][i2] = colorize(map[i][i2], colortable[ fore_colormap[i][i2] ], colortable[ back_colormap[i][i2] ] )
  68.  
  69. player = new Entity ('@', 5, 7, "OrangeRed")
  70. # x = 5
  71. # y = 7
  72.  
  73. [LEFT, DOWN, RIGHT, UP] = [37..40]
  74.  
  75. handleKeyup = ( e ) ->
  76.   switch e.keyCode
  77.     when LEFT  then player.moveEntity (player.x - 1, player.y)
  78.     when RIGHT then player.moveEntity (player.x + 1, player.y)
  79.     when UP    then player.moveEntity (player.x, player.y + 1)
  80.     when DOWN  then player.moveEntity (player.x, player.y - 1)
  81. ###
  82. moveEntity = ( newX, newY ) ->
  83.   if map[ newY ][ newX ] == ' '
  84.     map[ y ][ x ] = ' '
  85.     [x, y] = [newX, newY]
  86.    
  87.     map[ y ][ x ] = "<span style='color:GreenYellow'>y</span>"
  88.     viewport.innerHTML = (row.join '' for row in map).join '\n'
  89. ###
  90. render = ->
  91.     viewport.innerHTML = (row.join '' for row in map).join '\n'
  92.  
  93. document.addEventListener 'keyup', handleKeyup, false
  94.  
  95. # Fake a keypress to render the map immediately
  96. handleKeyup keyCode:RIGHT
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement