#!/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