连连看.NET v1.4版下载
针对声音做了管理,现在可以管理背景音乐了,在我的机器上可以播放"MP3,MIDI,WAV"三种格式均无问题,如果不能播放mp3,建议不添加mp3文件。针对这次更新,我整理了10来个midi音乐,游戏在初始化的时候会读取Music.list 文件,文件是按行保存的音乐路径,可以删除掉,手工改写内容也可以,也可以在“游戏的配置”中设定播放文件。
游戏是要玩过3层地图才算过关,但每次有朋友告诉我图片变暗了,是不是表示被连接了,其实这个暗色的是表示下一层的,但是随机化的时候发生数是一样导致都是同一位置,现在已经修改了这个问题,还有一点,刚玩的人不明白可能点了黑色块也出现标记,现在屏蔽掉了。
个别用户如果出现无法内存地址错误的问题,目前还没办法解决,一、是我测试条件不够,二、发布的时候通过MaxtoCode 1.16混淆过,但我自己通过朋友的测试没有发现这样报指针错误的问题,不过程序中还是用到了指针。
2005-6-5 中午
连连看.net 1.3 (下载)
解决了初始化速度慢的问题,该版本不需要DirectX9的支持,采用MCI API 播放音乐,所以启动的初始化时间减少到3秒以内。
这次更新的部分有:
1、解决初始化时间过长的问题,因为我采用了DSHOW的方式播放音乐,我原本想播放mp3之类的音乐。
2、现在不需要DirectX的支持,前几个版本,均有非DirectX9平台运行会报错的问题,当前版本已经解决。
未解决的问题:
暂时没有
播放音乐的类,是今天起床写的,昨天喝醉了,如下是MCI 播放音乐的类,支持midi wav
using System;
using System.Runtime.InteropServices;
namespace LLK.UI
{
/**//// <summary>
/// SoundPlayer 的摘要说明。
/// 用MCI 播放音乐
/// 作者:萧寒
/// http://www.cnblogs.com/chinasf
/// </summary>
public class SoundPlayer
{
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
private string durLength = "" ;
[DllImport("winmm.dll",EntryPoint="mciSendString",SetLastError=true, CharSet=CharSet.Auto)]
private static extern long mciSendString(string lpstrCommand, string lpstrReturnString, long uReturnLength, long hwndCallback);
private string File;
private string Alias;
private string status = "close";
public SoundPlayer(string strFileName,string strAliasName)
{
this.File = strFileName;
this.Alias = strAliasName;
status = "close";
}
public string FileName
{
get
{
return File;
}
}
public string AliasName
{
get
{
return Alias;
}
}
public bool PlaySound()
{
if (PlayFile() == true)
{
return true;
}
else
{
return false;
}
}
public bool StopSound()
{
StopFile();
return false;
}
private bool PlayFile()
{
bool returnValue;
long lRet;
try
{
StopFile();
lRet = mciSendString("open " + this.File + " alias " + Alias, "", 0, 0);
lRet = mciSendString("play "+ Alias, "", 0, 0);
returnValue = (lRet == 0);
status = "play";
}
catch (Exception)
{
return false;
}
return true;
}
public void CloseAudio()
{
mciSendString("close all","", 0, 0);
status = "close";
}
private bool StopFile()
{
long lRet;
try
{
lRet = mciSendString("stop "+Alias, "", 0, 0);
lRet = mciSendString("close "+Alias, "", 0, 0);
status = "stop";
return true;
}
catch (Exception)
{
return false;
}
}
public bool IsPlaying
{
get
{
if(status!="play")
return false;
durLength = "";
durLength = durLength.PadLeft(128,Convert.ToChar(" "));
mciSendString("status " + this.Alias + " mode",durLength,128,0);
return durLength.Substring(0,7).ToLower() == "playing".ToLower();
}
}
}
}
using System.Runtime.InteropServices;
namespace LLK.UI
{
/**//// <summary>
/// SoundPlayer 的摘要说明。
/// 用MCI 播放音乐
/// 作者:萧寒
/// http://www.cnblogs.com/chinasf
/// </summary>
public class SoundPlayer
{
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
private string durLength = "" ;
[DllImport("winmm.dll",EntryPoint="mciSendString",SetLastError=true, CharSet=CharSet.Auto)]
private static extern long mciSendString(string lpstrCommand, string lpstrReturnString, long uReturnLength, long hwndCallback);
private string File;
private string Alias;
private string status = "close";
public SoundPlayer(string strFileName,string strAliasName)
{
this.File = strFileName;
this.Alias = strAliasName;
status = "close";
}
public string FileName
{
get
{
return File;
}
}
public string AliasName
{
get
{
return Alias;
}
}
public bool PlaySound()
{
if (PlayFile() == true)
{
return true;
}
else
{
return false;
}
}
public bool StopSound()
{
StopFile();
return false;
}
private bool PlayFile()
{
bool returnValue;
long lRet;
try
{
StopFile();
lRet = mciSendString("open " + this.File + " alias " + Alias, "", 0, 0);
lRet = mciSendString("play "+ Alias, "", 0, 0);
returnValue = (lRet == 0);
status = "play";
}
catch (Exception)
{
return false;
}
return true;
}
public void CloseAudio()
{
mciSendString("close all","", 0, 0);
status = "close";
}
private bool StopFile()
{
long lRet;
try
{
lRet = mciSendString("stop "+Alias, "", 0, 0);
lRet = mciSendString("close "+Alias, "", 0, 0);
status = "stop";
return true;
}
catch (Exception)
{
return false;
}
}
public bool IsPlaying
{
get
{
if(status!="play")
return false;
durLength = "";
durLength = durLength.PadLeft(128,Convert.ToChar(" "));
mciSendString("status " + this.Alias + " mode",durLength,128,0);
return durLength.Substring(0,7).ToLower() == "playing".ToLower();
}
}
}
}
调用代码:
SoundPlayer sp = new SoundPlayer("C:\1.wav","别名"); //每个音乐都指定别名
sp.PlaySound(); //播放
sp.IsPlaying; //检查是否在播放中
sp.StopSound(); //停止
另外,文件名称不能太长,长文件名要采用 8.3 命名规则,可以通过api 转换。
2005-6-5