Newer
Older
Ruby / traffic.rb
#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-
 
require "curses"
 
# Cursesの初期化
Curses.init_screen
 
begin
  # 初期座標
  x = y = 0
 
  # カーソルを非表示
  Curses.curs_set(0)
 
  # キーパッドを有効にする
  Curses.stdscr.keypad(true)
 
  # Enterキーが押されるまでループ
  while 1
    # (x, y) に文字を出力
    Curses.setpos(y, x)
    Curses.addch("x")
 
    # 画面表示を更新
    Curses.refresh
 
    # キー入力があるまで待つ
    c = Curses.getch
 
    # (x, y) の文字を削除
    Curses.setpos(y, x)
    Curses.delch
 
    # キー判定
    case c
    when Curses::KEY_UP         # 「↑」キー
      # 一番上の行でなければ上に移動
      if y > 0
        y -= 1
      end
    when Curses::KEY_DOWN       # 「↓」キー
      # 一番下の行でなければ下に移動
      if y < Curses.lines - 1
        y += 1
      end
    when Curses::KEY_RIGHT      # 「→」キー
      # 一番右の列でなければ右に移動
      if x < Curses.cols - 1
        x += 1
      end
    when Curses::KEY_LEFT       # 「←」キー
      # 一番左の列でなければ左に移動
      if x > 0
        x -= 1
      end
    else
      # 他のキーでループを抜ける
      break
    end
  end
 
ensure
  # Cursesの終了処理
  Curses.close_screen
end