Světýlkův blog

Hlášky, myšlenky, Kotlin a kiting ...
  • Kdybys byla můj typ, tak už jsi dávno zadaná.

  • Je to jako snažit se zkřížit hrocha a stolní lampu. –Pavel K.

  • Koltin: GUI aplikace pro výpočet ceny benzínu dle spotřeby

    Vítejte v dalším díle věnovaném jazyku Kotlin, kde si ukážeme, jak psát nabušené GUÍ-tka založené na JavaFX za pomocí výborného frameworku TornadoFX. Náš výsledek bude vypadat takto a celé nakódění nám nezabere déle jak 30 minut:

  • Má lenost se nedá měnit, ale pouze kultivovat.

  • Implicitně slušivý oblek netřeba explicitně chválit.

  • Signály těla? Asi to chtěla …

  • Hra Hangman (Šibenice) v Kotlinu

    Rád s nadsázkou říkávám, že Kotlin je tak produktivní, že občas už ani sám nevím, co bych v něm dál napsal, neboť jak by se na Ostravsku řeklo „bo všecko je už zrobene“ 🙂 . A tak jsem si při příležitosti víkendové nudy řekl, že si jen tak napíšu jednoduchou konzolovou hru Hangman (Šibenice/Oběšenec). Pokud byste dokázali kód refaktorovat do ještě lepší podoby, podělte se v komentářích 🙂 , nicméně tady to je a přeji příjemnou zábavu:

    package com.svetylkovo.games.hangman
    
    object Hangman {
    
        private var remainingWrongAttempts = 5
        private var word = ""
    
        private val guessedLetters = mutableSetOf<Char>()
        private val wrongGuesses = mutableSetOf<Char>()
    
        @JvmStatic
        fun main(args: Array<String>) {
    
            println("Let's play Hangman!")
            println("Type a word to be guessed:")
    
            word = readLine()?.nullIfBlank() ?: "HANGMAN"
    
            clearScreen()
    
            println("\nStart guessing!\n")
    
            while (remainingWrongAttempts > 0) {
                val hiddenWord = getHiddenWord()
    
                if ('_' !in hiddenWord) {
                    println("You did it!")
                    return
                }
    
                println("Word: ${hiddenWord.replace(Regex("."), "$0 ")}")
                printWrongGuesses()
                println("Remaining wrong attempts: $remainingWrongAttempts")
                println("Guess a letter:")
    
                val letter = readLine()?.nullIfBlank()
                    ?.toUpperCase()
                    ?.first()
    
                if (letter != null) {
                    guessedLetters += letter
    
                    if (letter in word) {
                        println("\nCorrect!\n")
                    } else {
                        println("\nWrong!\n")
                        wrongGuesses += letter
                        remainingWrongAttempts--
                    }
                }
            }
    
            println("You've been hanged! :-(")
        }
    
        private fun printWrongGuesses() {
            if (wrongGuesses.isNotEmpty()) {
                println("Wrong guesses: ${wrongGuesses.joinToString(", ")}")
            }
        }
    
        private fun getHiddenWord() = word.map { letter ->
            if (letter in guessedLetters) letter else '_'
        }.joinToString("")
    
        private fun clearScreen() = repeat(25) { println() }
    
        private fun String.nullIfBlank() = if (isBlank()) null else this
    }
    
  • Pokud mezi vámi nepřeskočila jiskra, musíte ještě trochu zakřesat.

  • Musíš aktivně neutrácet, abys mohl pasivně šetřit.

  • Jakožto nositel dioptrických brýlí zahajuji operaci Smítko.