我正在为我的评估写一个音乐播放器。目前我需要制作它以便曲目按顺序播放。
目前播放音乐的位看起来像这样:
repeat
//Other code that's related to responding to user input
while i < trackCount - 1 do
begin
if not MusicPlaying() then
begin
PlayMusic(trackName, 1);
trackNumber := trackNumber + 1;
i := i + 1;
end;
end;
until WindowCloseRequested();
基本上它会说&#34;虽然列表尚未完成,但如果没有播放音乐,则播放曲目并增加i
以便下一首曲目可以播放一次&#39完成&#34;。显然,这使程序崩溃了,或者看起来似乎无论如何。一旦我上场,我就无法与该节目进行互动,但音乐仍在按顺序播放,这告诉我逻辑运作正常。程序确实在之后恢复正常,但在我尝试再次播放列表时返回到同一状态。这是否意味着它是一个糟糕的代码,我应该尝试以不同的方式思考它?或者有什么我不知道在循环中有一个循环吗?
答案 0 :(得分:1)
不,你的程序并没有真正崩溃,它只是在while i < trackCount - 1 do
循环中停留。
i
仅在MusicPlaying()
返回false时才会更改(递增),这可能只是最初发生,然后在曲目播放完毕后发生。所有这段时间之间,您的程序被while
循环捕获,只是反复等待MusicPlaying()
返回false,因此看起来没有响应。
我怀疑repeat..until
循环是程序的主循环。如果是这样,那么您只需将单词while
更改为if
即可。
repeat
// Other code that's related to responding to user input
if i < trackCount - 1 do
begin
if not MusicPlaying() then
begin
PlayMusic(trackName, 1);
trackNumber := trackNumber + 1;
i := i + 1;
end;
end;
until WindowCloseRequested();