Game::Game(){ //initialise the invaders invader_group = new InvaderGroup(Position(50,450), Scale(20,15), 15, MoveDistance(0,5,5,5), MoveRange(700,230,10,790), 11, 5, 2); //invader group //initialise the tank theTank = Tank("image/tank.png", Position(400,60), Scale(25,15), MoveDistance(0,0,10,10), MoveRange(0,0,10,790),3); //tank for(int i = 0; i < 4; i++) { //initialise the shields theShield[i] = Shield("image/shield.png", Position(100+i*200,200), Scale(50,30), 10); } invader_last_time = -1; invader_current_time = -1; invader_step_time = 300; //300 ms bullet_last_time = -1; bullet_current_time = -1; bullet_step_time = 30; //30 ms //Assignment 4 tank_last_time = -1; tank_last_milli = -1; tank_current_time = -1; tank_current_milli = -1; tank_step_time = 500; // 500 ms conti = true; srand(time(NULL)); lose = false; theTank.readHighScore(); }
template<class T> void Vector<T>::Remove(UInt offset) { UInt length; Element* element; if(!IsEmpty()) { length = Length(); //If the offset is past the end, delete last if(offset >= length) offset = length - 1; element = _origin + offset; if(_ctorMode != CtorModeEnum::Pod) Destroy(element); if(element != _last - 1) { MoveRange(element, element + 1, _last); if(_ctorMode == CtorModeEnum::Always) Destroy(_last - 1); } --_last; } }
BOOL CScrollV::OnControlLButtonDown(UINT nFlags, CPoint point) { if(!m_bShowScroll) { return FALSE; } enumButtonState buttonState = m_enButtonState; if (!m_bIsDisable) { if(m_rcBlock.PtInRect(point)) { m_enButtonState = enBSDown; m_nDownTop = point.y; } else { int nRangeHeight = m_rc.Height() - 40; int nMove = m_nPageRange * nRangeHeight / m_nMaxRange; return MoveRange(point.y < m_rcBlock.top ? -nMove : nMove); } } if(buttonState != m_enButtonState) { UpdateControl(); return true; } return false; }
// 消息响应 LRESULT CScrollV::OnMessage(UINT uID, UINT Msg, WPARAM wParam, LPARAM lParam) { if(uID == BT_UP) { if(BUTTOM_UP == lParam) { CRect rcUpdate; rcUpdate.SetRectEmpty(); MoveRange(-m_nRowRange); } } else if (uID == BT_DOWN) { if(BUTTOM_UP == lParam) { CRect rcUpdate; rcUpdate.SetRectEmpty(); MoveRange(m_nRowRange); } } return 0L; }
void String::Insert(unsigned pos, char c) { if (pos > length_) pos = length_; if (pos == length_) (*this) += c; else { unsigned oldLength = length_; Resize(length_ + 1); MoveRange(pos + 1, pos, oldLength - pos); buffer_[pos] = c; } }
void String::Insert(size_t pos, char c) { if (pos > Length()) pos = Length(); if (pos == Length()) (*this) += c; else { size_t oldLength = Length(); Resize(Length() + 1); MoveRange(pos + 1, pos, oldLength - pos); Buffer()[pos] = c; } }
BOOL CScrollV::OnControlMouseMove(UINT nFlags, CPoint point) { if(!m_bShowScroll) { return FALSE; } enumButtonState buttonState = m_enButtonState; BOOL bHover = m_bHover; if (!m_bIsDisable) { if(m_enButtonState != enBSDown) { if(!m_bMouseDown) { if(m_rc.PtInRect(point)) { m_bHover = true; if(m_rcBlock.PtInRect(point)) { m_enButtonState = enBSHover; } else { m_enButtonState = enBSNormal; } } else { m_bHover = false; m_enButtonState = enBSNormal; } } } else { m_nDownTop += MoveRange(point.y - m_nDownTop); return true; } } if(buttonState != m_enButtonState || !m_bUpdate || bHover != m_bHover) { SetUpdate(FALSE); UpdateControl(); return true; } return false; }
template<class T> void Vector<T>::Remove(Element& element) { if(!IsEmpty() && &element) { if(_ctorMode != CtorModeEnum::Pod) Destroy(&element); if(&element != _last - 1) { MoveRange(&element, &element + 1, _last); if(_ctorMode == CtorModeEnum::Always) Destroy(_last - 1); } --_last; } }
template<class T> void Vector<T>::Insert(Element& at, ConstElement& value) { Int offset; Element* element; offset = &at - _origin; AutoAllocate(); element = _origin + offset; MoveRange(element + 1, element, _last); ++_last; if(_ctorMode == CtorModeEnum::Pod) *element = value; else Construct(element, &value); }
template<class T> void Vector<T>::Insert(UInt offset, ConstElement& value) { UInt length = Length(); Element* element; //If the offset is past the end, insert at end if(offset > length) offset = length; AutoAllocate(); element = _origin + offset; MoveRange(element + 1, element, _last); ++_last; if(_ctorMode == CtorModeEnum::Pod) *element = value; else Construct(element, &value); }
template<class T> void Vector<T>::Allocate(UInt capacity) { Element* newOrigin; newOrigin = (Element*)Memory::Alloc(sizeof(Element) * capacity); if(!IsEmpty()) { if(_ctorMode != CtorModeEnum::Always) Memory::Copy(_origin, newOrigin, sizeof(Element) * Length()); else { MoveRange(newOrigin, _origin, _last); Destroy(_origin, _last); } Memory::Free(_origin); } _last = newOrigin + (_last - _origin); _end = newOrigin + capacity; _origin = newOrigin; }