⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tictactoeboard.cpp

📁 《Symbian S60第3版手机程序开发与实用教程》光盘源代码
💻 CPP
字号:
/*
* ==============================================================================
*  Name        : TicTacToeBoard.cpp
*  Part of     : TicTacToe
*  Description : 
*  Version     : 
*
*  Copyright (c) 2005 Nokia Corporation.
* ==============================================================================
*/

// INCLUDE FILES

#include "TicTacToeBoard.h"

// EXTERNAL DATA STRUCTURES

// EXTERNAL FUNCTION PROTOTYPES  

// CONSTANTS

// MACROS

// LOCAL CONSTANTS AND MACROS

// MODULE DATA STRUCTURES

// LOCAL FUNCTION PROTOTYPES

// FORWARD DECLARATIONS

// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// TTicTacToeBoard::TTicTacToeBoard
// C++ default constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
TTicTacToeBoard::TTicTacToeBoard()
    {
    Reset();
    }

// Destructor
TTicTacToeBoard::~TTicTacToeBoard()
    {
    }

// -----------------------------------------------------------------------------
// TTicTacToeBoard::Reset
// Reset the board to initial state.
// -----------------------------------------------------------------------------
//
void TTicTacToeBoard::Reset()
    {
    for ( TInt i = 0; i < KTicTacToeCells ; i++)
        {
        iCells[i] = ETttPlayerNone;
        }
    iCanMove = ETrue;
    }

// -----------------------------------------------------------------------------
// TTicTacToeBoard::Player
// Get the player who has taken a given cell.
// -----------------------------------------------------------------------------
//
TTicTacToePlayer TTicTacToeBoard::Player(TInt aColumn, TInt aRow) const
    {
    TInt cell = aRow * KTicTacToeColumns + aColumn;

	if ( 0 <= cell && cell < KTicTacToeCells )
		{
		return iCells[cell];
		}

	return ETttPlayerNone;
    }

// -----------------------------------------------------------------------------
// 
// 
// -----------------------------------------------------------------------------
//
TBool TTicTacToeBoard::Move(TInt aCell, TTicTacToePlayer aPlayer)
    {
	if ( 0 <= aCell && aCell < KTicTacToeCells
	        && iCanMove && ETttPlayerNone == iCells[aCell] )
		{
		iCells[aCell] = aPlayer;
		return ETrue;
		}

	return EFalse;
    }

// -----------------------------------------------------------------------------
// 
// 
// -----------------------------------------------------------------------------
//
TBool TTicTacToeBoard::HasWon(TTicTacToePlayer aPlayer)
    {
    if ( (iCells[0] == aPlayer && iCells[1] == aPlayer && iCells[2] == aPlayer)
        || (iCells[3] == aPlayer && iCells[4] == aPlayer && iCells[5] == aPlayer)
        || (iCells[6] == aPlayer && iCells[7] == aPlayer && iCells[8] == aPlayer)
        || (iCells[0] == aPlayer && iCells[3] == aPlayer && iCells[6] == aPlayer)
        || (iCells[1] == aPlayer && iCells[4] == aPlayer && iCells[7] == aPlayer)
        || (iCells[2] == aPlayer && iCells[5] == aPlayer && iCells[8] == aPlayer)
        || (iCells[0] == aPlayer && iCells[4] == aPlayer && iCells[8] == aPlayer)
        || (iCells[2] == aPlayer && iCells[4] == aPlayer && iCells[6] == aPlayer) )
        {
        // The game is over
        iCanMove = EFalse;

        return ETrue;
        }

    return EFalse;
    }

// -----------------------------------------------------------------------------
// 
// 
// -----------------------------------------------------------------------------
//
TBool TTicTacToeBoard::IsDraw()
    {
    // Check for empty cells
    for ( TInt i = 0; i < KTicTacToeCells ; i++)
        {
        if ( ETttPlayerNone == iCells[i] )
            {
            return EFalse;
            }
        }

    // The game is over
    iCanMove = EFalse;

    return ETrue;
    }

//  End of File

⌨️ 快捷键说明

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