listing1.cpp

来自「C人工智能游戏开发的一些实例源代码 C Game development in 」· C++ 代码 · 共 46 行

CPP
46
字号
/* Copyright (C) Dan Higgins, 2001. 
 * All rights reserved worldwide.
 *
 * This software is provided "as is" without express or implied
 * warranties. You may freely copy and compile this source into
 * applications you distribute provided that the copyright text
 * below is included in the resulting source code, for example:
 * "Portions Copyright (C) Dan Higgins, 2001"
 */

// Excerpt from AStarMachine<TGoal, TStorage, TMap>'s run method.

// Infinite loop. The goal will tell us when we are done.
for(;;)
{    
    // used for time-slicing
    this->mRevolutions++; 

    // get the best choice so far
    this->mCurrentNode = this->RemoveCheapestOpenNode();

    // if == true, then its likely that we are not at the
    // goal and we have no more nodes to search through
    if(this->mGoal.GetIsPathFinished(this->mCurrentNode))
        break;

    // for all 8 neighbor tiles, examine them by checking
    // their TileOpen status, and putting them on the
    // appropriate A* lists. (code not shown)
	
    // add this node to closed list now
    this->AddNodeToClosedList(this->mCurrentNode);

    // Should we pause? (used in time-slicing)
    if(this->mGoal.ShouldPause(this->mCurrentRevolutions))
        break;

    // if == true, this means we have exceeded our max
    // pathfinding revolutions and should give up.
    if(this->mGoal.ShouldGiveUp(this->mRevolutions))
        break;

    // used for time-slicing
    this->mCurrentRevolutions++; 
}

⌨️ 快捷键说明

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