超初心者ですので、コードに誤りがあるかもしれないし、もっとRubyっぽく書けるのかもしれませんがとりあえず、意図したことはできていそう。
P_MAX = 10 # 配列の最大個数
class Point
def initialize
@x=Array.new(P_MAX)
@y=Array.new(P_MAX)
@pointer = -1 # ポインタ
end
def x; @x[@pointer]; end # @xの最新値のゲッターメソッド
def y; @y[@pointer]; end # @yの最新値のゲッターメソッド
# @xの配列ゲッターメソッド
def getX(n)
if n >= P_MAX then
@x[P_MAX-1]
else
@x[n]
end
end
# @yの配列ゲッターメソッド
def getY(n)
if n >= P_MAX then
@y[P_MAX-1]
else
@y[n]
end
end
# @x,@yの為のセッターメソッド
def setXY(valueX,valueY)
@pointer += 1
if @pointer >= P_MAX then @pointer = 0 end
@x[@pointer]=valueX
@y[@pointer]=valueY
puts "setXY(#{valueX},#{valueY}):@pointer=#{@pointer}"
end
end
p = Point.new
q = Point.new
puts "p.x = #{p.x} p.y = #{p.y}"
puts "q.x = #{q.x} q.y = #{q.y}"
p.setXY(0,1)
q.setXY(0,-1)
puts 'p.setXY(0,1) q.setXY(0,-1)実施後'
puts "p.x = #{p.x} p.y = #{p.y}"
puts "q.x = #{q.x} q.y = #{q.y}"
p.setXY(1,2)
q.setXY(-1,-2)
puts 'p.setXY(1,2) q.setXY(-1,-2)実施後'
puts "p.x = #{p.x} p.y = #{p.y}"
puts "q.x = #{q.x} q.y = #{q.y}"
n = 0
while n < P_MAX do
p.setXY(n,n+1)
q.setXY(-n,-n+1)
n += 1
end
puts 'p.setXY(n,n+1) q.setXY(-n,-n+1) n=0..9実施後'
puts "p.x = #{p.x} p.y = #{p.y}"
puts "q.x = #{q.x} q.y = #{q.y}"
puts 'getX(n) getY(n) 確認'
n = 0
while n < P_MAX do
puts "p.getX(#{n}) = #{p.getX(n)}"
puts "p.getY(#{n}) = #{p.getY(n)}"
puts "q.getX(#{n}) = #{q.getX(n)}"
puts "q.getY(#{n}) = #{q.getY(n)}"
n += 1
end