fcamuso

Kotlin video 24

Aug 14th, 2025
428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 4.17 KB | None | 0 0
  1. import java.io.File
  2. import java.io.FileWriter
  3. import java.io.InvalidObjectException
  4. import javax.management.ImmutableDescriptor
  5. import kotlin.random.Random
  6.  
  7.  
  8. class Arma(var nome: String = "none", var elemento: String = "none", var dannoBase: Int = 1, donoDivino: Int = 0) {
  9.  
  10.     //inizializzatore per danno base
  11.     init {
  12.         require(dannoBase>=0)
  13.         dannoBase *= 1 + donoDivino/100  //con donoDivino = 10 -> *= (1+0.1) = 1.1
  14.     }
  15. }
  16.  
  17. class Personaggio(var nome: String, var classe: String, var salute: Int=0, var scudo: Int=0,
  18.                   lunghezzaMinima: Int = 4) {
  19.  
  20.     constructor (classe: String) : this(nome="undefined", classe=classe, salute=100, scudo=100) {
  21.  
  22.         println("Logica di inizializzazione secondaria")
  23.  
  24.     }
  25.  
  26.     constructor () : this("undefined") {
  27.         println("Logica di inizializzazione secondaria / costruttore secondario alternativo")
  28.     }
  29.  
  30.     //tutti parametri qui sopra del costruttore primario dichiarati con val/var
  31.     //diventano automaticamente membri interni permanenti negli oggetti di questa classe
  32.     //ci si riferisce a questi membri con il nome di 'proprietà' della classe
  33.  
  34.     //i parametri senza val/var servono ad iniettare al momento della costruzione di oggetti
  35.     //valori che servono ad inizializzare nei blocchi init le proprietà, a fare controlli ecc.
  36.     //ne è un esempio il parametro lunghezzaMinima usata nel bloco init qui sotto
  37.  
  38.     //nome e classe devono avere almeno 4 caratteri
  39.     init {
  40.         println("Logica di inizializzazione primaria")
  41.         require(nome.length>=lunghezzaMinima && classe.length>=lunghezzaMinima)
  42.     }
  43.     //nota: si possono mettere tutti i blocchi init che si vogliono
  44.  
  45.     //si possono aggiungere tutte le properties che si vogliono oltre
  46.     //a quelle create in automatico con i parametri val/var nel costruttore primario
  47.     private val zaino = mutableListOf<Arma>()
  48.  
  49.     var capacitaZaino = 10
  50. //        get() {return field}
  51.         private set
  52. //        set(value) {
  53. //            if (value > capacitaZaino)
  54. //                field = value
  55. //            else
  56. //                throw Exception("Valore non valido per capacita zaino (${value})")
  57. //        }
  58. //    println("Lo zaino puó contenere ${pers2.capacitaZaino} oggetti")
  59. //    pers2.capacitaZaino = -999;
  60.  
  61.  
  62.     //tutte le properties sono di default pubbliche (public) cioè richiamabili
  63.     //da codice esterno che abbia un riferimento ad un oggetto della classe
  64.     //esempio (immaginando di essere nel main): personaggio1.salute = 200
  65.  
  66.     //la classe di solito contiene metodi che se pubblici potranno essere invocati
  67.     //sugli oggetti di questa classe
  68.     //esempio (immaginando di essere nel main): personaggio1.addArma( Arma(...) )
  69.     fun addArma(nuovaArma: Arma) {
  70.         if (zaino.size < capacitaZaino)
  71.             zaino.add(nuovaArma)
  72.     }
  73.  
  74.     //getter/setter 'tradizionali'
  75. //    fun getCapacitaZaino() : Int {
  76. //        return capacitaZaino
  77. //    }
  78.  
  79. //    fun setCapacitaZaino(nuovoValore: Int)
  80. //    {
  81. //        if (nuovoValore > capacitaZaino)
  82. //            capacitaZaino = nuovoValore
  83. //    }
  84.  
  85. }
  86.  
  87.  
  88.  
  89.  
  90. //TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
  91. // click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
  92. fun main() {
  93.     val pers1 = Personaggio("spiritXZZ", classe = "spaccaossa")
  94.  
  95.     for (i in 1..20)
  96.         pers1.addArma(Arma())
  97.  
  98.     //println(pers1.zaino.size)
  99.  
  100.     val pers2 = Personaggio()
  101.  
  102.     //pers2.zaino.clear(); //ora vietata!
  103.  
  104. //    println("Lo zaino puó contenere ${pers2.getCapacitaZaino()} oggetti")
  105. //
  106. //    //immagino che pers2 trovi un ampliamento di 5 slot per lo zaino
  107. //    pers2.setCapacitaZaino(pers2.getCapacitaZaino() + 5)
  108. //    println("Lo zaino ora puó contenere ${pers2.getCapacitaZaino()} oggetti")
  109. //
  110. //    //immagino che pers2 trovi un ampliamento di 5 slot per lo zaino
  111. //    pers2.setCapacitaZaino(pers2.getCapacitaZaino() + 5)
  112. //    println("Lo zaino ora puó contenere ${pers2.getCapacitaZaino()} oggetti")
  113.  
  114.     println("Lo zaino puó contenere ${pers2.capacitaZaino} oggetti")
  115.     //pers2.capacitaZaino = 20;
  116.     println("Lo zaino ora può contenere ${pers2.capacitaZaino} oggetti")
  117.  
  118. }
Advertisement
Add Comment
Please, Sign In to add comment