请问这个棋+牌游+戏怎样linux返回上一层目录录的命令?

1167人阅读
VC++ Game(1)
& & & & 在我学习游戏开发的过程中,遇到的最大的麻烦就是不知道一个游戏的完整实现过程,代码倒是其次。
这里,总结一下我做过的游戏,主要是梳理整每个步骤。
先看下最终的效果
准备图片(黑棋、白棋各一张)
1.&&&&&& 五子棋位图
2.&&&&&& 光标位图
3.&&&&&& 图标位图
自己作图,或者网上下载都可以
初始化界面和函数,包括
0.设置窗口大小、样式
在函数BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中
添加如下代码
cs.dwExStyle |= WS_EX_TOPMOST;
cs.style = WS_SYSMENU | WS_MINIMIZEBOX ;
cs.cx=610;
cs.cy=680;
还可以在OnCreate里设置图标(使用SetClassLang函数),图片左上角可爱的熊猫如是诞生^_^
1.在C**View构造函数中加载五子棋位图、光标位图、图标位图,初始化棋盘,设置白棋/黑棋先行等
//加载五子棋位图
m_bmblaak.LoadBitmap(IDB_BITMAP2);
m_bmwhite.LoadBitmap(IDB_BITMAP1);
//加载光标位图
hcursorBlack=AfxGetApp()-&LoadCursor(IDC_CURSOR2);
hcursorWhite=AfxGetApp()-&LoadCursor(IDC_CURSOR1);
//加载图标位图
hiconBlack=AfxGetApp()-&LoadIcon(IDI_BLACK);
hiconWhite=AfxGetApp()-&LoadIcon(IDI_WHITE);
//初始化棋盘为空
for(int i=0;i&19;i++)
for(int j=0;j&19;j++)
gomoku[i][j]=0;
//当前状态: 白棋下/人人对战模式
isWhite=1;
isComputer=0;
whitePoint.x=whitePoint.y=-1;
blackPoint.x=blackPoint.y=-1;
2.在OnDraw()函数中画界面
画棋盘背景
brush.CreateSolidBrush(RGB(192,192,192));
CRect rect(0,0,700,700);
pDC-&FillRect(rect,&brush);
CPen *oldP
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
oldPen=pDC-&SelectObject(&pen);
for(i=0;i&19;i++)
pDC-&MoveTo(30,30+i*30);
pDC-&LineTo(570,30+i*30);
pDC-&MoveTo(30+i*30,30);
pDC-&LineTo(30+i*30,570);
重画时显示棋子
if(false==dc.CreateCompatibleDC(pDC))
AfxMessageBox(&Can't create dc&);
for(i=0;i&19;i++)
for(j=0;j&19;j++)
if(1==gomoku[i][j])
dc.SelectObject(m_bmwhite);
pDC-&BitBlt(18+30*i,18+30*j,160,160,&dc,0,0,SRCCOPY);
else if(-1==gomoku[i][j])
dc.SelectObject(m_bmblaak);
pDC-&BitBlt(18+30*i,18+30*j,160,160,&dc,0,0,SRCCOPY);
3.设置鼠标
第2步结束之后,鼠标放在棋盘上仍然是指针状态,要把它变为下图
所示的棋子形状。(使用OnSetCursor函数设置棋子的图标、状态栏的图标和提示文字)
BOOL CGomokuView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
// TODO: Add your message handler code here and/or call default
if(HTCLIENT==nHitTest)
CMainFrame *pFrm=(CMainFrame*)AfxGetApp()-&m_pMainW
CStatusBar *pStatus=&pFrm-&m_wndStatusB
if(isWhite)
if(pStatus)
pStatus-&GetStatusBarCtrl().SetIcon(0,hiconWhite);
pStatus-&SetPaneText(0,&白棋下&);
SetCursor(hcursorWhite);
SetCursor(hcursorBlack);
if(pStatus)
pStatus-&GetStatusBarCtrl().SetIcon(0,hiconBlack);
pStatus-&SetPaneText(0,&黑棋下&);
return CView::OnSetCursor(pWnd, nHitTest, message);
实现游戏操作
现在开始把棋子放在棋盘上
使用OnLButtonUp函数,在函数内除了把棋子放在棋盘上,还要判断游戏是否结束。如果未结束,要切换棋子状态(下完黑棋下白棋),下棋的时候,要判断原来位置是否有棋子,如果有,就不能再放了。
(关于如何把棋子放在棋盘上 和 如何判断是否结束,代码比较多,就不贴出来了。。。)
1. 打开、保存游戏
主要涉及CFileDialog、CFile、CStdioFile、CArchive的使用。可以在工具栏上面创建相应的图标来对应相应的功能
2.&&&&&&重新开始、人人对战、人机对战、悔棋操作
常见的悔棋操作一般可以一直回到第一步,这里为了简单起见,只设置回一步棋。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:167500次
积分:3528
积分:3528
排名:第7826名
原创:201篇
评论:32条
文章:13篇
阅读:18387
(2)(1)(1)(1)(1)(4)(9)(5)(10)(19)(7)(78)(63)}

我要回帖

更多关于 返回上一层 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信