EightView.cpp
资源名称:8-Games.rar [点击查看]
上传用户:tjwfgggs
上传日期:2022-06-07
资源大小:4331k
文件大小:4k
源码类别:
其他游戏
开发平台:
Visual C++
- // EightView.cpp : implementation of the CEightView class
- //
- #include "stdafx.h"
- #include "Eight.h"
- #include "EightDoc.h"
- #include "EightView.h"
- #include "NineBox.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CEightView
- IMPLEMENT_DYNCREATE(CEightView, CView)
- BEGIN_MESSAGE_MAP(CEightView, CView)
- //{{AFX_MSG_MAP(CEightView)
- ON_WM_KEYDOWN()
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CEightView construction/destruction
- CEightView::CEightView()
- {
- // TODO: add construction code here
- }
- CEightView::~CEightView()
- {
- }
- BOOL CEightView::PreCreateWindow(CREATESTRUCT& cs)
- {
- // TODO: Modify the Window class or styles here by modifying
- // the CREATESTRUCT cs
- return CView::PreCreateWindow(cs);
- }
- /////////////////////////////////////////////////////////////////////////////
- // CEightView drawing
- void CEightView::DrawBasic(CDC* pDC)
- {
- CEightDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- NineBox* obj=pDoc->GetBoxObj();
- CString str="×";
- CRect rc;
- int x0=90;
- int y0=40;
- int x1=150;
- int y1=150;
- pDC->SetBkMode(TRANSPARENT);
- pDC->TextOut(10,370,"使用W,S,A,D或者箭头实现上下左右移动空格.");
- pDC->SetTextColor(RGB(255,0,0));
- for (int k=0;k<9;k++)
- {
- int i,j;
- obj->GetXYByValue(k,i,j);
- if (k!=0)
- {
- str.Format("%d",obj->GetBoxValue(i,j));
- }
- rc.SetRect(x0+j*100,y0+i*100,x0+j*100+100,y0+i*100+100);
- pDC->Rectangle(rc);
- pDC->TextOut(x0+j*100+50,y0+i*100+50,str);
- if (k==0)
- {
- pDC->SetTextColor(RGB(0,0,255));
- }
- }
- }
- void CEightView::OnDraw(CDC* pDC)
- {
- CEightDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- // TODO: add draw code for native data here
- NineBox* obj=pDoc->GetBoxObj();
- DrawBasic(pDC);
- int x0=90;
- int y0=40;
- int x1=100;
- int y1=100;
- if (true)//some thing
- {
- CPen pen;
- CPen *oldpen;
- //------------------
- int i,j,t;
- int m,n,x,y;
- obj->GetXYByValue(0,i,j);
- t=obj->GetLastMoveType();
- if(t!=-1)
- {
- pen.CreatePen(1,2,RGB(255,25,180));
- x=m=x0+j*100+50;
- y=n=y0+i*100+50;
- switch(t)
- {
- case 1:
- y+=20;
- n+=80;
- break;
- case 2:
- y-=20;
- n-=80;
- break;
- case 3:
- x+=20;
- m+=80;
- break;
- case 4:
- x-=20;
- m-=80;
- break;
- default:;
- }
- oldpen=pDC->SelectObject(&pen);
- pDC->MoveTo(x,y);
- pDC->LineTo(m,n);
- for (int i=0;i<2;i++)
- {
- pDC->MoveTo(x,y);
- m=x;n=y;
- HelpDraw(t,m,n);
- pDC->LineTo(m,n);
- }
- pDC->SelectObject(oldpen);
- }
- }
- }
- /////////////////////////////////////////////////////////////////////////////
- // CEightView diagnostics
- #ifdef _DEBUG
- void CEightView::AssertValid() const
- {
- CView::AssertValid();
- }
- void CEightView::Dump(CDumpContext& dc) const
- {
- CView::Dump(dc);
- }
- CEightDoc* CEightView::GetDocument() // non-debug version is inline
- {
- ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEightDoc)));
- return (CEightDoc*)m_pDocument;
- }
- #endif //_DEBUG
- /////////////////////////////////////////////////////////////////////////////
- // CEightView message handlers
- void CEightView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
- {
- // TODO: Add your message handler code here and/or call default
- CEightDoc* doc=this->GetDocument();
- NineBox* obj=doc->GetBoxObj();
- switch(nChar)
- {
- case 'W':
- case 38:
- obj->MoveUp();
- break;
- case 'A':
- case 37:
- obj->MoveLeft();
- break;
- case 'S':
- case 40:
- obj->MoveDown();
- break;
- case 'D':
- case 39:
- obj->MoveRight();
- break;
- default:goto END;
- }
- doc->UpdateAllViews(0);
- END:CView::OnKeyDown(nChar, nRepCnt, nFlags);
- }