ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:18.68KB ,
资源ID:30241416      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30241416.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(可视化程序设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

可视化程序设计.docx

1、可视化程序设计可视化程序设计课程设计报告题目: 俄罗斯游戏方块 班级: 04级本一班 成员: 吴晓娟(0419411046) 赵粉娟(0419411035) 白冰(0419411034) 专业: 计算机科学与技术 日期: 2008-1-07 一、设计内容创建一个单文档应用程序, 设计一个简单的俄罗斯方块游戏,能够完成俄罗斯方块游戏的基本功能。二、设计目的通过本实验来巩固本学期中所学的Vc+ 中的类的使用,菜单资源的添加及使用,学会进行消息影射,能够实现对键盘消息进行响应。三、设计要求要求通过键盘上的左右方向键来控制游戏中方块的左右移动,通过键盘上的向上键来改变方块的排列方向,同过向下的键来使方

2、块直接移动到下面。通过在菜单栏里面的skill下的1,2,3,4来选择游戏的难度。四、设计原理先在菜单资源中添加和修改相应的资源,并对其进行消息映射,再在CView中添加相应的函数和变量完成相应的设置以实现其功能。主要是通过键盘消息响应实现各个方块的移动和变化。通过计时器实现游戏难度的设置。用数组的方式来表示游戏中的格子,每种不同排列的方块用不同的颜色来表示。方块移动时使用填充和绘制的方式来实现。五、 设计步骤1)创建MFC单文档应用程序。 2)添加和修改菜单资源,并进行消息映射。 3)利用ClassWizard添加成员变量。 4)利用ClassWizard添加成员函数及结构体point。六、

3、设计总结通过本次实验,巩固和更深的理解了本学期所学的知识,理解了类的定义,资源的添加和消息映射,对键盘消息的响应有了更好的掌握,七、主要源码具体代码如下:添加的成员变量如下: COLORREF tempcolor,color2010;void myDraw();int time;void Star(); int count;void Isover();int dop();int Isbottom();int Isout(int w);int round(int as); void clean(int b);int index;int R; int L;int H;int cor2010;int

