Skip to content

Instantly share code, notes, and snippets.

@mckinnsb
Created August 23, 2019 17:52
Show Gist options
  • Save mckinnsb/575cbbac725ec62dd5839d5764a44a54 to your computer and use it in GitHub Desktop.
Save mckinnsb/575cbbac725ec62dd5839d5764a44a54 to your computer and use it in GitHub Desktop.
def tile args, x, y, *color
[x * args.state.tile_size,
y * args.state.tile_size,
args.state.tile_size,
args.state.tile_size,
*color]
end
def generate_map args
return if args.state.area
args.state.area = [
[1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1,],
[1, 1, 1, 2, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1,],
[1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ],
].reverse
args.state.walls = []
args.state.area.map_2d do |y, x, v|
if v == 1
args.state.walls << tile(args, x, y, 0, 255, 0)
elsif v == 2
args.state.goal = tile(args, x, y, 0, 0, 0)
end
end
end
def move_player args, *vector
box = args.state.player.shift_rect(vector)
return if args.state.walls
.any_intersects_rect?(box)
args.state.player =
args.state.player
.shift_rect(vector.x * args.state.player_speed,
vector.y * args.state.player_speed)
end
def tick args
args.state.tile_size = 80
args.state.player_speed = 4
args.state.player ||= tile(args, 7, 3, 0, 128, 180)
generate_map args
args.outputs.solids << args.state.walls
args.outputs.solids << args.state.goal
args.outputs.solids << args.state.player
if args.state.player.intersects_rect? args.state.goal
args.outputs.labels << [30, 720 - 30, "You're a wizard Harry!!"]
end
move_player args, -1, 0 if args.inputs.keyboard.left
move_player args, 1, 0 if args.inputs.keyboard.right
move_player args, 0, 1 if args.inputs.keyboard.up
move_player args, 0, -1 if args.inputs.keyboard.down
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment