Skip to content

Commit

Permalink
Remove nested class
Browse files Browse the repository at this point in the history
  • Loading branch information
BNAndras committed Jan 13, 2024
1 parent 51b12ff commit b4ef4ec
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 61 deletions.
33 changes: 10 additions & 23 deletions exercises/practice/robot-simulator/.meta/example.gd
Original file line number Diff line number Diff line change
@@ -1,40 +1,27 @@
class RobotSimulator:

var _pos: Vector2i
var _position: Vector2i
var _dir: String


var position: Vector2i:
get:
return _pos


var direction: String:
get:
return _dir

var allowed_directions = ['north', 'east', 'south', 'west']

func _init(position: Vector2i = Vector2i(0, 0), direction: String = 'north'):
_pos = position
_dir = direction
_position = position
_direction = direction


func move(instructions: String):
const allowed_directions = ['north', 'east', 'south', 'west']
for instruction in instructions:
match [instruction, direction]:
['L', _]:
var index = allowed_directions.find(_dir) - 1
_dir = allowed_directions[index]
_direction = allowed_directions[index]
['R', _]:
var index = allowed_directions.find(_dir)
index = (index + 1) % 4
_dir = allowed_directions[index]
_direction = allowed_directions[index]
['A', 'north']:
_pos += Vector2i(0, 1)
_position += Vector2i(0, 1)
['A', 'south']:
_pos += Vector2i(0, -1)
_position += Vector2i(0, -1)
['A', 'east']:
_pos += Vector2i(1, 0)
_position += Vector2i(1, 0)
['A', 'west']:
_pos += Vector2i(-1, 0)
_position += Vector2i(-1, 0)
2 changes: 0 additions & 2 deletions exercises/practice/robot-simulator/robot_simulator.gd
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
class RobotSimulator:

func _init(position, direction):
pass

Expand Down
72 changes: 36 additions & 36 deletions exercises/practice/robot-simulator/robot_simulator_test.gd
Original file line number Diff line number Diff line change
Expand Up @@ -3,124 +3,124 @@ func same_field_values(robot_a, robot_b):


func test_create_robot_at_origin_facing_north(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'north')
var robot_b = RobotSimulator.new(Vector2i(0, 0), 'north')
var robot_a = solution_script.new(Vector2i(0, 0), 'north')
var robot_b = solution_script.new(Vector2i(0, 0), 'north')
return [true, same_field_values(robot_a, robot_b)]


func test_create_robot_at_negative_position_facing_south(solution_script):
var robot_a = RobotSimulator.new(Vector2i(-1, -1), 'south')
var robot_b = RobotSimulator.new(Vector2i(-1, -1), 'south')
var robot_a = solution_script.new(Vector2i(-1, -1), 'south')
var robot_b = solution_script.new(Vector2i(-1, -1), 'south')
return [true, same_field_values(robot_a, robot_b)]


func test_rotating_clockwise_changes_north_to_east(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'north')
var robot_a = solution_script.new(Vector2i(0, 0), 'north')
robot_a.move('R')
var robot_b = RobotSimulator.new(Vector2i(0, 0), 'east')
var robot_b = solution_script.new(Vector2i(0, 0), 'east')
return [true, same_field_values(robot_a, robot_b)]


func test_rotating_clockwise_changes_east_to_south(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'east')
var robot_a = solution_script.new(Vector2i(0, 0), 'east')
robot_a.move('R')
var robot_b = RobotSimulator.new(Vector2i(0, 0), 'south')
var robot_b = solution_script.new(Vector2i(0, 0), 'south')
return [true, same_field_values(robot_a, robot_b)]


func test_rotating_clockwise_changes_south_to_west(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'south')
var robot_a = solution_script.new(Vector2i(0, 0), 'south')
robot_a.move('R')
var robot_b = RobotSimulator.new(Vector2i(0, 0), 'west')
var robot_b = solution_script.new(Vector2i(0, 0), 'west')
return [true, same_field_values(robot_a, robot_b)]


func test_rotating_clockwise_changes_west_to_north(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'west')
var robot_a = solution_script.new(Vector2i(0, 0), 'west')
robot_a.move('R')
var robot_b = RobotSimulator.new(Vector2i(0, 0), 'north')
var robot_b = solution_script.new(Vector2i(0, 0), 'north')
return [true, same_field_values(robot_a, robot_b)]


func test_rotating_counterclockwise_changes_north_to_west(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'north')
var robot_a = solution_script.new(Vector2i(0, 0), 'north')
robot_a.move('L')
var robot_b = RobotSimulator.new(Vector2i(0, 0), 'west')
var robot_b = solution_script.new(Vector2i(0, 0), 'west')
return [true, same_field_values(robot_a, robot_b)]


