控制台背景音乐

时间:2015-12-06 04:40:11

标签: c# console background-music

我有一个C#控制台游戏我正在努力,我真的很想将一些背景音乐融入其中。

我有一个调用SoundPlayer的功能,我按照预期播放音乐。我的功能将在我的游戏的某些情况下被调用,但是当它被调用时我希望游戏继续。目前,我的游戏按预期循环,但一旦它到达playMusic()功能,游戏就会停止播放,直到音乐停止播放。

如何在不中断主游戏循环的情况下在后台播放音乐?任何有关此事的想法都将受到高度赞赏。

音乐功能:

public void playMusic()
    { 
        SoundPlayer sndPlayer = new SoundPlayer();
        sndPlayer.SoundLocation = Environment.CurrentDirectory + "\\Music.Wav";           
        sndPlayer.PlaySync();

    }

我的游戏循环:

        int gameoverCount =0;
        //Main game loop
        while (gameoverCount != 1000)
        {
            //Select a random NPC to move
            int randomNPC = StaticRandom.Instance.Next(0, npcs.characters.Count);

            //Checks if the NPC has reached it's destination, if not move. 
            if (npcs.characters[randomNPC].destination)
            {
                Movement.npcMove(board, npcs.characters[randomNPC]);
            }                
            else
            {
                //Gives NPC new location
                npcs.characters[randomNPC].destinationX = StaticRandom.Instance.Next(3, 14);
                npcs.characters[randomNPC].destinationY = StaticRandom.Instance.Next(3, 14);
                npcs.characters[randomNPC].destination = true;
            }
            gameoverCount++;
            Movement.playerMove(p1.coordX, p1.coordY, board, p1, p1.bac, p1.stepsTaken, npcs.characters[randomNPC]);

            //If player is on a certain space, play music
            if (board.board[p1.coordX, p1.coordY].playMusic)
            {
                playMusic();
            }                
            Console.Clear();
            board.showBoard();
        }

1 个答案:

答案 0 :(得分:1)

您要找的是PlayPlayLooping方法。正如您在备注部分中看到的,这两种方法都将使用新线程播放音乐。另一方面,PlaySync使用当前线程,这就是你获得行为的原因。