funcode 音乐播放、提示及提示消失、时间显示等(c++版)

一、音乐播放:

先在 LessonX.cpp 加入头文件:

#include<windows.h>

#include<mmsystem.h>

#pragma comment(lib,"Winmm.lib")

再在想播放的地方加上:

PlaySound("game/data/audio/fate.wav",NULL,SND_FILENAME|SND_ASYNC );//音乐要循环的话还需在第三个参数后加上  |SND_LOOP

"game/data/audio/fate.wav"为添加音乐的位置,"fate"为自定义的音乐名称,可在funcode界面添加音乐中找到。注意音乐的格式,.ogg或 .wav。

(这种方法在另一段音乐播放时会打断当前音乐的播放,不太适合作为背景音乐,比较适合用来做物品拾取、敌人消灭音效等)

另一种方式:(不打断音乐,适合用来做背景音乐)

加入相同的头文件,再在想播放的地方加上:

mciSendString(TEXT("open C:/tmp//fate.wav"),NULL,NULL, NULL); //打开音乐文件

mciSendString(TEXT("play C:/tmp//fate.wav"),NULL,NULL,NULL);  //播放音乐文件

mciSendString(TEXT("close C:/tmp//fate.wav"),NULL,NULL, NULL); //关闭音乐

C:/tmp//fate.wav 为音乐文件的位置,需往相应位置添加对应音乐

二、提示及提示消失:

先导入几张图片、命名,再在程序中进行下列操作:

首先是精灵的定义:

LessonX.h

class      CGameMain

CSprite*     m_ptip;//提示精灵

CSprite*     m_ptiptext;//提示文本精灵

CSprite*     m_pclose;//关闭精灵

LessonX.cpp

CGameMain::CGameMain()

funcode 音乐播放、提示及提示消失、时间显示等(c++版)

m_ptiptext =new CSprite("tiptext");//提示文本精灵

m_ptip=new CSprite("tip");//提示精灵

m_pclose=new CSprite("close");//关闭精灵

//"        "双引号内名称在funcode界面精灵编辑按键中的“程序接口”设置

再选择想让提示显示、消失的方式如(在OnMouseClick函数中):

void CGameMain::OnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY 

//提示

if(iMouseType==0&&(fMouseX>=17&&fMouseX<=25)&&(fMouseY>=-36&&fMouseY<=-32))//中心点(21,--34) 宽为8,高为4

{  

  m_pclose->SetSpriteVisible(true);    //调用SetSpriteVisible控制精灵的可见性

  m_ptiptext->SetSpriteVisible(true);   //true 为可见,false为不可见

}

//关闭

if(iMouseType==0&&(fMouseX>=18&&fMouseX<=26)&&(fMouseY>=20&&fMouwdaseY<=28))//中心点(22,24) 宽为8  高为8

   {

           m_ptiptext->SetSpriteVisible(false);

           m_pcontinue->SetSpriteVisible(false);

}

注意事项:

可选:在funcode界面把图形设为不可见,可使图形一开始就不可见,需要时再使其可见

文本位置需要根据实际修改,funcode的位置判断为精灵中心点判断。根据精灵的X、Y位置及精灵的宽和高可以定位精灵的范围

关闭键可多次利用:一次关多个图片——如切换关卡的文本等

三、时间显示

先导入几张图片、命名,再在程序中进行下列操作:

首先是精灵的定义:

LessonX.h

class      CGameMain

CTextSprite*    m_pTime;  //显示时间文字编辑精灵

CSprite*     m_pTimepicture;//时间文本图片精灵

float m_fGameTime; // 本局游戏时间

LessonX.cpp

CGameMain::CGameMain()

m_pTime =new CTextSprite("Time");   //显示时间文字编辑精灵

m_pTimepicture=new CSprite("Timepicture");   //显示时间文本图片精灵

m_fGameTime=0.f;//给时间赋初值

其次是时间文本精灵的实时变换:

void CGameMain::GameRun( float fDeltaTime )

{

  m_fGameTime -= fDeltaTime;   //时间减少

  m_pTime->SetTextValue((int)m_fGameTime);   //时间显示

}

void CGameMain::OnKeyDown( const int iKey, const bool bAltPress, const bool bShiftPress, const bool bCtrlPress )

{  

if( KEY_SPACE == iKey && 0 == m_iGameState )

      {

            m_fGameTime =   30.f; //游戏时间赋值

            m_pKaishi->SetSpriteVisible(false);// 隐藏游戏开始图片

            CSystem::ShowCursor(false);    // 隐藏鼠标

      }

}