func test_rotating_counterclockwise_changes_west_to_south(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'west')
var robot_a = solution_script.new(Vector2i(0, 0), 'west')
robot_a.move('L')
var robot_b = RobotSimulator.new(Vector2i(0, 0), 'south')
var robot_b = solution_script.new(Vector2i(0, 0), 'south')
return [true, same_field_values(robot_a, robot_b)]


func test_rotating_counterclockwise_changes_south_to_east(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'south')
var robot_a = solution_script.new(Vector2i(0, 0), 'south')
robot_a.move('L')
var robot_b = RobotSimulator.new(Vector2i(0, 0), 'east')
var robot_b = solution_script.new(Vector2i(0, 0), 'east')
return [true, same_field_values(robot_a, robot_b)]


func test_rotating_counterclockwise_changes_east_to_north(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'east')
var robot_a = solution_script.new(Vector2i(0, 0), 'east')
robot_a.move('L')
var robot_b = RobotSimulator.new(Vector2i(0, 0), 'north')
var robot_b = solution_script.new(Vector2i(0, 0), 'north')
return [true, same_field_values(robot_a, robot_b)]


func test_moving_forward_one_facing_north_increments_y(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'north')
var robot_a = solution_script.new(Vector2i(0, 0), 'north')
robot_a.move('A')
var robot_b = RobotSimulator.new(Vector2i(0, 1), 'north')
var robot_b = solution_script.new(Vector2i(0, 1), 'north')
return [true, same_field_values(robot_a, robot_b)]


func test_moving_forward_one_facing_south_decrements_y(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'south')
var robot_a = solution_script.new(Vector2i(0, 0), 'south')
robot_a.move('A')
var robot_b = RobotSimulator.new(Vector2i(0, -1), 'south')
var robot_b = solution_script.new(Vector2i(0, -1), 'south')
return [true, same_field_values(robot_a, robot_b)]


func test_moving_forward_one_facing_east_increments_x(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'east')
var robot_a = solution_script.new(Vector2i(0, 0), 'east')
robot_a.move('A')
var robot_b = RobotSimulator.new(Vector2i(1, 0), 'east')
var robot_b = solution_script.new(Vector2i(1, 0), 'east')
return [true, same_field_values(robot_a, robot_b)]


func test_moving_forward_one_facing_west_decrements_x(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'west')
var robot_a = solution_script.new(Vector2i(0, 0), 'west')
robot_a.move('A')
var robot_b = RobotSimulator.new(Vector2i(-1, 0), 'west')
var robot_b = solution_script.new(Vector2i(-1, 0), 'west')
return [true, same_field_values(robot_a, robot_b)]


func test_moving_east_and_north_from_readme(solution_script):
var robot_a = RobotSimulator.new(Vector2i(7, 3), 'north')
var robot_a = solution_script.new(Vector2i(7, 3), 'north')
robot_a.move('RAALAL')
var robot_b = RobotSimulator.new(Vector2i(9, 4), 'west')
var robot_b = solution_script.new(Vector2i(9, 4), 'west')
return [true, same_field_values(robot_a, robot_b)]


func test_moving_west_and_north(solution_script):
var robot_a = RobotSimulator.new(Vector2i(0, 0), 'north')
var robot_a = solution_script.new(Vector2i(0, 0), 'north')
robot_a.move('LAAARALA')
var robot_b = RobotSimulator.new(Vector2i(-4, 1), 'west')
var robot_b = solution_script.new(Vector2i(-4, 1), 'west')
return [true, same_field_values(robot_a, robot_b)]


func test_moving_west_and_south(solution_script):
var robot_a = RobotSimulator.new(Vector2i(2, -7), 'east')
var robot_a = solution_script.new(Vector2i(2, -7), 'east')
robot_a.move('RRAAAAALA')
var robot_b = RobotSimulator.new(Vector2i(-3, 8), 'south')
var robot_b = solution_script.new(Vector2i(-3, 8), 'south')
return [true, same_field_values(robot_a, robot_b)]


func test_moving_west_and_south(solution_script):
var robot_a = RobotSimulator.new(Vector2i(8, 4), 'south')
var robot_a = solution_script.new(Vector2i(8, 4), 'south')
robot_a.move('LAAARRRALLLL')
var robot_b = RobotSimulator.new(Vector2i(11, 5), 'north')
var robot_b = solution_script.new(Vector2i(11, 5), 'north')
return [true, same_field_values(robot_a, robot_b)]

0 comments on commit b4ef4ec

Please sign in to comment.