五子棋人机交互c语言代码,Windows人机交互程序设计教学课件-第10课 五子棋程序.ppt...

www.themegallery.com,Company Logo,北方软件学院 North Software Institute,Windows人机交互程序设计,第10课 五子棋程序,www.themegallery.com,Company Logo,本节课主要内容,知识回顾 五子棋程序设计 文本输出函数 字体,www.themegallery.com,Company Logo,知识回顾,问题1:文本输出的函数是? 问题2:创建字体的函数是? 问题3:SelectObject函数的作用是? 问题4:字体的作用是?,www.themegallery.com,Company Logo,*绘制文字的API函数1,BOOL TextOut(HDC hdc,int x,int y,LPSTR pszText,int nSize); 功能:在窗口的指定的位置显示文字内容。 返回值:如果函数执行成功返回TRUE,如果函数执行失败返回FALSE.,www.themegallery.com,Company Logo,*参数内容,HDC hdc 设备环境句柄 int x 文本的输出的起始位置x坐标 int y 文本输出的起始位置y坐标 LPSTR pszText 要输出的文本内容0 int nSize 输出内容的尺寸,www.themegallery.com,Company Logo,举例,TextOut(hdc,0,10,”Hello Word”,strlen(“Hello Word”));,www.themegallery.com,Company Logo,*绘制文字的API函数2,int DrawText(HDC hDC , LPCTSTR lpString , int nCount , LPRECT lpRect ,UINT uFormat) 功能:在一个指定的矩形框内绘画文本 返回值:如果函数执行失败返回0,如果函数执行成功返回绘制文本的高度。,www.themegallery.com,Company Logo,*参数内容,HDC hdc 存放设备环境句柄。 LPCTSTR lpString , int nCount 存放要显示的文本的缓冲区和缓冲区尺寸。 LPRECT lpRect 存放文本显示的矩形区域。 UINT uFormat 文本显示格式说明,例如:DT_LEFT 文本靠左显示,www.themegallery.com,Company Logo,UINT uFormat 常用值,DT_BOTTOM //靠低显示 DT_CENTER // 居中显示 DT_LEFT //靠左显示 DT_RIGHT //靠右显示 DT_SINGLELINE //单行显示 DT_TOP //靠上完成 DT_VCENTER //垂直方向居中 DT_WORDBREAK //自动换行,www.themegallery.com,Company Logo,*如何创建字体,HFONT CreateFont(……); HFONT CreateFontIndirect(CONST LOGFONT *lplf ); 功能:创建字体 返回值:字体句柄,如果创建失败返回NULL;,www.themegallery.com,Company Logo,typedef struct tagLOGFONT { LONG lfHeight; LONG lfWidth; LONG lfEscapement; LONG lfOrientation; LONG lfWeight; BYTE lfItalic; BYTE lfUnderline; BYTE lfStrikeOut; BYTE lfCharSet; BYTE lfOutPrecision; BYTE lfClipPrecision; BYTE lfQuality; BYTE lfPitchAndFamily; CHAR lfFaceName[LF_FACESIZE]; } LOGFONT;,www.themegallery.com,Company Logo,LOGFONT LogFont; HFONT hFont, hOldFont; … … hFont = CreateFontIndirect(,www.themegallery.com,Company Logo,上机课,实验(1) 实现MessageBox输出的计算器; 实验(2) a. 创建窗口 b. 窗口在屏幕上的左上角(10,10)处出现,大小为(200,300); c. 窗口名称为“hello Word”;,www.themegallery.com,Company Logo,五子棋,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,www.themegallery.com,Company Logo,分析,设计该程序需要解决哪些问题? 1)应该具备哪些功能? 2)人机交互动作有哪些? 3)棋盘如何画?背景色如何实现?需要哪些函数? 4)棋子如何画?需要哪些函数? 5)需要什么样的数据结构? 6)程序算法和流程如何实现?,www.themegallery.com,Company Logo,五子棋——棋子位置,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,www.themegallery.com,Company Logo,程序流程——1 程序总流程,绘制棋盘,截获 鼠标消息,,绘制棋子,,,,www.themegallery.com,Company Logo,程序流程——2 下棋子的流程,鼠标点击,判断点击位置是否 在棋子位置上,绘画棋子,判断当前是黑棋 还是白棋下,,,,www.themegallery.com,Company Logo,数据结构设计,Struct Qizi{ int left; int Right; int Top; int Bottom; bool bIsShow; int bIsBlack; } aQi[100];,www.themegallery.com,Company Logo,程序流程**,开始,Windows入口 函数,消息循环 结束?,结束,,,,WM_LBUTTONDOWN,,输入界面,控件响应,注册窗口类,创建窗口,,,是,否,窗口过程处理函数,,,…,WM_PAINT,WM_PAINT,,,绘制棋盘,绘制棋子,,message== WM_PAINT,message== WM_LBUTTONDOWN,修改棋子状态,窗口刷新,,,Break;,,,,,WndProc开始,,否,是,,是,DefWindowProc,,否,,WndProc结束,,,,www.themegallery.com,Company Logo,需要哪些函数?,1)初始化坐标操作 2)判断当前点击位置是否在棋子位置上 3)绘制棋子函数 4)绘制棋盘函数,www.themegallery.com,Company Logo,函数接口设计,void InitQizi(int xStart,int yStart,int nRow,int nCol) void DrawQipan(HDC hdc,int xStart,int yStart,int row,int col) void DrawQizi(HDC hdc),

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值