Guest User

Untitled

a guest
Feb 20th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. # Unicode Modul einbinden
  2. require "unicode"
  3. require "debug"
  4.  
  5. require "rubygems"
  6. gem "highline"
  7. require "highline"
  8.  
  9. require "field"
  10. require "stone"
  11.  
  12. module Tetris
  13. FPS = 25
  14.  
  15. class << self
  16. def start
  17. # Set up the Signal trapping
  18. Signal.trap("INT") { self.stop }
  19.  
  20. # Console should return chars immediately
  21.  
  22. Field.clear_screen
  23. Field.hide_cursor
  24.  
  25. Field.draw_border
  26.  
  27. stone = Stone.new(Stone::SPRITES["S"])
  28. stone.y = 3
  29. stone.x = 3
  30.  
  31. loop do
  32. if c = get_character_nonblock
  33. case c
  34. when ?B
  35. stone.move_down
  36. when ?D
  37. stone.rotate_left
  38. when ?C
  39. stone.rotate_right
  40. end
  41. end
  42.  
  43. stone.draw
  44.  
  45. Field.move_cursor(1, Field::HEIGHT)
  46. Field.write(Time.now)
  47. end
  48. end
  49.  
  50. def stop
  51. HighLine::SystemExtensions.restore_mode
  52. Field.move_cursor(1, Field::HEIGHT)
  53. exit
  54. end
  55.  
  56. def get_character_nonblock
  57. HighLine::SystemExtensions.raw_no_echo_mode
  58.  
  59. begin
  60. if IO.select([STDIN], [], [], 1.0 / FPS)
  61. return $stdin.getc
  62. end
  63. ensure
  64. HighLine::SystemExtensions.restore_mode
  65. end
  66. end
  67. end
  68. end
Add Comment
Please, Sign In to add comment