没有合适的资源?快使用搜索试试~ 我知道了~
VC++打地鼠游戏(word文档良心出品).doc
0 下载量 59 浏览量
2022-11-13
13:03:34
上传
评论
收藏 381KB DOC 举报
温馨提示
试读
16页
VC++打地鼠游戏(word文档良心出品).doc
资源推荐
资源详情
资源评论
第五章 老鼠和滚球
1. 1. 实现思想
老鼠和滚球游戏,是我根据自己的意愿,是为了我将要说明的下面有关内容而设置的。
由于没有经过具体实践,我并不能保证其趣味性和吸引力,我们学习的是它实现过程中的一
些思想。希望对读者有所帮助。
其实,这种游戏,在街头电子游戏中是常见的。但由于电脑的渐渐普及,大规模游戏的
迅速出现,已经不适合玩者的需求了。但是,我们可以以小见大,在学习小游戏的基础上,
慢慢培养设计大游戏的一些方法和技巧。
关于游戏的角色:
老鼠,是游戏的主角,它有三条生命,它为了生存,必须能够逃脱灾难性的局面(被滚
球撞到),它在经过所谓的适者生存的淘汰之后,学会了使用子弹;而且是一种能够消灭滚
球的子弹,以达到防身的目的。每打中一个球得一分,每被撞一下失去一条生命。
滚球,一共有 50 个,但为了维持生态平衡,最多只能出来六个。滚球,是为了消灭老
鼠而存在的,它将会在现代科技的伪随机函数中不定向地出现。
红心,生命的象征,只要你能碰到它,你就幸运了,因为由此你会得到一条生命。当然,
生存需要竞争,需要你自己去创造;只要你在消灭了很多滚球之后,你才有可能取得。正因
为这个原因,我把它安排在滚球出现的地方。
关于游戏的实现:
游戏,经常都是全屏的,但是由于我们的目的不仅仅在于游戏本身,我们的宗旨是利用
游戏的趣味性和吸引力,来增强读者学习程序语言的信心。所以,在前面我们都没有用到全
屏显示,我们不需要。
另外说明:本游戏的全屏只适应于 800*600 的分辨率。
全屏,是这个游戏的一点要学习的。多位图的移动,是本游戏要学习的第二个内容,上
面的最多只有两个位图可以移动,这是由于游戏本身决定的。当然,这个游戏的多位图移动,
也是游戏本身决定的,但却是我之所以选择它为第五章的原因。当然,我们没有那么多的手
去操作键盘,去移动位图。我们必须设置我们的程序,让程序自己去执行,去移动,去显示
计算机的优越性。
这个游戏,比起上面来,它是一个更加复杂的社会,它不再只是玩者一个人充当角色。
所以,我们新建了各自的类。
新建工程 5_1,为单文档默认设置。
2. 2. 制作位图
既然游戏是复杂的,它就需要很多位图,但由于我们在前面已经用了很多位图,我们这
里就不多说了。只是说明一下位图的数量和大小。
背景位图:800*600 1 张 IDB_BITMAP1
老鼠位图:50*50 4 张 IDB_BITMAP2
(两只老鼠两个方向) IDB_BITMAP3
IDB_BITMAP7
IDB_BITMAP8
滚球位图:50*50 1 张 IDB_BITMAP4
红心位图:50*50 1 张 IDB_BITMAP11
子弹位图:50*50 4 张 IDB_BITMAP5
(两种颜色两个方向) IDB_BITMAP6
IDB_BITMAP9
IDB_BITMAP10
3. 3. 变量和函数
老鼠:
它有位置,分数,方向,生命力,子弹和它自己。其中它自己的图像及它射出来的子弹
都有前后方向。我们必须为它定义一个类,以让两个老鼠共用。
新建类:CMouse
添加变量如下:
CPoint point;//位置
CBitmap bitmapa;//向后图像
CBitmap bitmapb;//向前图像
CBitmap shota;//向后子弹
CBitmap shotb;//向前子弹
int score;//分数
short direction;//方向
short lifes;//生命
滚球:
它也有位置,也有它自己的图像。由于一共有五十个球,最多会显示六个球,我们也定
义它为一共类。
新建类:CBall
添加变量如下:
CPoint point;
CBitmap bitmap;//由于对称,我们只要一个位图
游戏:
由于它的复杂性,程序,由于它的复杂性,为了不使它们更加复杂,我们也为游戏的
实现本身建立一个类。
新建类:CGame
添加变量如下:
CBall ball[6];//六个滚球
short ballnum;//滚球数:50
CMouse m1,m2;//两只老鼠
int yy[16][12];//屏幕数组
CBitmap shot;//子弹位图
bool heart1,heart2;//两个红心是否显示
CBitmap heart;//红心位图
既然是游戏本身,它必定要实现很多功能,我们添加如下函数:
void GetHeart();//老鼠得到红心
void KillBall();//老鼠打中滚球
void KillMouse();//滚球杀死老鼠
void Draw(CDC*pDC);//画界面
void DrawScore(CDC*pDC);//画分数
void BallMove();//使球滚动
最后,到了主程序,为了实现全屏,我们在 CMainFrame 中添加如下变量和函数:
CRect m_FullScreenRect;//全屏显示时的窗口位置
void OnFullScreen();//全屏显示
在 CMy5_1View 中添加如下变量和函数:
CGame game;//游戏对象
CBitmap cloud;//背景云图
OnTimer(UINT nIDEvent)
OnCreate(LPCREATESTRUCT lpCreateStruct)
OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
4. 4. 具体实现
全屏显示:
首先,我们必须使单文档以全屏形式出现,并设置为不能改动大小,没有工具栏和状
态栏,没有菜单。
添加 OnFullScreen()函数如下:
void CMainFrame::OnFullScreen()
{
// TODO: Add your command handler code here
CRect WindowRect;
GetWindowRect(&WindowRect);
CRect ClientRect;
RepositionBars(0,0xffff,AFX_IDW_PANE_FIRST,reposQuery,&ClientRect);
ClientToScreen(&ClientRect);
//获取屏幕的分辨率
int nFullWidth=GetSystemMetrics(SM_CXSCREEN);
int nFullHeight=GetSystemMetrics(SM_CYSCREEN);
m_FullScreenRect.left=WindowRect.left-ClientRect.left;
m_FullScreenRect.top=WindowRect.top-ClientRect.top;
m_FullScreenRect.right=WindowRect.right-ClientRect.right+nFullWidth;
m_FullScreenRect.bottom=WindowRect.bottom-ClientRect.bottom+nFullHeight;
剩余15页未读,继续阅读
资源评论
zzzzl333
- 粉丝: 691
- 资源: 7万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功