[SWIFT] Les débutants rapides ont essayé de mettre en œuvre la logique des distributeurs automatiques!

Aperçu

Actuellement, j'utilise le service MENTA et je reçois des conseils de Yamataku Mentor.

Cliquez ici pour en savoir plus sur les mentors et les services Yamataku! (https://menta.work/plan/584)

Parmi eux, cette fois, nous avons fait la tâche de "mettre en œuvre la logique des distributeurs automatiques", nous allons donc le sortir.

De plus, ce problème est une logique créée par les débutants de Swift, et je pense que de nombreux points ne peuvent être atteints. J'apprécierais que vous puissiez veiller avec des yeux chaleureux.

Nous acceptons toujours les conseils.

environnement

-Playground

Exigences

Exemples d'exigences de mise en œuvre

・ Vous pouvez entrer le yen japonais -Compare le yen japonais entré avec le prix de la boisson, et renvoie le drapeau achetable si le premier dépasse la valeur du second et que la boisson cible est en stock. ・ Les boissons cibles sont "café", "eau" et "monstre" ・ Réduisez le stock de la boisson cible de 1 lorsque vous renvoyez le jugement de disponibilité d'achat de la boisson cible.

Conditions de référence mises en œuvre cette fois

・ Retournez le montant de la monnaie lors de l'achat d'une boisson ・ Sorties "en rupture de stock" en cas de rupture de stock -À chaque fois que vous effectuez un achat, le nombre de boissons achetées en stock est affiché. -Ajout d'une fonction pour sortir le yen japonais d'entrée ・ Rendre le montant investi lorsqu'il n'y a pas d'actions ・ Renvoie la boisson même lorsque le même prix que la boisson est mis ・ Lorsque l'achat est terminé, "Merci pour votre achat" est affiché.

Exemple d'implémentation

VirtualVendingMachine.rb


import UIKit

class VirtualVendingMachine {
   
    //Type de boisson
    enum DrinkType {
        case coffee
        case water
        case monster
    }
    
    
    var inputedYen: Int = 0
    
    //prix
    var coffeePrice: Int = 120
    var waterPrice: Int = 100
    var monsterPrice: Int = 210
    
    //Stock
    var coffeeStock: Int = 5
    var waterStock: Int = 5
    var monsterStock: Int = 5
    
    
    //Acheter une boisson
    func buyDrink(type: DrinkType, inputedYen: Int) -> Bool {
       
       
        var isBuyable = false
        
        coinOutput(type: type, inputedYen: inputedYen)
        
        switch type {
    
        case .coffee:
            isBuyable = coffeePrice <= inputedYen && 0 < coffeeStock
        case .water:
            isBuyable = waterPrice <= inputedYen && 0 < waterStock
        case .monster:
            isBuyable = monsterPrice <= inputedYen && 0 < monsterStock
        
        }
        
        returnDrinkTypeSwich(type: type, inputedYen:inputedYen)
        
        return isBuyable
    
    }
    


    //Type de boisson
    func returnDrinkTypeSwich(type: DrinkType, inputedYen:Int) {
            
        switch type {
      
        case .coffee:
            
            coffeeReturnYenStock(type:type, inputedYen: inputedYen)
            
        case .water:
           
            waterReturnYenStock(type:type, inputedYen: inputedYen)
            
        case .monster:
          
            waterReturnYenStock(type:type, inputedYen: inputedYen)
            
        }
    
    
    }

    //Sortie Yen japonais
    func coinOutput(type: DrinkType,inputedYen: Int){
        print("\(inputedYen)Yen a été mis en")
   
    }
    
 
//Lors de l'achat de café, modifiez et gérez l'inventaire
    func coffeeReturnYenStock(type: DrinkType,inputedYen: Int){
      
        //Changement de retour
        if coffeeStock <= 0 {
             
            print("Parce qu'il n'y a pas de café en stock\(inputedYen)Je retournerai le yen")
            
        }else if inputedYen >= coffeePrice{
           
            var returnYen1   =  inputedYen - coffeePrice
            
          
            print("Merci pour votre achat")
            print("Changement\(returnYen1)C'est un cercle")
            
            
        }else{
          
            var noenoughcoins = coffeePrice - inputedYen
            print("\(noenoughcoins)Pas assez de yens")
        
        }
        
        
        //Gestion de l'inventaire
       if inputedYen >= coffeePrice && coffeeStock > 0 {
             
           coffeeStock -= 1
             print("Inventaire actuel du café\(coffeeStock)est")
     
      
    }else{
          
            return
          
         }
        
    }
    
//Modifier et gérer l'inventaire lors de l'achat d'eau
    func waterReturnYenStock(type: DrinkType,inputedYen: Int){
       
        if waterStock <= 0 {
            
            print("Parce qu'il n'y a pas d'eau en stock\(inputedYen)Je retournerai le yen")
            
            
        }else if inputedYen >= waterPrice{
         
            var returnYen2   =  inputedYen - waterPrice
            print("Merci pour votre achat")
            print("Changement\(returnYen2)C'est un cercle")
            
        }else{
            
            print("Pas assez d'argent")
        
        }
        
       
        if inputedYen >=  waterPrice && waterStock > 0 {
           
            waterStock -= 1
            print("Inventaire actuel de l'eau\(waterStock)est")
        
        }else{
       
            return

       }
           
        
    }
    
 //Gérez la monnaie et l'inventaire lorsque des monstres sont achetés
    func monsterReturnYenStock(type: DrinkType,inputedYen: Int){
        
      
        if monsterStock <= 0 {
            
            print("Parce qu'il n'y a pas de monstre en stock\(inputedYen)Je retournerai le yen")
            
        }else if inputedYen >= monsterPrice {
         
            var returnYen3   =  inputedYen - monsterPrice
           
            print("Merci pour votre achat")
            print("Changement\(returnYen3)C'est un cercle")
            
        }else{
            print("Pas assez d'argent")
         
        }
     
        if inputedYen >=  monsterPrice && monsterStock > 0{
               
                monsterStock -= 1
           print("Le stock actuel de monstres\(monsterStock)est")
            
            }else{
            
                 return
        
    }
        
    }
    
}
let virtualVendingMachine = VirtualVendingMachine()
let isSuccessToBuy = virtualVendingMachine.buyDrink(type: .water, inputedYen:  150)
print(isSuccessToBuy)

Réflexions

-Il était difficile de nommer la fonction. ・ Je sens que le code est devenu monotone.

Sommaire

Je pense que penser à la logique est très approprié pour le résultat de l'apprentissage de base. Vous pouvez découvrir diverses choses et remarquer ce dans quoi vous n'êtes pas doué, donc si vous souhaitez rompre avec l'apprentissage de base, pourquoi ne pas l'essayer?

Eh bien!

Recommended Posts

Les débutants rapides ont essayé de mettre en œuvre la logique des distributeurs automatiques!
Les débutants rapides ont essayé d'implémenter la logique micro-ondes!
J'ai essayé d'implémenter le modèle Iterator
[Swift5] Comment mettre en œuvre une animation à l'aide de "lottie-ios"
[Pour les débutants] Comment implémenter la fonction de suppression
Les débutants de Rails ont essayé de se lancer avec RSpec
J'ai essayé d'implémenter un serveur en utilisant Netty
[Swift] J'ai essayé d'implémenter une interface utilisateur semblable à un profil Instagram avec UICollectionView avec juste du code sans storyboard
Comment implémenter UICollectionView avec du code uniquement dans Swift
J'ai essayé d'implémenter TCP / IP + BIO avec JAVA
J'ai essayé d'implémenter la notification push Firebase en Java
[Pour les débutants] Pouvons nous enduire comme Swift!
J'ai essayé d'implémenter Sterling Sort avec Java Collector
[Java] J'ai essayé de mettre en œuvre la recherche de produits de l'API Yahoo
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
[Pour les débutants Swift] J'ai essayé de résumer le cycle de mise en page désordonné de ViewController et View