Kyaria icon

Playlist.kt

Kyaria | PRO | 06/11/19 10:02:31 AM UTC | 0 ⭐ | 10659 👁️ | Never ⏰ | []
Kotlin |

3 KB

|

None

|

0 👍

/

0 👎

open class Playlist(val songliste: MutableList<Song>) {
 
    open fun gesamteSpieldauer() = songliste.sumBy { it.spieldauer }
 
    fun SpieldauerMitXOderBesser(x: Int): Int {
 
        var tmp: Int = 0
 
        for (s in songliste) {
            if(s.bewertung >= x){
                tmp += 1
            }
        }
 
        return tmp
    }
 
    open fun alleAbspielen() {
 
        for (s in songliste) {
 
            s.abspielen()
        }
    }
}
 
class DynamicPlaylist (songlisteParam: MutableList<Song>): Playlist(songlisteParam){
 
    class SongNode(val song : Song, var nextSong : SongNode?)
 
    private var first: SongNode? = null
    private var last: SongNode? = null
 
    init {
 
        reset();
 
        /*first = SongNode(songliste.get(0), null)
 
        var runPointer = first
 
        for( i in 1..songliste.size){
 
            runPointer?.nextSong = SongNode(songliste.get(i), null)
            runPointer = runPointer?.nextSong ?: runPointer
        }
 
        last = runPointer*/
    }
 
    fun add(derSongTM : Song){
 
        last?.nextSong = SongNode(derSongTM, null)
        last = last?.nextSong
    }
 
    fun take() : Song?{
 
        var tmp = first
        first = first?.nextSong
 
        return tmp?.song
    }
 
    fun take2(searchSong : Song){
 
        var test : Boolean = false
        var runTest = first
 
        while(runTest != null){
 
            if(runTest.song == searchSong)
                test = true
 
            runTest = runTest.nextSong
        }
 
        if(test){
 
            if(first?.song == searchSong)
            first = first?.nextSong
            else{
 
                var runPointer = first
 
                while(runPointer?.nextSong?.song != searchSong){
 
                    runPointer = runPointer?.nextSong
                }
 
                if(runPointer.nextSong == last){
 
                    last = runPointer
                    last?.nextSong = null
                }
                else
                    runPointer.nextSong = runPointer.nextSong?.nextSong
            }
        }
        else
            println("Der zu löschende Song ist nicht vorhanden!")
    }
 
    fun reset(){
 
        first = SongNode(songliste.get(0), null)
 
        var runPointer = first
 
        for( i in 1..songliste.size-1){
 
            runPointer?.nextSong = SongNode(songliste.get(i), null)
            runPointer = runPointer?.nextSong ?: runPointer
        }
 
        last = runPointer
    }
 
    override fun gesamteSpieldauer() : Int{
 
        var runPointer = first
        var tmp : Int = 0
 
        while (runPointer != null){
 
            tmp += runPointer.song.spieldauer
            runPointer = runPointer.nextSong
        }
 
        return tmp
    }
 
    override fun alleAbspielen() {
 
        var runPointer = first
 
        while (runPointer != null){
 
            runPointer.song.abspielen()
            runPointer = runPointer.nextSong
        }
    }
 
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