0

私はゲームポンのコードを書こうとしていますが、パドル位置の範囲を制御しようとするときに問題に直面しています.最大値と最小値)変数が変化する(増加する)と、その範囲の最大値にとどまり、この変数が減少すると最小値にとどまりますか?.

私はこのコードを書いていました:

Range = range(HALF_PAD_HEIGHT, HEIGHT - HALF_PAD_HEIGHT) 
if (paddle1_pos[1] in Range) and (paddle2_pos[1] in Range):    
      paddle1_pos[1] += paddle1_vel[1]
      paddle2_pos[1] += paddle2_vel[1]  

パドル位置の値 (paddle1_pos[1] および paddle2_pos[1] ) が範囲外になると、キーボードを使用してその位置を更新できなくなります (変数 (paddle1_vel[1] および paddle2_val[2) を使用) ]) それで、おそらく Python には paddle_pos を更新できる何かが存在するのではないかと考えています.範囲の片側に到達すると、更新の方向を逆にするまでその側にとどまります.うまくいけば、質問は明確です.

ありがとう

4

2 に答える 2

1

独自の「制限付き」数値タイプを定義できます。たとえば、paddle1_pos[1]が整数値の場合、次のようなクラスを作成して、代わりに使用できます。

class BoundedInt(int):
    def __new__(cls, *args, **kwargs):
        lower, upper = bounds = kwargs.pop('bounds')

        val = int.__new__(cls, *args, **kwargs)  # supports all int() args
        val = lower if val < lower else upper if val > upper else val

        val = super(BoundedInt, cls).__new__(cls, val)
        val._bounds = bounds
        return val

    def __add__(self, other):
        return BoundedInt(int(self)+other, bounds=self._bounds)
    __iadd__ = __add__

    def __sub__(self, other):
        return BoundedInt(int(self)-other, bounds=self._bounds)
    __isub__ = __sub__

    def __mul__(self, other):
        return BoundedInt(int(self)*other, bounds=self._bounds)
    __imul__ = __mul__

    # etc, etc...

if __name__ == '__main__':
    v = BoundedInt(100, bounds=(0, 100))
    print type(v), v
    v += 10
    print type(v), v
    w = v + 10
    print type(w), w
    x = v - 110
    print type(x), x

出力:

<class '__main__.BoundedInt'> 100
<class '__main__.BoundedInt'> 100
<class '__main__.BoundedInt'> 100
<class '__main__.BoundedInt'> 0
于 2012-11-09T23:30:37.650 に答える