Newer
Older
Ruby / sample / maru.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

#Ruby1.9Ready
#cursesを用いて●を動かす

require 'curses'
include Curses
noecho                          # エコーバックなし
cbreak                          # Returnなしで即入力
		# 入力は待たない

init_screen			# 画面も消える
ball = "●"
kesu = "  "
wait = 0.03			# タイマー

x = 1
y = lines-2			# 下から2行目
j = 0                           # ジャンプの高さ
jmax = 6                        # 2ステップ分高度をあげる
jnow = 0                        # 現在のステップ(0〜3)

setpos(1, 0)
addstr("1で右へ2で左へ動きます")
setpos(y-5, cols/2+rand(3))     # ランダムに決めた位置に
addstr("")                    # ★を置く
begin
  h = y-1                       # 高さの初期値をセットしておく
  while x < cols		# 右から左へ
  
                 # ジャンプ中の処理
    key = getch
     
      if key == "1"[0]          # SPCだったら
        x+=1
           
         setpos(h, x-1)# カーソルを今の位置へ
    
    
    addstr(kesu)		# 前のボールを消す
     
    setpos(h, x-1)		# カーソルを次の位置へ
 
    
  addstr(ball)		# ボールを書く
    setpos(0,0)			# カーソルを邪魔でないところへ
    refresh                     # これをしないと画面に反映されない
      setpos(10,10)
    addstr(sprintf("%s",x))
    addstr(sprintf(",%s",h))

      elsif key == "2"[0]
        x-=1
         setpos(h, x+1 )
    
    addstr(kesu)		# 前のボールを消す
     
    
    setpos(h, x+1)
    
  addstr(ball)		# ボールを書く
    setpos(0,0)			# カーソルを邪魔でないところへ
    refresh                     # これをしないと画面に反映されない
      setpos(10,10)
    addstr(sprintf("%s",x))
    addstr(sprintf(",%s",h))

  
      elsif key == "3"
        y+=1
             setpos(h, y+1 )
    
    addstr(kesu)		# 前のボールを消す
     
    
    setpos(h, y+1)
    
  addstr(ball)		# ボールを書く
    setpos(0,0)			# カーソルを邪魔でないところへ
  refresh                     # これをしないと画面に反映されない   
  
      elsif key =="4"
        y-=1
              setpos(h, x+1 )
    
    addstr(kesu)		# 前のボールを消す
     
    
    setpos(h, x+1)
    
  addstr(ball)		# ボールを書く
    setpos(0,0)			# カーソルを邪魔でないところへ
  refresh                     # これをしないと画面に反映されない   
  
      end
    end
    sleep(wait)			# 一定時間休む
  end
  setpos(y-1, 0)
  addstr("おしまい\n")
  refresh                       # 最後も忘れずに
  sleep 3