📄 ball.cpp
字号:
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
// 嗨!我是王晓钰。
// 我的E-mail是:XiaoYu.wang@263.net 有问题可以发邮件或在网站上留言
// 欢迎你访问我的个人主页:“笑语小园”http://xiaoyu.2699.comn
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
// 二○○○年七月
// 让我们继续看我的程序。
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
#include <afxwin.h>
//#include "resource.h"
// 框架窗口类
class CMyWnd: public CFrameWnd
{
CRect m_rectBody;
public:
CMyWnd()
{
srand((unsigned)time(NULL));
m_nX = 10;
m_nY = 10;
m_nWidth = 22;
m_nHeight = 22;
for(int i=0; i<20; i++)
for(int j=0; j<20; j++)
{
m_nMaze[i][j] = rand()%2;
if(m_nMaze[i][j])m_nMaze[i][j]=rand()%2;
}
for(i=0; i<20; i++)
{
m_nMaze[ 0][ i] = 1;
m_nMaze[19][ i] = 1;
m_nMaze[ i][ 0] = 1;
m_nMaze[ i][19] = 1;
}
m_nMaze[18][18]=0;
}
protected:
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
private:
int m_nHeight;
int m_nWidth;
int m_nMaze[20][20];
int m_nY;
int m_nX;
};
// 消息映射
BEGIN_MESSAGE_MAP(CMyWnd, CFrameWnd)
ON_WM_KEYDOWN()
ON_WM_PAINT()
END_MESSAGE_MAP()
// 框架窗口类的成员函数
void CMyWnd::OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags )
{
InvalidateRect(m_rectBody, TRUE);
switch(nChar)
{
case VK_UP:
if(m_nMaze[m_nX][m_nY-1]==0)
m_nY--;
break;
case VK_DOWN:
if(m_nMaze[m_nX][m_nY+1]==0)
m_nY++;
break;
case VK_LEFT:
if(m_nMaze[m_nX-1][m_nY]==0)
m_nX--;
break;
case VK_RIGHT:
if(m_nMaze[m_nX+1][m_nY]==0)
m_nX++;
break;
}
m_rectBody=CRect( 10+m_nX*m_nWidth,
10+m_nY*m_nHeight,
10+m_nX*m_nWidth+m_nWidth,
10+m_nY*m_nWidth+m_nHeight);
InvalidateRect(m_rectBody, FALSE);
if(m_nX==18&&m_nY==18)MessageBox("game is over!");
}
void CMyWnd::OnPaint()
{
CPaintDC dc(this);
for(int i=0; i<20; i++)
for(int j=0; j<20; j++)
{
if(m_nMaze[i][j]==0)
{
dc.SelectStockObject(LTGRAY_BRUSH);
dc.SelectStockObject(WHITE_PEN);
}
else
{
dc.SelectStockObject(BLACK_BRUSH);
dc.SelectStockObject(BLACK_PEN);
}
dc.Rectangle( 10+i*m_nWidth,
10+j*m_nHeight,
10+i*m_nWidth+m_nWidth,
10+j*m_nHeight+m_nHeight);
}
dc.SelectStockObject(DKGRAY_BRUSH);
dc.SelectStockObject(BLACK_PEN);
m_rectBody=CRect( 10+m_nX*m_nWidth,
10+m_nY*m_nHeight,
10+m_nX*m_nWidth+m_nWidth,
10+m_nY*m_nWidth+m_nHeight);
dc.Ellipse(m_rectBody);
}
// 应用程序类
class CMyApp: public CWinApp
{
public:
BOOL InitInstance();
};
// 应用程序类的成员函数
BOOL CMyApp::InitInstance()
{
CMyWnd *pFrame = new CMyWnd;
pFrame->Create(0,_T("Move Ellipse With Keyboard"));
pFrame->ShowWindow(SW_SHOWMAXIMIZED);
pFrame->UpdateWindow();
this->m_pMainWnd = pFrame;
return TRUE;
}
// 全局应用程序对象
CMyApp ThisApp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -