[python] Add getters for turtle module

This commit is contained in:
Jean-Baptiste Boric
2018-10-30 18:26:13 +01:00
parent fcf7cc33cf
commit c89a369a08
4 changed files with 26 additions and 2 deletions

View File

@@ -44,6 +44,7 @@ Q(speed)
Q(position)
Q(pos)
Q(heading)
Q(pendown)
Q(pd)
@@ -51,13 +52,15 @@ Q(down)
Q(penup)
Q(pu)
Q(up)
Q(isdown)
Q(pensize)
Q(width)
Q(showturtle)
Q(st)
Q(hideturtle)
Q(hd)
Q(ht)
Q(isvisible)
Q(pencolor)
Q(reset)

View File

@@ -11,15 +11,18 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(turtle_setheading_obj, turtle_setheading);
STATIC MP_DEFINE_CONST_FUN_OBJ_1(turtle_speed_obj, turtle_speed);
STATIC MP_DEFINE_CONST_FUN_OBJ_0(turtle_position_obj, turtle_position);
STATIC MP_DEFINE_CONST_FUN_OBJ_0(turtle_heading_obj, turtle_heading);
STATIC MP_DEFINE_CONST_FUN_OBJ_0(turtle_pendown_obj, turtle_pendown);
STATIC MP_DEFINE_CONST_FUN_OBJ_0(turtle_penup_obj, turtle_penup);
STATIC MP_DEFINE_CONST_FUN_OBJ_0(turtle_isdown_obj, turtle_isdown);
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(turtle_pensize_obj, 0, 1, turtle_pensize);
STATIC MP_DEFINE_CONST_FUN_OBJ_3(turtle_color_obj, turtle_color);
STATIC MP_DEFINE_CONST_FUN_OBJ_0(turtle_showturtle_obj, turtle_showturtle);
STATIC MP_DEFINE_CONST_FUN_OBJ_0(turtle_hideturtle_obj, turtle_hideturtle);
STATIC MP_DEFINE_CONST_FUN_OBJ_0(turtle_isvisible_obj, turtle_isvisible);
STATIC MP_DEFINE_CONST_FUN_OBJ_0(turtle___init___obj, turtle___init__);
@@ -43,6 +46,7 @@ STATIC const mp_rom_map_elem_t turtle_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_position), (mp_obj_t)&turtle_position_obj },
{ MP_ROM_QSTR(MP_QSTR_pos), (mp_obj_t)&turtle_position_obj },
{ MP_ROM_QSTR(MP_QSTR_heading), (mp_obj_t)&turtle_heading_obj },
{ MP_ROM_QSTR(MP_QSTR_pendown), (mp_obj_t)&turtle_pendown_obj },
{ MP_ROM_QSTR(MP_QSTR_pd), (mp_obj_t)&turtle_pendown_obj },
@@ -50,6 +54,7 @@ STATIC const mp_rom_map_elem_t turtle_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_penup), (mp_obj_t)&turtle_penup_obj },
{ MP_ROM_QSTR(MP_QSTR_pu), (mp_obj_t)&turtle_penup_obj },
{ MP_ROM_QSTR(MP_QSTR_up), (mp_obj_t)&turtle_penup_obj },
{ MP_ROM_QSTR(MP_QSTR_isdown), (mp_obj_t)&turtle_isdown_obj },
{ MP_ROM_QSTR(MP_QSTR_pensize), (mp_obj_t)&turtle_pensize_obj },
{ MP_ROM_QSTR(MP_QSTR_width), (mp_obj_t)&turtle_pensize_obj },
@@ -58,7 +63,8 @@ STATIC const mp_rom_map_elem_t turtle_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_showturtle), (mp_obj_t)&turtle_showturtle_obj },
{ MP_ROM_QSTR(MP_QSTR_st), (mp_obj_t)&turtle_showturtle_obj },
{ MP_ROM_QSTR(MP_QSTR_hideturtle), (mp_obj_t)&turtle_hideturtle_obj },
{ MP_ROM_QSTR(MP_QSTR_hd), (mp_obj_t)&turtle_hideturtle_obj },
{ MP_ROM_QSTR(MP_QSTR_ht), (mp_obj_t)&turtle_hideturtle_obj },
{ MP_ROM_QSTR(MP_QSTR_isvisible), (mp_obj_t)&turtle_isvisible_obj },
};
STATIC MP_DEFINE_CONST_DICT(turtle_module_globals, turtle_module_globals_table);

View File

@@ -9,10 +9,13 @@ mp_obj_t turtle_setheading(mp_obj_t deg);
mp_obj_t turtle_speed(mp_obj_t speed);
mp_obj_t turtle_position();
mp_obj_t turtle_heading();
mp_obj_t turtle_pendown();
mp_obj_t turtle_penup();
mp_obj_t turtle_isdown();
mp_obj_t turtle_pensize(size_t n_args, const mp_obj_t *args);
mp_obj_t turtle_isvisible();
mp_obj_t turtle_color(mp_obj_t r, mp_obj_t g, mp_obj_t b);

View File

@@ -161,6 +161,10 @@ mp_obj_t turtle_position() {
return mp_obj_new_tuple(2, mp_pos);
}
mp_obj_t turtle_heading() {
return mp_obj_new_float((t_heading - t_heading_offset) / t_heading_scale);
}
mp_obj_t turtle_pendown() {
t_penup = false;
return mp_const_none;
@@ -189,6 +193,10 @@ mp_obj_t turtle_pensize(size_t n_args, const mp_obj_t *args) {
return mp_const_none;
}
mp_obj_t turtle_isdown() {
return t_penup ? mp_const_false : mp_const_true;
}
mp_obj_t turtle_color(mp_obj_t r, mp_obj_t g, mp_obj_t b) {
t_color = KDColor::RGB888(mp_obj_get_int(r), mp_obj_get_int(g), mp_obj_get_int(b));
return mp_const_none;
@@ -206,6 +214,10 @@ mp_obj_t turtle_hideturtle() {
return mp_const_none;
}
mp_obj_t turtle_isvisible() {
return t_hidden ? mp_const_false : mp_const_true;
}
mp_obj_t turtle___init__() {
if (!t_underneath) {
t_underneath = new KDColor[t_size * t_size];