- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
51CTO-星际迷航
星际迷航
学生:陶然 学号:070521047
摘要:本文分析了飞机在飞行过程中随着鼠标移动的飞行轨迹,碰撞的物理显现,运用游戏画面绘制贴图、游戏输入消息处理、游戏动画技巧、游戏物理现象设计原理以及人工智能技术,利用Microsoft Visual C++ 6.0开发了星际迷航这款游戏。实验结果表明了
关键字: 绘制贴图 消息处理 人工智能 VC++
1.引言
2D游戏开发是游戏开发领域中一个不可或缺的重要分支,绝大多数休闲游戏与动漫游戏都是使用2D游戏技术开发实现的。
”BackGround.bmp”)如图3-1所示读取到内存中并绘制到屏幕上。
图3-1
首先运用LoadImage()函数从文件中加载位图。
BackGround=(HBITMAP)LoadImage(NULL,BackGround.bmp,IMAGE_BITMAP,800,600,LR_LOADFROMFILE);
建立一个与窗口DC兼容的内存DC
hdc = GetDC(hWnd);
mdc = CreateCompatibleDC(hdc);
建立一个与窗口DC兼容的缓冲DC
bufdc = CreateCompatibleDC(hdc);
bmp = CreateCompatibleBitmap(hdc,800,600);
内存DC使用位图对象
SelectObject(bufdc,BackGround);
将内存DC的内容贴到窗口DC中完成画面的显示
BitBlt(mdc,0,0,800,w,bufdc,0,600-w,SRCCOPY);
BitBlt(mdc,0,w,800,600-w,bufdc,0,0,SRCCOPY);
运行结果如图3-2
3.2星际迷航动画
3.2.1星际迷航角色动画(飞机)
为了实现鼠标控制飞机飞行,当鼠标一移动,获取鼠标X的坐标,在消息处理函数中加入下列代码:
x = LOWORD(lParam);
如果飞机的X坐标大于窗口临界值,则X等于临界值,若飞机的X坐标小于0,则将X设定为0,加入下列代码:
if(x 730)
x = 730;
else
if(x 0)
x = 0;
同理,获取Y坐标,加入如下代码:
y = HIWORD(lParam);
if(y 480)
y = 480;
else if(y 0)
y = 0;
运行结果如图3-4和3-5
图3-4 图3-5
3.2.2计算机角色动画(石头)
运行结果如图3-6
图3-6
运行结果如图3-7
为了实现游戏石头下落效果,定义一个速度VY,并计算Y轴坐标,并不停的往下贴,加入如下代码:
vy=15;
Sy += vy;
图3-7
图3-8
3.2.3星际迷航背景动画(动的背景)
为了实现背景动画的滚动效果,设定一个间隔时间tPre以及图片宽度W代码实现如下
BitBlt(hdc,0,0,800,600,mdc,0,0,SRCCOPY);
tPre = GetTickCount();
w +=10;
if(w=600)
w = 0;
图片的随着时间Y坐标不断增加10,如果当整个图片600的话,则将图片重新滚动一遍。
4、物理现象
为了实现整个游戏的碰撞效果的物理现象,首先加载游戏的石头位图
baozha0=(HBITMAP)LoadImage(NULL,baozha0.bmp,IMAGE_BITMAP,316,632,LR_LOADFROMFILE);
baozha1=(HBITMAP)LoadImage(NULL,baozha1.bmp,IMAGE_BITMAP,316,632,LR_LOADFROMFILE);
baozha2=(HBITMAP)LoadImage(NULL,baozha2.bmp,IMAGE_BITMAP,316,632,LR_LOADFROMFILE);
baozha3=(HBITMAP)LoadImage(NULL,baozha3.bmp,IMAGE_BITMAP,316,632,LR_LOADFROMFILE);
5、实验结果及分析
6、结论
参考文献
文档评论(0)