File indexing completed on 2024-12-08 03:46:51
0001 /* 0002 SPDX-FileCopyrightText: 2007 Paolo Capriotti <p.capriotti@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "ship.h" 0008 0009 #include "knavalbattle_debug.h" 0010 0011 Ship::Ship(unsigned int size, Direction direction, Coord position) 0012 : m_size(size) 0013 , m_position(position) 0014 , m_direction(direction) 0015 { 0016 m_life = size; 0017 } 0018 0019 const Coord Ship::position() const 0020 { 0021 return m_position; 0022 } 0023 0024 void Ship::setPosition(const Coord & position) 0025 { 0026 m_position = position; 0027 } 0028 0029 void Ship::changeDirection() 0030 { 0031 m_direction = m_direction == TOP_DOWN ? LEFT_TO_RIGHT : TOP_DOWN; 0032 } 0033 0034 Coord Ship::increment(Direction direction) 0035 { 0036 return direction == TOP_DOWN ? Coord(0, 1) : Coord(1, 0); 0037 } 0038 0039 Coord Ship::decrement(Direction direction) 0040 { 0041 return direction == TOP_DOWN ? Coord(0, -1) : Coord(-1, 0); 0042 } 0043 0044 Coord Ship::incrementPerpendicular(Direction direction) 0045 { 0046 return direction == TOP_DOWN ? Coord(1, 0) : Coord(0, 1); 0047 } 0048 0049 Coord Ship::decrementPerpendicular(Direction direction) 0050 { 0051 return direction == TOP_DOWN ? Coord(-1, 0) : Coord(0, -1); 0052 } 0053 0054 Coord Ship::increment() const 0055 { 0056 return increment(m_direction); 0057 } 0058 0059 Coord Ship::decrement() const 0060 { 0061 return decrement(m_direction); 0062 } 0063 0064 Coord Ship::incrementPerpendicular() const 0065 { 0066 return incrementPerpendicular(m_direction); 0067 } 0068 0069 Coord Ship::decrementPerpendicular() const 0070 { 0071 return decrementPerpendicular(m_direction); 0072 } 0073 0074 void Ship::decLife() 0075 { 0076 Q_ASSERT(alive()); 0077 m_life--; 0078 } 0079 0080 bool Ship::alive() const 0081 { 0082 return m_life > 0; 0083 } 0084 0085