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

其他游戏

开发平台:

Visual C++

  1. // EightView.cpp : implementation of the CEightView class
  2. //
  3. #include "stdafx.h"
  4. #include "Eight.h"
  5. #include "EightDoc.h"
  6. #include "EightView.h"
  7. #include "NineBox.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CEightView
  15. IMPLEMENT_DYNCREATE(CEightView, CView)
  16. BEGIN_MESSAGE_MAP(CEightView, CView)
  17. //{{AFX_MSG_MAP(CEightView)
  18. ON_WM_KEYDOWN()
  19. //}}AFX_MSG_MAP
  20. END_MESSAGE_MAP()
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CEightView construction/destruction
  23. CEightView::CEightView()
  24. {
  25. // TODO: add construction code here
  26. }
  27. CEightView::~CEightView()
  28. {
  29. }
  30. BOOL CEightView::PreCreateWindow(CREATESTRUCT& cs)
  31. {
  32. // TODO: Modify the Window class or styles here by modifying
  33. //  the CREATESTRUCT cs
  34. return CView::PreCreateWindow(cs);
  35. }
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CEightView drawing
  38. void CEightView::DrawBasic(CDC* pDC)
  39. {
  40. CEightDoc* pDoc = GetDocument();
  41. ASSERT_VALID(pDoc);
  42. NineBox* obj=pDoc->GetBoxObj();
  43. CString str="×";
  44. CRect rc;
  45. int x0=90;
  46. int y0=40;
  47. int x1=150;
  48. int y1=150;
  49. pDC->SetBkMode(TRANSPARENT);
  50. pDC->TextOut(10,370,"使用W,S,A,D或者箭头实现上下左右移动空格.");
  51. pDC->SetTextColor(RGB(255,0,0));
  52. for (int k=0;k<9;k++)
  53. {
  54. int i,j;
  55. obj->GetXYByValue(k,i,j);
  56. if (k!=0) 
  57. {
  58. str.Format("%d",obj->GetBoxValue(i,j));
  59. }
  60. rc.SetRect(x0+j*100,y0+i*100,x0+j*100+100,y0+i*100+100);
  61. pDC->Rectangle(rc);
  62. pDC->TextOut(x0+j*100+50,y0+i*100+50,str);
  63. if (k==0) 
  64. {
  65. pDC->SetTextColor(RGB(0,0,255));
  66. }
  67. }
  68. }
  69. void CEightView::OnDraw(CDC* pDC)
  70. {
  71. CEightDoc* pDoc = GetDocument();
  72. ASSERT_VALID(pDoc);
  73. // TODO: add draw code for native data here
  74. NineBox* obj=pDoc->GetBoxObj();
  75. DrawBasic(pDC);
  76. int x0=90;
  77. int y0=40;
  78. int x1=100;
  79. int y1=100;
  80. if (true)//some thing
  81. {
  82. CPen pen;
  83. CPen *oldpen;
  84. //------------------
  85. int i,j,t;
  86. int m,n,x,y;
  87. obj->GetXYByValue(0,i,j);
  88. t=obj->GetLastMoveType();
  89. if(t!=-1)
  90. {
  91. pen.CreatePen(1,2,RGB(255,25,180));
  92. x=m=x0+j*100+50;
  93. y=n=y0+i*100+50;
  94. switch(t)
  95. {
  96. case 1:
  97. y+=20;
  98. n+=80;
  99. break;
  100. case 2:
  101. y-=20;
  102. n-=80;
  103. break;
  104. case 3:
  105. x+=20;
  106. m+=80;
  107. break;
  108. case 4:
  109. x-=20;
  110. m-=80;
  111. break;
  112. default:;
  113. }
  114. oldpen=pDC->SelectObject(&pen);
  115. pDC->MoveTo(x,y);
  116. pDC->LineTo(m,n);
  117. for (int i=0;i<2;i++) 
  118. {
  119. pDC->MoveTo(x,y);
  120. m=x;n=y;
  121. HelpDraw(t,m,n);
  122. pDC->LineTo(m,n);
  123. }
  124. pDC->SelectObject(oldpen);
  125. }
  126. }
  127. }
  128. /////////////////////////////////////////////////////////////////////////////
  129. // CEightView diagnostics
  130. #ifdef _DEBUG
  131. void CEightView::AssertValid() const
  132. {
  133. CView::AssertValid();
  134. }
  135. void CEightView::Dump(CDumpContext& dc) const
  136. {
  137. CView::Dump(dc);
  138. }
  139. CEightDoc* CEightView::GetDocument() // non-debug version is inline
  140. {
  141. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEightDoc)));
  142. return (CEightDoc*)m_pDocument;
  143. }
  144. #endif //_DEBUG
  145. /////////////////////////////////////////////////////////////////////////////
  146. // CEightView message handlers
  147. void CEightView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
  148. {
  149. // TODO: Add your message handler code here and/or call default
  150. CEightDoc* doc=this->GetDocument();
  151. NineBox* obj=doc->GetBoxObj();
  152. switch(nChar)
  153. {
  154. case 'W':
  155. case 38:
  156. obj->MoveUp();
  157. break;
  158. case 'A':
  159. case 37:
  160. obj->MoveLeft();
  161. break;
  162. case 'S':
  163. case 40:
  164. obj->MoveDown();
  165. break;
  166. case 'D':
  167. case 39:
  168. obj->MoveRight();
  169. break;
  170. default:goto END;
  171. }
  172. doc->UpdateAllViews(0);
  173. END:CView::OnKeyDown(nChar, nRepCnt, nFlags);
  174. }