manouverset.cpp

来自「此程序为分布式坦克游戏」· C++ 代码 · 共 53 行

CPP
53
字号
/*****************************************************************************
*                                                                             
*   ManouverSet.cpp                                                            
*                                                                             
*   Electrical Engineering Faculty - Software Lab                             
*   Spring semester 1998                                                      
*                                                                             
*   Tanks game                                                                
*                                                                             
*   Module description: Each tank is assigned a Maneuver Set describing the user
*                       key board input in terms of maneuvers - move forward, 
*                       backward, turn etc. The maneuver set object resolve any 
*                       conflicts that may occur when pressing keys that control
*                       contradicting maneuvers, and is send over the net and
*                       to the tanks or bomber objects.
*                                                                             
*   Authors: Eran Yariv - 28484475                                           
*            Moshe Zur  - 24070856                                           
*                                                                            
*                                                                            
*   Date: 23/09/98                                                           
*                                                                            
******************************************************************************/
#include "stdafx.h"
#include "ManouverSet.h"

const UINT CManouverSet::MOVE_COLLISION = FORWARD_MASK | BACKWARD_MASK;
const UINT CManouverSet::TURN_COLLISION = TURN_RIGHT_MASK | TURN_LEFT_MASK;

void 
CManouverSet::SetBit (UINT ManouverBit)
{
    UINT uMask = (1 << ManouverBit) & MANOUVER_SET_MASK; // Calc mask, to set new val

        // Check for turn key collisions:
    if ( ((uMask | m_uManouverSet) & // Suppose we set the bit, does it collide ?
            TURN_COLLISION) == TURN_COLLISION ) 
    {
        m_uManouverSet &= ~TURN_COLLISION;  // Clear both bits - conflict is settled
        return;
    } 
        // Check for move key collisions:
    if ( ((uMask | m_uManouverSet) & // Suppose we set the bit, does it collide ?
            MOVE_COLLISION) == MOVE_COLLISION )
    {
        m_uManouverSet &= ~MOVE_COLLISION;  // Clear both bits - conflict is settled
        return;
    } 
        // it's now safe to set bit:
    m_uManouverSet |= uMask;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?