void string::erase(size_t beg, size_t end) { char *mbeg = m_first + beg; char *mend = m_first + end; const size_t len = m_last - mend; moveMemory(mbeg, mend, len); m_last = &mbeg[len]; m_last[0] = '\0'; }
void Problem::onKeyPress(EventKeyboard::KeyCode keyCode, Event *event) { if (myInput) { if (!myInput->isEnd())return; else { if (!myInput->label->getString().empty()) { memMap[memY][memX]->str.assign(myInput->label->getString()); memMap[memY][memX]->setOwnString(); } else { memMap[memY][memX]->str.assign("."); memMap[memY][memX]->setString(memMap[memY][memX]->str); } this->getScene()->removeChild(myInput); myInput = NULL; return; } } int px = 0, py = 0; switch (keyCode) { case EventKeyboard::KeyCode::KEY_UP_ARROW: if(!pushShift)py = -1; break; case EventKeyboard::KeyCode::KEY_DOWN_ARROW: if (!pushShift)py = 1; break; case EventKeyboard::KeyCode::KEY_LEFT_ARROW: px = -1; break; case EventKeyboard::KeyCode::KEY_RIGHT_ARROW: px = 1; break; case EventKeyboard::KeyCode::KEY_TAB: smSwitch = !smSwitch; pushEnter = false; if (smSwitch == false) { sourceMap[sourceY]->setColor(Color3B::WHITE); } else { memMap[memY][memX]->setOwnString(); memMap[memY][memX]->setOwnColor(); setMemoryBlue(); } break; case EventKeyboard::KeyCode::KEY_SHIFT: if (smSwitch == false) { pushShift = true; setMemoryFree(); } break; case EventKeyboard::KeyCode::KEY_KP_ENTER: if (smSwitch == true) { sourceMap[sourceY]->setColor(Color3B::ORANGE); smSwitch = !smSwitch; pushEnter = true; setMemoryShow(); } else { myInput = InputValue::create(); myInput->setVisible(true); this->getScene()->addChild(myInput); } break; } if (smSwitch) { moveSource(px, py); } else { moveMemory(px, py); } }