StepList.cpp
上传用户:onward9999
上传日期:2022-06-27
资源大小:989k
文件大小:2k
源码类别:

其他游戏

开发平台:

Visual C++

  1. // StepList.cpp: implementation of the CStepList class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "Chess.h"
  6. #include "BaseDef.h"
  7. #include "BaseClasses.h"
  8. #include "StepList.h"
  9. #ifdef _DEBUG
  10. #undef THIS_FILE
  11. static char THIS_FILE[]=__FILE__;
  12. #define new DEBUG_NEW
  13. #endif
  14. //////////////////////////////////////////////////////////////////////
  15. // Construction/Destruction
  16. //////////////////////////////////////////////////////////////////////
  17. CStepList::CStepList()
  18. {
  19. m_pHead=new STEPNODE;
  20. m_pHead->left=NULL;
  21. m_pHead->right=NULL;
  22. m_pHead->Data=NULL;
  23. m_pCur=m_pHead;
  24. }
  25. CStepList::~CStepList()
  26. {
  27. m_pCur=m_pHead;
  28. Remove();
  29. delete m_pHead;
  30. }
  31. void CStepList::Go(CStep *step)
  32. {
  33. STEPNODE* node=new STEPNODE;
  34. node->left=m_pCur;
  35. node->Data=step;
  36. node->right=NULL;
  37. Remove();
  38. m_pCur->right=node;
  39. m_pCur=node;
  40. }
  41. void CStepList::Remove()
  42. {
  43. STEPNODE * p;
  44. p=m_pCur;
  45. for(;p->right!=NULL;p=p->right);
  46. while(p!=m_pCur)
  47. {
  48. delete p->Data;
  49. p=p->left;
  50. delete p->right;
  51. }
  52. p->right=NULL;
  53. }
  54. CStep* CStepList::Undo()
  55. {
  56. if(m_pCur==m_pHead)return NULL;
  57. m_pCur=m_pCur->left;
  58. return m_pCur->right->Data;
  59. }
  60. CStep* CStepList::Redo()
  61. {
  62. if(m_pCur->right==NULL)return NULL;
  63. m_pCur=m_pCur->right;
  64. return m_pCur->Data;
  65. }
  66. void CStepList::RemoveAll()
  67. {
  68. m_pCur=m_pHead;
  69. Remove();
  70. }
  71. BOOL CStepList::IsHead()
  72. {
  73. if(m_pCur==m_pHead)return TRUE;
  74. return FALSE;
  75. }
  76. BOOL CStepList::IsEnd()
  77. {
  78. if(m_pCur->right==NULL)return TRUE;
  79. return FALSE;
  80. }