add Programmyday form github

This commit is contained in:
Ruben Kallinich
2024-07-25 15:47:46 +02:00
parent 09c8eab938
commit 7362c3d7ce
132 changed files with 3669 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AudioPlayerMusterlösung
{
abstract class AudioFile
{
private string fileName;
public AudioFile(string filename)
{
this.fileName = filename;
}
public string GetFileName()
{
return fileName;
}
public abstract void Play();
}
}

View File

@@ -0,0 +1,80 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AudioPlayerMusterlösung
{
internal class AudioPlayer
{
private AudioFile[] audiofiles;
public AudioPlayer(int max)
{
audiofiles = new AudioFile[max];
}
public void AddFile(AudioFile audiofile)
{
for (int i = 0; i < audiofiles.Length; i++)
{
if (audiofiles[i] is null)
{
audiofiles[i] = audiofile;
break;
}
}
}
public void RemoveFile(int id)
{
if (id >= 0 && id < audiofiles.Length)
{
audiofiles[id] = null;
}
}
public void Play(int id)
{
if (id >= 0 && id < audiofiles.Length && audiofiles[id] is null)
{
audiofiles[id].Play();
}
}
public void PlayAll()
{
foreach (AudioFile audio in audiofiles)
{
if (audio is not null)
{
audio.Play();
}
}
}
public void PlayShuffle()
{
Random rnd = new Random();
AudioFile[] playFiles = new AudioFile[audiofiles.Length];
for (int i = 0; i < playFiles.Length; i++)
{
playFiles[i] = audiofiles[i];
}
while (playFiles.Length > 0)
{
int playFile = rnd.Next(playFiles.Length);
if (playFiles[playFile] is not null)
{
playFiles[playFile].Play();
}
AudioFile[] newArray = new AudioFile[playFiles.Length - 1];
for (int i = 0; i < playFile; i++)
{
newArray[i] = playFiles[i];
}
for (int i = playFile; i < newArray.Length; i++)
{
newArray[i] = playFiles[i + 1];
}
playFiles = newArray;
}
}
}
}

View File

@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AudioPlayerMusterlösung
{
internal class FLACFile : AudioFile
{
public FLACFile(string filename) : base(filename) { }
public override void Play()
{
Console.WriteLine($"FLAC: {GetFileName()}");
}
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AudioPlayerMusterlösung
{
internal class MP3File : AudioFile
{
public MP3File(string filename) : base(filename) { }
public override void Play()
{
Console.WriteLine($"MP3: {GetFileName()}");
}
}
}

View File

@@ -0,0 +1,34 @@
namespace AudioPlayerMusterlösung
{
internal class Program
{
static void Main(string[] args)
{
AudioPlayer iPod = new AudioPlayer(99);
iPod.AddFile(new MP3File("titel 1"));
iPod.AddFile(new MP3File("titel 2"));
iPod.AddFile(new MP3File("titel 3"));
iPod.AddFile(new MP3File("titel 4"));
iPod.AddFile(new MP3File("titel 5"));
iPod.AddFile(new WAVFile("titel 6"));
iPod.AddFile(new WAVFile("titel 7"));
iPod.AddFile(new WAVFile("titel 8"));
iPod.AddFile(new WAVFile("titel 9"));
iPod.AddFile(new WAVFile("titel 10"));
iPod.AddFile(new WAVFile("titel 11"));
iPod.AddFile(new WAVFile("titel 12"));
iPod.AddFile(new FLACFile("titel 13"));
iPod.AddFile(new FLACFile("titel 14"));
iPod.AddFile(new FLACFile("titel 15"));
iPod.AddFile(new FLACFile("titel 16"));
iPod.AddFile(new FLACFile("titel 17"));
iPod.AddFile(new FLACFile("titel 18"));
iPod.AddFile(new MP3File("titel 19"));
iPod.AddFile(new MP3File("titel 20"));
iPod.PlayAll();
Console.WriteLine();
iPod.PlayShuffle();
}
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AudioPlayerMusterlösung
{
internal class WAVFile : AudioFile
{
public WAVFile(string filename) : base(filename) { }
public override void Play()
{
Console.WriteLine($"WAV: {GetFileName()}");
}
}
}