NineBox.h
上传用户:tjwfgggs
上传日期:2022-06-07
资源大小:4331k
文件大小:2k
源码类别:

其他游戏

开发平台:

Visual C++

  1. // NineBox.h: interface for the NineBox class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_NINEBOX_H__06C6DA3D_AA28_43F6_9D4E_3E69C6D59F82__INCLUDED_)
  5. #define AFX_NINEBOX_H__06C6DA3D_AA28_43F6_9D4E_3E69C6D59F82__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. struct BOX
  10. {
  11. int num;
  12. int x;
  13. int y;
  14. };
  15. class NineBox  
  16. {
  17. public:
  18. NineBox();
  19. virtual ~NineBox();
  20. public:
  21. void ResetValue()
  22. {
  23. int v[3][3]={1,2,3,8,0,4,7,6,5};
  24. for (int i=0;i<3;i++) 
  25. {
  26. for (int j=0;j<3;j++) 
  27. {
  28. box[i][j].num=v[i][j];
  29. box[i][j].x=i;
  30. box[i][j].y=j;
  31. }
  32. }
  33. move_type=-1;
  34. }
  35. int GetBoxValue(int x,int y)
  36. {
  37. if(abs(x)<3 && abs(y)<3)
  38. {
  39. return box[x][y].num;
  40. }
  41. else
  42. return -1;
  43. }
  44. bool GetXYByValue(int num,int& x,int& y)
  45. {
  46. if (num<9 && num>=0) 
  47. {
  48. x=-1;y=-1;
  49. for (int i=0;i<3;i++)
  50. {
  51. for (int j=0;j<3;j++)
  52. {
  53. if (box[i][j].num==num)
  54. {
  55. x=box[i][j].x;
  56. y=box[i][j].y;
  57. return true;
  58. }
  59. }
  60. }
  61. return false;
  62. }
  63. else
  64. return false;
  65. }
  66. void MoveUp();
  67. void MoveDown();
  68. void MoveLeft();
  69. void MoveRight();
  70. void swap(int x0,int y0,int x1,int y1)
  71. {
  72. int temp=0;
  73. temp=box[x0][y0].num;
  74. box[x0][y0].num=box[x1][y1].num;
  75. box[x1][y1].num=temp;
  76. }
  77. int GetLastMoveType(){return move_type;}
  78. void SetLastMoveType(int t){move_type=t;}
  79. private:
  80. BOX box[3][3];
  81. int move_type;
  82. };
  83. #endif // !defined(AFX_NINEBOX_H__06C6DA3D_AA28_43F6_9D4E_3E69C6D59F82__INCLUDED_)