4、 J;CBitmap* m_pbmpContents; / to get a faster update if flickerfree is on int K;BOOL flag,flag2;int Y;int X;int k;point aa4,bb4,dd4;添加成员函数及其代码如下:int CFanView:OnCreate(LPCREATESTRUCT lpCreateStruct) / 初始化游戏界面if (CView:OnCreate(lpCreateStruct) = -1) return -1; flag2=0;k=0; time=500; K=0; Y=0; for(int

5、i=0;i20;i+) for(int j=0;j11;j+) corij=0; count=0; R=0; L=0; H=0; index=0; flag=0; Star(); SetTimer(IDC_TIMER,time,NULL);return 0;/ 设置定时器void CFanView:OnTimer(UINT nIDEvent) Y=1; if(K) if(Isbottom() flag=1; clean(0); R=R+2; for(int a=0;a4;a+) aaa.x+; myDraw(); else if(K) Isover(); Star(); flag=1; Y=0

6、; CView:OnTimer(nIDEvent);void CFanView:clean(int b)for(int a=0;a4;a+) coraaa.xaaa.y=0; dda.x=aaa.x; dda.y=aaa.y; int CFanView:round(int as) int tempx=0,tempy=0,a,d=0,h=0; int temp2=0,temp1=0; for(a=0;a4;a+) bba.x=aaa.x; bba.y=aaa.y; if(index=1) temp1=aa2.x; temp2=aa2.y; h=2; else temp1=aa1.x; temp2

7、=aa1.y; h=1; for(a=0;a9)|(aaa.y19)|(aaa.x0) for(int d=0;d4;d+) aad.x=bbd.x; aad.y=bbd.y; return 0; return 1;int CFanView:Isout(int w)if(w=2) for(int a=0;a=9)|(coraaa.xaaa.y+1=2) return 1; if(w=1) for(int a=0;a4;a+) if(aaa.y=0)|(coraaa.xaaa.y-1=2) return 2; return 3;int CFanView:Isbottom()for(int a=0

8、;a4;a+) if(aaa.x=19) for(int c=0;c4;c+) coraac.xaac.y=2; coloraac.xaac.y=tempcolor; flag2=1; k=0; return 0; if(coraaa.x+1aaa.y=2) for(int c=0;c4;c+) coraac.xaac.y=2; coloraac.xaac.y=tempcolor; flag2=1; k=0; return 0; return 1;int CFanView:dop()for(int u=0;u20;u+) for(int a=0;a4;a+) if(coraaa.x+1aaa.

9、y=2) for(int c=0;c4;c+) coraac.xaac.y=2; coloraac.xaac.y=tempcolor; flag2=1; / flag=1; return 0; for(a=0;a4;a+) if(aaa.x=19) for(int c=0;c4;c+) coraac.xaac.y=2; coloraac.xaac.y=tempcolor; flag2=1; / flag=1; return 0; for(int o=0;o=0;a-) flagover=0; for(int b=0;b10;b+) if(corab=2) flagover+; if(flago

10、ver=10) count=count+100; for(b=0;b0;t-) for(b=0;b10;b+) if(cort-1b=2) cortb=2; colortb=colort-1b; flag2=1; cort-1b=0; colort-1b=RGB(255,255,255); a=a+1; for(a=0;a9;a+) if(cor0a=2) KillTimer(IDC_TIMER); MessageBox(游戏结束); / clean(1); count=0; for(int i=0;i20;i+) for(int j=0;jm_wndStatusBar.GetPaneInfo

11、(0,nID,nStyle,cxwidth); frame-m_wndStatusBar.SetPaneInfo(0,nID,SBPS_STRETCH|SBPS_NORMAL,cxwidth); CString cs; frame-m_wndStatusBar.SetPaneText(0,cs);/ 初始设置游戏的七个方块void CFanView:Star()for(int i=0;iSetCheck(1); else pCmdUI-SetCheck(0); void CFanView:On2() time=300;void CFanView:OnUpdate2(CCmdUI* pCmdUI

12、) if(time=300) pCmdUI-SetCheck(1); else pCmdUI-SetCheck(0); void CFanView:On3() time=60; void CFanView:OnUpdate3(CCmdUI* pCmdUI) if(time=60) pCmdUI-SetCheck(1); else pCmdUI-SetCheck(0); / 键盘响应消息映射void CFanView:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) if(!Y) K=0; switch(nChar) case VK_LEFT: c

13、ase VK_NUMPAD4: if(!(Isout(1)=2) flag=1; clean(0); H-; for(int a=0;a4;a+) aaa.y-; / Invalidate(); break;case VK_RIGHT: case VK_NUMPAD6: if(!(Isout(2)=1) flag=1; clean(0); H+; for(int a=0;a4;a+) aaa.y+; / Invalidate(); break; case VK_DOWN: case VK_NUMPAD2: clean(0); dop(); Isover(); Star(); break; ca

14、se VK_UP: case VK_NUMPAD8: case VK_NUMPAD5: clean(0); k+; round(k); / Invalidate(); break; K=1; myDraw();/ OnPaint(); CView:OnKeyDown(nChar, nRepCnt, nFlags);void CFanView:OnPaint() CPaintDC pdc(this); / device context for painting / ShowWindow(SW_HIDE); COLORREF clrTopLeft = RGB(68, 71, 140); COLOR

15、REF clrBottomRight = RGB(70, 166,152); COLORREF clrTopLeft2 = :GetSysColor(COLOR_BTNHILIGHT); COLORREF clrBottomRight2 = :GetSysColor(COLOR_BTNSHADOW); CRect rect; CMemDC dc(&pdc); register const UINT wide =20; register const UINT hight = 20;/ paint the board itself if(flag) for(int a=0;a4;a+) coraa

16、a.xaaa.y=1; for(int x=0;x20;x+) for(int j=0;j10;j+) if(corxj=1) dc.FillSolidRect(100+20+j*20,x*20,wide,hight,clrTopLeft); dc.Draw3dRect(100+20+j*20,x*20,wide,hight,clrTopLeft, clrBottomRight); for(int x=0;x20;x+) for(int j=0;j10;j+) dc.FillSolidRect(100+20+j*20,x*20,wide,hight,clrTopLeft2); dc.Draw3

17、dRect(100+20+j*20,x*20,wide,hight,clrTopLeft, clrTopLeft2); for( x=0;x20;x+) for(int j=0;j10;j+) if(corxj=1)|(corxj=2) dc.FillSolidRect(100+20+j*20,x*20,wide,hight,clrTopLeft); dc.Draw3dRect(100+20+j*20,x*20,wide,hight,clrTopLeft, clrBottomRight); / 游戏过程中界面的变化过程void CFanView:myDraw() CDC* dc=GetDC()

18、; COLORREF clrTopLeft = RGB(68, 71, 140); COLORREF clrBottomRight = RGB(70, 166,152); COLORREF clrTopLeft2 = :GetSysColor(COLOR_BTNHILIGHT); COLORREF clrBottomRight2 = :GetSysColor(COLOR_BTNSHADOW); register const UINT wide =20; register const UINT hight = 20;/ paint the board itself for(int a=0;aFi

19、llSolidRect(100+20+dda.y*20,dda.x*20,wide,hight,clrTopLeft2); dc-Draw3dRect(100+20+dda.y*20,dda.x*20,wide,hight,clrTopLeft2, clrBottomRight2); dc-FillSolidRect(100+20+dda.y*20,dda.x*20,wide,hight,clrTopLeft2); dc-Draw3dRect(100+20+dda.y*20,dda.x*20,wide,hight,clrTopLeft, clrTopLeft2); if(flag) for(int a=0;a4;a+) coraaa.xaaa.y=1; for(int x=0;x20;x+) for(int j=0;jFillSolidRect(100+20+j*20,x*20,wide,hight,tempcolor); dc-Draw3dRect(100+20+j*20,x*20,wide,hight,clrTopLeft, tempcolor); if(flag2) for(int x=0;x20

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1