Advertisement
Kyaria

Praktikum 2 - The Playlist

May 19th, 2019
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 5.95 KB | None | 0 0
  1. import java.util.*
  2.  
  3. fun main(args: Array<String>) {
  4.  
  5.     val verwaltung = Musikverwaltung()
  6.  
  7.     val song1 = Song("Led Zeppelin", "Led Zeppelin", 3.0, 90)
  8.     val song2 = Song("Led Zeppelin II", "Led Zeppelin", 2.45, 80)
  9.     val song3 = Song("Led Zeppelin III", "Led Zeppelin", 4.34, 72)
  10.     val song4 = Song("[Led Zeppelin IV]", "Led Zeppelin", 7.52, 85)
  11.     val song5 = Song("Houses of the Holy", "Led Zeppelin", 5.53, 94)
  12.     val song6 = Song("Physical Graffiti", "Led Zeppelin", 2.54, 100)
  13.     val song7 = Song("Presence", "Led Zeppelin", 1.20, 67)
  14.     val song8 = Song("In Through the Out Door", "Led Zeppelin", 4.30, 93)
  15.     val song9 = Song("Coda", "Led Zeppelin", 2.10, 91)
  16.     val song10 = Song("Taylor Swift", "Taylor Swift", 2.45, 87)
  17.     val song11 = Song("Fearless", "Taylor Swift", 1.25, 67)
  18.     val song12 = Song("Speak Now", "Taylor Swift", 2.37, 53)
  19.     val song13 = Song("Red", "Taylor Swift", 2.50, 85)
  20.     val song14 = Song("1989", "Taylor Swift", 3.50, 96)
  21.     val song15 = Song("reputation", "Taylor Swift", 1.30, 68)
  22.     val song16 = Song("One of the Boys", "Katy Perry", 2.50, 67)
  23.     val song17 = Song("Teenage Dream", "Katy Perry", 2.35, 87)
  24.     val song18 = Song("PRISM", "Katy Perry", 1.23, 99)
  25.     val song19 = Song("Witness", "Katy Perry", 2.42, 48)
  26.     val song20 = Song("Ur So Gay", "Katy Perry", 1.53, 59)
  27.  
  28.     //val songList = mutableListOf<Song>(song1, song2, song3, song4, song5, song6, song7, song8, song9, song10, song11, song12, song13, song14, song15, song16, song17, song18, song19, song20)
  29.  
  30.     verwaltung.songliste.add(song1)
  31.     verwaltung.songliste.add(song2)
  32.     verwaltung.songliste.add(song3)
  33.     verwaltung.songliste.add(song4)
  34.     verwaltung.songliste.add(song5)
  35.     verwaltung.songliste.add(song6)
  36.     verwaltung.songliste.add(song7)
  37.     verwaltung.songliste.add(song8)
  38.     verwaltung.songliste.add(song9)
  39.     verwaltung.songliste.add(song10)
  40.     verwaltung.songliste.add(song11)
  41.     verwaltung.songliste.add(song12)
  42.     verwaltung.songliste.add(song13)
  43.     verwaltung.songliste.add(song14)
  44.     verwaltung.songliste.add(song15)
  45.     verwaltung.songliste.add(song16)
  46.     verwaltung.songliste.add(song17)
  47.     verwaltung.songliste.add(song18)
  48.     verwaltung.songliste.add(song19)
  49.     verwaltung.songliste.add(song20)
  50.  
  51.     val newPlaylist = Playlist(mutableListOf<Song>(song1, song2, song3))
  52.     val zufallPlaylist: Playlist = verwaltung.zufallPlaylist()
  53.  
  54.  
  55.     song5.abspielen()
  56.  
  57.     newPlaylist.alleAbspielen()
  58.     println("Spieldauer von newPlaylist: ${newPlaylist.gesamteSpieldauer()}")
  59.  
  60.     println("-----SEPERATOR-----")
  61.  
  62.     zufallPlaylist.alleAbspielen()
  63.     println("Spieldauer von zufallPlaylist: ${zufallPlaylist.gesamteSpieldauer()}")
  64.  
  65.     val besterSong: Song = verwaltung.besterSong()
  66.  
  67.     println("Der beste Song in der Datenbank ist: ${besterSong.titel}, ${besterSong.interpret}, ${besterSong.spieldauer}, ${besterSong.spieldauer}")
  68.  
  69.     do{
  70.  
  71.         println("Bitte geben Sie einen Suchbegriff ein!")
  72.         val eingabe = readLine().toString()
  73.  
  74.         if(eingabe != "stopp") {
  75.             val seekSong = verwaltung.suchen(eingabe)
  76.             seekSong.abspielen()
  77.         }
  78.     }
  79.     while(eingabe != "stopp")
  80.  
  81. }
  82.  
  83. class Song(val titel: String, val interpret: String, val spieldauer: Double, _bewertung: Int) {
  84.  
  85.     var bewertung = _bewertung
  86.         set(value) {
  87.             if (value < 0)
  88.                 field = 0
  89.             else if (value > 100)
  90.                 field = 100
  91.             else
  92.                 field = value
  93.         }
  94.  
  95.     fun abspielen() {
  96.  
  97.         var decke: Double
  98.  
  99.         if (spieldauer % 1 == 0.toDouble())
  100.             decke = spieldauer
  101.         else
  102.             decke = spieldauer + 1
  103.  
  104.         val deckeFin = decke.toInt()
  105.  
  106.         for (i in 1..deckeFin)
  107.             println("Spiele: $titel von $interpret (Bewertung: $bewertung Punkte)")
  108.     }
  109.  
  110.     fun change(newValue: Int) {
  111.  
  112.         if (newValue < 0)
  113.             bewertung = 0
  114.         else if (newValue > 100)
  115.             bewertung = 100
  116.         else
  117.             bewertung = newValue
  118.     }
  119.  
  120.     fun search(searchString: String): Boolean {
  121.  
  122.         var istDrin = false
  123.  
  124.         if (titel.contains(searchString))
  125.             istDrin = true
  126.  
  127.         if (interpret.contains(searchString))
  128.             istDrin = true
  129.  
  130.         return istDrin
  131.     }
  132.  
  133. }
  134.  
  135. class Musikverwaltung() {
  136.  
  137.     val songliste: MutableList<Song> = mutableListOf<Song>()
  138.  
  139.     fun hinzufuegen(song: Song) {
  140.  
  141.         songliste.add(song)
  142.     }
  143.  
  144.     fun suchen(begriff: String): Song{
  145.  
  146.         for(s in songliste){
  147.  
  148.             if(s.titel.contains(begriff) || s.interpret.contains(begriff)) {
  149.  
  150.                 return s
  151.             }
  152.         }
  153.  
  154.         return songliste.get(0)
  155.     }
  156.  
  157.     fun besterSong(): Song{
  158.  
  159.         var tmp = songliste.get(0)
  160.  
  161.         for(s in songliste){
  162.  
  163.             if(s.bewertung > tmp.bewertung)
  164.                 tmp = s
  165.         }
  166.  
  167.         return tmp
  168.     }
  169.  
  170.     fun zufallPlaylist(): Playlist{
  171.  
  172.         val zufallGen = Random()
  173.  
  174.         val newSongliste: MutableList<Song> = mutableListOf<Song>()
  175.         var laengePlaylist = zufallGen.nextInt(songliste.size)
  176.  
  177.         var istVorhanden = false
  178.  
  179.         for(i in 0..laengePlaylist){
  180.  
  181.             for (s in newSongliste){
  182.  
  183.                 if(songliste.get(zufallGen.nextInt(songliste.size)) == s)
  184.                     istVorhanden = true
  185.             }
  186.  
  187.             if(!istVorhanden)
  188.                 newSongliste.add(songliste.get(zufallGen.nextInt(songliste.size)))
  189.             else
  190.                 laengePlaylist++
  191.         }
  192.  
  193.         return Playlist(newSongliste)
  194.     }
  195. }
  196.  
  197. class Playlist(val songliste: MutableList<Song>) {
  198.  
  199.     fun gesamteSpieldauer(): Double {
  200.  
  201.         var temp = 0.toDouble()
  202.  
  203.         for (s in songliste) {
  204.  
  205.             temp += s.spieldauer
  206.         }
  207.  
  208.         return temp
  209.     }
  210.  
  211.     fun alleAbspielen() {
  212.  
  213.         for (s in songliste) {
  214.  
  215.             s.abspielen()
  216.         }
  217.     }
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement