• 连连看.NET v1.4版下载


    2005-6-5 21:38
    连连看.NET v1.4版下载

    针对声音做了管理,现在可以管理背景音乐了,在我的机器上可以播放"MP3,MIDI,WAV"三种格式均无问题,如果不能播放mp3,建议不添加mp3文件。针对这次更新,我整理了10来个midi音乐,游戏在初始化的时候会读取Music.list 文件,文件是按行保存的音乐路径,可以删除掉,手工改写内容也可以,也可以在“游戏的配置”中设定播放文件。
    游戏是要玩过3层地图才算过关,但每次有朋友告诉我图片变暗了,是不是表示被连接了,其实这个暗色的是表示下一层的,但是随机化的时候发生数是一样导致都是同一位置,现在已经修改了这个问题,还有一点,刚玩的人不明白可能点了黑色块也出现标记,现在屏蔽掉了。

    个别用户如果出现无法内存地址错误的问题,目前还没办法解决,一、是我测试条件不够,二、发布的时候通过MaxtoCode 1.16混淆过,但我自己通过朋友的测试没有发现这样报指针错误的问题,不过程序中还是用到了指针。

    2005-6-5 中午
    连连看.net 1.3 (下载)

    Loading.gif 

    解决了初始化速度慢的问题该版本不需要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, ""00);
                    lRet 
    = mciSendString("play "+ Alias, ""00);
                    returnValue 
    = (lRet == 0);
                
                    status 
    = "play";
                }

                
    catch (Exception)
                
    {
                    
    return false;
                }

            
                
    return true;
            
            }

        
            
    public void CloseAudio()
            
    {
            
                mciSendString(
    "close all",""00);
                status 
    = "close";
        
            }

        
            
    private bool StopFile()
            
    {
            
                
    long lRet;
            
                
    try
                
    {
                    lRet 
    = mciSendString("stop "+Alias, ""00);
                    lRet 
    = mciSendString("close "+Alias, ""00);
                    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
  • 相关阅读:
    如何实现类的成员函数作为回调函数
    Windows Azure Storage浏览器
    基础设施即服务系列:Windows Azure上支持Linux虚拟机
    Web Sites系列:.NET和Visual Studio上Windows Azure Web site体验
    Windows Azure 存储之本地冗余存储介绍
    上海职场六大关键词完全搜集之:职位
    初学 Delphi 嵌入汇编[2] 汇编语言关键字
    for 循环的例子
    初学 Delphi 嵌入汇编[5] 寄存器在过程与函数中的使用 续
    初学 Delphi 嵌入汇编[3] 第一个 Delphi 与汇编的例子
  • 原文地址:https://www.cnblogs.com/Chinasf/p/168253.html
Copyright © 2020-2023  润新知