--- race-path.py 2004-11-12 14:52:22.255423984 +0200 +++ race.py 2004-11-12 17:30:45.662686480 +0200 @@ -967,6 +967,60 @@ u.add( Box( p1 , p2 ) ) return u , t +def ThinMazeObstacle( level ) : + u , t = Union() , UnionBox() + + + steps = level * 2 + 4 + stepsize = 8 + length = ( steps - 1 ) * stepsize / 2 + width = trackWidth + 10 + left = -width / 2 + right = width / 2 + height = 1.7 + thick = -0.25 + + t = RemoveSafetyTrack( x = length , y = -1 , z = length ) + + p1 = Point( - width / 2 , 4 , -length ) + p2 = Point( width / 2 , 20 , length ) + u.add( Box( p1 , p2 ) ) + + + p1 = Point( - width / 2 , 0 , -length - 5 ) + p2 = Point( width / 2 , -0.25 , length + 5 ) + u.add( Box( p1 , p2 ) ) + + p1 = Point( - width / 2 , height , -length ) + p2 = Point( width / 2 , height + thick , length ) + b = Box( p1 , p2 ) + + holewidth = 7 - level + holes = 2 + level + spacing = width / ( holes + 1 ) + + # entry holes + for i in range( holes ) : + p1 = Point( left + spacing * ( i + 1 ) - holewidth / 2 , height , -length ) + p2 = Point( left + spacing * ( i + 1 ) + holewidth / 2 , height + thick , -length + stepsize ) + b = b - Box( p1 , p2 ) + + # joined steps + for i in range( 1 , steps - 2 , 2 ) : + p1 = Point( left + spacing - holewidth / 2 , height , -length + stepsize * i ) + p2 = Point( right - spacing + holewidth / 2 , height + thick , -length + stepsize * ( i + 1 ) ) + b = b - Box( p1 , p2 ) + + for i in range( 2 , steps - 1 , 2 ) : + x = ( rand ( holes - 1 ) + 1 ) * spacing + left + p1 = Point( x - holewidth / 2 , height , -length + stepsize * i ) + p2 = Point( x + holewidth / 2 , height + thick , -length + stepsize * ( i + 1 ) ) + b = b - Box( p1 , p2 ) + + u.add( b ) + + return u , t + def ThroughWeaponBoxObstacle( level ) : u = Union() t = UnionBox() @@ -1414,6 +1468,7 @@ 'StickyHurdle' : ( 4 , True , StickyHurdleObstacle ) , 'SuspendedVhurdle' : ( 4 , True , SuspendedVhurdleObstacle ) , 'ThinTracks' : ( 4 , True , ThinTracksObstacle ) , +'ThinMaze' : ( 10 , False , ThinMazeObstacle ) , 'ThroughWeaponBox' : ( 1 , True , ThroughWeaponBoxObstacle ) , 'ThreadTheNeedle' : ( 4 , True , ThreadTheNeedleObstacle ) , 'ThroughBox' : ( 3 , True , ThroughBoxObstacle ) ,