Was soll ich programmieren?

1 Antwort

Es müssen ja keine Spiele sein. Programmiere doch einfach mal einen Getränkeautomaten oder einen Fahrkartenautomaten. Mit Anwahl des Getränks oder des Reiseziels, den Geldeinwurf und auch die Geldrückgabe. Wenn der gewählte Getränkeschacht leer ist, kann das Getränk natürlich nicht mehr gewählt werden.

Viel Spass dabei.


Babbooey 
Beitragsersteller
 20.04.2025, 18:48

import pygame

import sys

class GetraenkeautomatGUI:

    def __init__(self):

        pygame.init()

        self.screen = pygame.display.set_mode((600, 400))

        pygame.display.set_caption("Getränkeautomat")

        self.font = pygame.font.Font(None, 36)

        self.getraenke = {

            "Cola": {"preis": 1.50, "bestand": 5},

            "Wasser": {"preis": 1.00, "bestand": 3},

            "Saft": {"preis": 2.00, "bestand": 2}

        }

        self.message = ""

    def anzeigen(self):

        self.screen.fill((0, 0, 0))

        title = self.font.render("Willkommen beim Getränkeautomaten!", True, (255, 255, 255))

        self.screen.blit(title, (50, 20))

        y_offset = 80

        for name, details in self.getraenke.items():

            status = "Ausverkauft" if details["bestand"] == 0 else f"{details['preis']}€"

            text = self.font.render(f"{name}: {status}", True, (255, 255, 255))

            self.screen.blit(text, (50, y_offset))

            y_offset += 40

        if self.message:

            msg_text = self.font.render(self.message, True, (255, 0, 0))

            self.screen.blit(msg_text, (50, 300))

        pygame.display.flip()

    def kaufen(self, wahl):

        if wahl not in self.getraenke:

            self.message = "Ungültige Auswahl."

            return

        getraenk = self.getraenke[wahl]

        if getraenk["bestand"] == 0:

            self.message = f"Entschuldigung, {wahl} ist ausverkauft."

            return

        self.message = f"Bitte werfen Sie {getraenk['preis']}€ ein."

        self.anzeigen()

        pygame.time.wait(2000)  # Simulate waiting for money input

        geld = getraenk["preis"]  # Simulate exact money input

        if geld < getraenk["preis"]:

            self.message = "Nicht genügend Geld eingeworfen."

            return

        wechselgeld = geld - getraenk["preis"]

        getraenk["bestand"] -= 1

        self.message = f"Vielen Dank! Hier ist Ihr {wahl}."

        if wechselgeld > 0:

            self.message += f" Wechselgeld: {wechselgeld:.2f}€"

    def starten(self):

        running = True

        while running:

            self.anzeigen()

            for event in pygame.event.get():

                if event.type == pygame.QUIT:

                    running = False

                elif event.type == pygame.KEYDOWN:

                    if event.key == pygame.K_1:

                        self.kaufen("Cola")

                    elif event.key == pygame.K_2:

                        self.kaufen("Wasser")

                    elif event.key == pygame.K_3:

                        self.kaufen("Saft")

                    elif event.key == pygame.K_ESCAPE:

                        running = False

        pygame.quit()

        sys.exit()

if __name__ == "__main__":

    automat_gui = GetraenkeautomatGUI()

    automat_gui.starten()

class Getraenkeautomat:

    def __init__(self):

        self.getraenke = {

            "Cola": {"preis": 1.50, "bestand": 5},

            "Wasser": {"preis": 1.00, "bestand": 3},

            "Saft": {"preis": 2.00, "bestand": 2}

        }

    def anzeigen(self):

        print("Willkommen beim Getränkeautomaten!")

        print("Verfügbare Getränke:")

        for name, details in self.getraenke.items():

            status = "Ausverkauft" if details["bestand"] == 0 else f"{details['preis']}€"

            print(f"- {name}: {status}")

    def kaufen(self):

        self.anzeigen()

        wahl = input("Bitte wählen Sie ein Getränk: ")

        if wahl not in self.getraenke:

            print("Ungültige Auswahl.")

            return

        getraenk = self.getraenke[wahl]

        if getraenk["bestand"] == 0:

            print(f"Entschuldigung, {wahl} ist ausverkauft.")

            return

        try:

            geld = float(input(f"Bitte werfen Sie {getraenk['preis']}€ ein: "))

        except ValueError:

            print("Ungültiger Betrag.")

            return

        if geld < getraenk["preis"]:

            print("Nicht genügend Geld eingeworfen.")

            return

        wechselgeld = geld - getraenk["preis"]

        getraenk["bestand"] -= 1

        print(f"Vielen Dank! Hier ist Ihr {wahl}.")

        if wechselgeld > 0:

            print(f"Ihr Wechselgeld: {wechselgeld:.2f}€")

    def starten(self):

        while True:

            print("\n1. Getränk kaufen")

            print("2. Beenden")

            auswahl = input("Bitte wählen Sie eine Option: ")

            if auswahl == "1":

                self.kaufen()

            elif auswahl == "2":

                print("Vielen Dank, dass Sie den Getränkeautomaten benutzt haben!")

                break

            else:

                print("Ungültige Auswahl.")

if __name__ == "__main__":

    automat = Getraenkeautomat()

    automat.starten()

Babbooey 
Beitragsersteller
 20.04.2025, 18:31

soll ich dir dann den code schicken?

Babbooey 
Beitragsersteller
 20.04.2025, 18:29

ok ich setz mich ran