搜索
您的当前位置:首页弹球小游戏开发说明书

弹球小游戏开发说明书

来源:智榕旅游
Mfc_PlayBall 项目说明书

一、游戏的概述

移动“球板”来驱动“小球”碰撞“砖块”。

游戏进行中采用幂函数积分,Y2。玩家将体验量变和质变的过程。

x二、游戏的元素

“玩家”、“小球”、“球板”、“砖块”、“Level”、“对白”、“积分”、“Timer”

由此设计的类图:

三、游戏的机制

1、积分规则:

一个回合之内,“小球”碰撞第1个“砖块”得1分,再碰撞第2个“砖块”得2分,第3个“砖块”得3分,第4

个得8分,以此类推……,当积分超过一亿时,“小球”的个数加“1”。

m_iDestoryOnce++; // 碰撞到“砖块”,即“++”

m_iDestoryOnce =0; // 一个回合结束,碰撞到“球板”

m_dwScore +=pow( (int)2,(float)m_iDestoryOnce -1 );

if ( m_dwScore >=100000000 )

{

if( m_bIsStart ==TRUE )

::SendMessage( m_hWnd, WM_KEYDOWN, VK_SPACE, NULL );

char str[128];

sprintf_s( str, \"积分 “Score = %d”过亿。\\n\\n %d 亿+ +\", m_dwScore, m_dwHundredMillion );

MessageBox( str, \"恭喜 恭喜\" );

m_dwScore =m_dwScore %100000000;

int add =m_dwScore /100000000;

m_ball.m_iCounter +=add;

m_dwHundredMillion +=add;

m_iDestoryOnce =0;

}

CString strScore;

strScore.Format( \" Score : %d + %d 亿\" ,m_dwScore, m_dwHundredMillion );

( ( CMainFrame* )GetParent() )->m_wndStatusBar.SetPaneText( 2, strScore );

2、玩家

开始游戏时玩家有3个“小球”,积分为“0”。玩家应当维护“小球”的数量,因为当“小球”为“0”时,就游戏结束了。

3、Level(关卡)

关卡一个10个,Lv 1到Lv 10。

4、Timer(时间)

每一关开始时Timer =99。玩家应当在99秒内打破所有“砖块”。Timer 为“0”时,游戏结束。

/* 1,000(毫秒)= 1(秒)

m_dwTimer(定时器)初始为“99,000”(毫秒)*/

m_dwTimer =99000;

/* DWORD WINAPI GetTickCount(void);

取得Windows 从启动开始经过的时间,单位为毫秒 */

if (m_bIsStart ==FALSE) // 启动游戏

{

SetTimer(1,10,NULL); // 设置“触发器1”,每隔“10”毫秒触发一次 OnTimer() 函数

m_dwStartTime =::GetTickCount(); // 设置开始的时间

m_dwEndTime =m_dwStartTime +m_dwTimer; // 计算结束的时间

m_bIsStart =TRUE; // 游戏当前状态为“启动”

}

else // 暂停游戏

{

KillTimer(1); // 关闭“触发器1”

m_dwCurTime =::GetTickCount(); // 设置当前时间

DWORD stepTime;

stepTime =m_dwCurTime -m_dwStartTime; // 计算 “计时器1”if( stepTime <=m_dwTimer ) // 确保定时器的值大于“0”

m_dwTimer -=stepTime; // 更新m_dwTimer(定时器)

else

{

MessageBox(\"Timer Out!\");

m_dwTimer =99000;

}

m_bIsStart =FALSE; // 游戏当前状态为“暂停”

的运行时间

}

void Cmfc_PlayBallView::OnTimer(UINT_PTR nIDEvent)

{

m_dwCurTime =::GetTickCount(); // 设置当前时间

CString strTimer;

strTimer.Format(\" Timer : %2d\",( m_dwTimer – ( m_dwCurTime - m_dwStartTime ) )/1000 );

((CMainFrame*)GetParent())->m_wndStatusBar.SetPaneText(4,strTimer);

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top