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()
