[python/turtle] Turtle::circle's angle argument is optional

This commit is contained in:
Léa Saviot
2018-12-10 16:59:11 +01:00
parent fa0e93e8ac
commit 7efb48ab6e
4 changed files with 13 additions and 5 deletions

View File

@@ -44,8 +44,16 @@ mp_obj_t modturtle_left(mp_obj_t angle) {
return mp_const_none;
}
mp_obj_t modturtle_circle(mp_obj_t radius, mp_obj_t angle) {
sTurtle.circle(mp_obj_get_int(radius), mp_obj_get_float(angle));
mp_obj_t modturtle_circle(size_t n_args, const mp_obj_t *args) {
mp_int_t radius = mp_obj_get_int(args[0]);
if (n_args == 1) {
sTurtle.circle(radius);
}
else {
mp_float_t angle = mp_obj_get_float(args[1]);
sTurtle.circle(radius, angle);
}
return mp_const_none;
}

View File

@@ -9,7 +9,7 @@ mp_obj_t modturtle_forward(mp_obj_t px);
mp_obj_t modturtle_backward(mp_obj_t px);
mp_obj_t modturtle_right(mp_obj_t deg);
mp_obj_t modturtle_left(mp_obj_t deg);
mp_obj_t modturtle_circle(mp_obj_t radius, mp_obj_t angle);
mp_obj_t modturtle_circle(size_t n_args, const mp_obj_t *args);
mp_obj_t modturtle_goto(size_t n_args, const mp_obj_t *args);
mp_obj_t modturtle_setheading(mp_obj_t deg);
mp_obj_t modturtle_speed(mp_obj_t speed);

View File

@@ -6,7 +6,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(modturtle_forward_obj, modturtle_forward);
STATIC MP_DEFINE_CONST_FUN_OBJ_1(modturtle_backward_obj, modturtle_backward);
STATIC MP_DEFINE_CONST_FUN_OBJ_1(modturtle_right_obj, modturtle_right);
STATIC MP_DEFINE_CONST_FUN_OBJ_1(modturtle_left_obj, modturtle_left);
STATIC MP_DEFINE_CONST_FUN_OBJ_2(modturtle_circle_obj, modturtle_circle);
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(modturtle_circle_obj, 1, 2, modturtle_circle);
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(modturtle_goto_obj, 1, 2, modturtle_goto);
STATIC MP_DEFINE_CONST_FUN_OBJ_1(modturtle_setheading_obj, modturtle_setheading);
STATIC MP_DEFINE_CONST_FUN_OBJ_1(modturtle_speed_obj, modturtle_speed);

View File

@@ -44,7 +44,7 @@ public:
void backward(mp_float_t length) { forward(-length); }
void right(mp_float_t angle) { left(-angle); }
void left(mp_float_t angle);
void circle(mp_int_t radius, mp_float_t angle);
void circle(mp_int_t radius, mp_float_t angle = 360);
bool goTo(mp_float_t x, mp_float_t y);
mp_float_t heading() const;