**kwargs in __init__() Methode
Verfasst: Dienstag 16. Mai 2023, 15:31
Warum braucht man in diesem Code von Hangman als Kivy-Mobile App das **kwargs in der __init__() Methode?
Vielleicht kann ja auch jemand die Zeile darunter mit dem super() erklären.
LG Pythonfan3000 
Vielleicht kann ja auch jemand die Zeile darunter mit dem super() erklären.
Code: Alles auswählen
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.image import Image
from kivy.core.window import Window
import random
class HangmanGame(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.word_list = ["python", "java", "ruby", "javascript", "php"]
self.guess_word = []
self.secret_word = ""
self.remaining_guesses = 6
self.img_path = "img/hangman_{}.png"
self.create_game_layout()
self.new_game()
def create_game_layout(self):
self.orientation = "vertical"
self.image = Image(source=self.img_path.format(0))
self.word_label = Label(text=" ".join(self.guess_word),
font_size="50sp",
halign="center",
valign="middle")
self.remaining_guesses_label = Label(text=f"Remaining guesses: {self.remaining_guesses}")
self.input_label = Label(text="Enter a letter:")
self.input = TextInput(multiline=False)
self.submit_button = Button(text="Submit", on_press=self.check_letter)
self.add_widget(self.image)
self.add_widget(self.word_label)
self.add_widget(self.remaining_guesses_label)
self.add_widget(self.input_label)
self.add_widget(self.input)
self.add_widget(self.submit_button)
def new_game(self):
self.secret_word = random.choice(self.word_list)
self.guess_word = ["_"] * len(self.secret_word)
self.remaining_guesses = 6
self.image.source = self.img_path.format(0)
self.input.text = ""
self.word_label.text = " ".join(self.guess_word)
self.remaining_guesses_label.text = f"Remaining guesses: {self.remaining_guesses}"
def check_letter(self, instance):
letter = self.input.text
if letter in self.secret_word:
for i, c in enumerate(self.secret_word):
if c == letter:
self.guess_word[i] = letter
if "_" not in self.guess_word:
self.end_game(True)
else:
self.remaining_guesses -= 1
self.image.source = self.img_path.format(6 - self.remaining_guesses)
self.remaining_guesses_label.text = f"Remaining guesses: {self.remaining_guesses}"
if self.remaining_guesses == 0:
self.end_game(False)
self.input.text = ""
self.word_label.text = " ".join(self.guess_word)
def end_game(self, victory):
message = "Congratulations, you won!" if victory else f"Sorry, the word was {self.secret_word}."
self.remaining_guesses_label.text = message
self.remove_widget(self.input_label)
self.remove_widget(self.input)
self.remove_widget(self.submit_button)
self.add_widget(Button(text="New Game", on_press=self.new_game))
class HangmanApp(App):
def build(self):
Window.clearcolor = (0.5, 0.5, 0.5, 1)
return HangmanGame()
if __name__ == '__main__':
HangmanApp().run()
