外部設計で決めたとおり、CD-DAの演奏処理を組みましょう。
第1トラックに音楽が入っているCDを1枚用意してください。
Delphiには、音楽を録音・再生するためのTMediaPlayerコンポーネントが存在します。
これを一つにフォームに置いてください。Systemタブの中にあります。
再生や停止ボタンがついたTMediaPlayer1がフォームに現れます。
このプロパティをオブジェクトインスペクタで下のように変更しましょう。
TMediaPlayer1のプロパティ
プロパティ
|
値
|
Name
|
MediaPlayer
|
DeviceType
|
dtCDAudio
|
Visible
|
False
|
TMediaPlayerを使ってCD-DAを再生するには、
@CDが挿入されているドライブを指定
ACDをオープン
B再生するトラックの指定
C再生
D停止
ECDをクローズ
の手順を踏みます。
なお、@Aは最初に一度だけ、Eは最後に一度だけ行えば結構ですので、
ゲーム中では主にB〜Dを繰り返して使うことになります。
これを踏まえて、四つのメンバ関数を書きます。
また、現在演奏中のCDトラック番号を格納する変数もグローバルで宣言します(リスト9)。
implementation
(中略)
var
BackBmp : TBitmap; //背景を格納
CurBack : Integer; //表示中の背景の番号
CharaBmp : TBitmap; //立ちキャラを格納
CurChara : Integer; //表示中の立ちキャラの番号
SetChara : Boolean; //立ちキャラを表示しているか
MesWinBmp : TBitmap; //メッセージウィンドウ画像を格納
MesWinTempBmp : TBitmap; //背景にメッセージウィンドウ画像を転送した画像を格納
TextBmp : TBitmap; //メッセージ表示に使用
AllText : TStringList; //メッセージを格納
TextPoint : Integer; //表示するメッセージ番号を指す
MTo : Integer; //最後に表示した行の番号
CurTrack : Integer; //現在演奏中のCDのトラック
|
(リスト9)
//CDをオープンする
procedure TMainForm.CDOpen;
begin
//CDが挿入されたドライブ名の指定
MediaPlayer.FileName := 'Q:\'; ----------------------(19)
//オープン
MediaPlayer.Open;
//演奏位置情報の形式を指定
MediaPlayer.TimeFormat := tfTMSF;
end;
//---------------------------------------------------
//CDをtrack番目を演奏する
procedure TMainForm.CDPlay(track : Integer);
begin
//開始位置の指定
MediaPlayer.StartPos := track;
//終了位置の指定
MediaPlayer.EndPos := track + 1;
//再生
MediaPlayer.Play;
//現在演奏しているトラックを格納
CurTrack := track;
end;
//---------------------------------------------------
//CDの演奏を停止する
procedure TMainForm.CDStop;
begin
//演奏停止
MediaPlayer.Stop;
end;
//---------------------------------------------------
//CDをクローズする
procedure TMainForm.CDClose;
begin
//クローズ
MediaPlayer.Close;
end;
|
(19)でCDドライブの指定を行います。
皆さんご利用になるCDドライブ名を指定してください。
続いて、これらの手続きを呼び出します。
CDOpenとCDPlayはFormCreateの最後に、
CDStopとCDCloseはFormCloseイベントを新たに用意して書いてください(リスト10)。
(リスト10)
procedure TMainForm.FormCreate(Sender: TObject);
begin
(中略)
//テキスト表示ルーチンへ
OneStep;
//CDのオープンと再生
CDOpen;
CDPlay(1);
end;
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//CDの停止とクローズ
CDStop;
CDClose;
end;
|
ここまで書けたら、CDを(19)で指定したドライブに挿入して、実行してみましょう。
画面の表示と共に、挿入したCDの第1トラックが演奏されましたか?
ゲームを終了すると、演奏は停止します。
ゲーム中で他のトラックを再生する時には、
CDPlay手続きの引数に演奏したいトラック番号を入れて、呼び出せばOKです。