0

ライブラリ Gosu を使用して、Ruby でゲーム Pong を作成しています。現在、ボールがボードと相互作用するようにしようとしています。

class Window < Gosu::Window
    # board size 30 X 298
    def initialize
        super 1440,720,false
        self.caption = "Pong"
        @Ball = Ball.new(self)
        @Ball.warp(720,360)
        @Board1 = Board.new(self,15,360)
        @Board2 = Board.new(self,1425,360) 
    end

    def update 
        @Ball.draw
        @Ball.move
        @Ball.bounceOffBoard(@Board1,@Board2)
       ........

最後の行で、フィールド @Board1 を別のクラスに渡そうとしました。これにより、@Ball がボードの座標を認識して、ボードがジャンプするかどうかを確認できるようになります。しかし、それは私に次のような間違いを投げかけ続けます

Pong.rb:105: formal argument cannot be a constant
    def bounceOffBoard(Board1,Board2)

私は何をすべきか?

4

1 に答える 1

2

まず、インスタンス変数に大文字の名前を付けないでください。

@Ball = Ball.new(self)
@Board1 = Board.new(self,15,360)
@Board2 = Board.new(self,1425,360) 

次のようにする必要があります。

@ball = Ball.new(self)
@board1 = Board.new(self,15,360)
@board2 = Board.new(self,1425,360) 

と:

def bounceOffBoard(Board1,Board2)

次のようにする必要があります。

def bounceOffBoard(board1, board2)
于 2013-02-07T20:43:56.617 に答える