Class: RoadToRubykaigi::OpeningScreen

Inherits:
Object
  • Object
show all
Defined in:
lib/road_to_rubykaigi/opening_screen.rb

Constant Summary collapse

WIDTH =
10
OFFSET =
30
DELAY =
0.75
LOGO =
"\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\u2551       \u2551\n\u2551       \u2551                                \u2551\n\u2551       \u2551                                \u2551\n\u2560\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u255D  \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557  \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2551   \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2563\n\u2551     \u255A\u2550\u2557  \u2551       \u2551  \u2551       \u2551  \u2554\u255D      \u2551    \u2550\u2550\u256C\u2550\u2550  \u2554\u2550\u2550\u2550\u2557\n\u2551       \u2551  \u2551       \u2551  \u2551       \u2551  \u2551       \u2551      \u2551    \u2551   \u2551\n\u2551       \u2551  \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D  \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2551  \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D      \u2551    \u255A\u2550\u2550\u2550\u255D\n\n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557                                   \u2551       \u2551\n\u2551       \u2551                                   \u2551       \u2551\n\u2551       \u2551             \u2551          \u2551       \u2551  \u2551       \u2551                \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2551\n\u2551       \u2551             \u2551          \u2551       \u2551  \u2551       \u2551             \u2551  \u2551       \u2551  \u2551\n\u2560\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u255D  \u2551       \u2551  \u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2557   \u2551       \u2551  \u2560\u2550\u2550\u2550\u2550\u2550\u2566\u2550\u255D  \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2551     \u2551       \u2551\n\u2551     \u255A\u2550\u2557  \u2551       \u2551  \u2551      \u255A\u2557  \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563  \u2551     \u255A\u2550\u2557  \u2551       \u2551  \u2551  \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563  \u2551\n\u2551       \u2551  \u2551       \u2551  \u2551       \u2551          \u2551  \u2551       \u2551  \u2551       \u2551  \u2551          \u2551  \u2551\n\u2551       \u2551  \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2551  \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D  \u2551       \u2551  \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2551  \u2551  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D  \u2551\n"
PLAYER =
"\u256D\u2500\u2500\u2500\u2500\u2500\u2500\u256E\n\u2502\uFF61\u30FB\u25E1\u30FB\u2502_\u25E2\u25E4\n\u2570\u170A\u2500\u2500\u2500\u170A\u2500\u256F\n"

Instance Method Summary collapse

Instance Method Details

#displayObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/road_to_rubykaigi/opening_screen.rb', line 31

def display
  x = 0
  direction = 1

  loop do
    ANSI.clear
    puts "\e[6;1H" + 
    puts [
      PLAYER.lines.map.with_index do |line, i|
        "\e[#{i+1};#{x+OFFSET}H" + line
      end.join,
      "\e[4;1H" + "Press Space to start...",
    ]
    if $stdin.raw { $stdin.read_nonblock(1, exception: false) == " " }
      break true
    end

    x += direction
    if x >= WIDTH || x <= 0
      direction = -direction
    end
    sleep DELAY
  end
end