für die Schule sollen wir in Gruppen etwas 'Beliebiges' in der besten aller Programmiersprachen, Python programmieren.
In meiner Gruppe haben wir uns dazu entschieden, ein RPG in Draufsicht zu erstellen. Zur Umsetzung haben wir uns für die Erweiterung Kivy entschieden, da sich solcher Code angeblich sehr leicht in APKs umwandeln lässt (was bei uns auch funktioniert hat).
Beim Versuch ein Menü zu erstellen ist bei uns folgendes herausgekommen (Das Dateieinlesen/beschreiben diente nur zur Fehlerbeseitigung):
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.modules import keybinding
from kivy.core.window import Window
class Main(FloatLayout):
def __init__(self, **kwargs):
super(Main, self).__init__(**kwargs)
self.StartScreen(1)
def StartScreen(self, instance):
#
fobj = open("mode.txt", "w")
fobj.write("1")
fobj.close()
#
self.clear_widgets()
print("StartScreen")
btn1 = Button(text="Play", font_name="BDRENAIS.ttf", font_size=80, size_hint=(.5, .1), pos_hint=({'center_x': .5, 'center_y': .8}), background_normal='btn.png', background_down='btn_pressed.png', border=(0,0,0,0))
btn1.bind(on_release=self.start)
self.add_widget(btn1)
btn2 = Button(text="Options", font_name="BDRENAIS.ttf", font_size=80, size_hint=(.5, .1), pos_hint=({'center_x': .5, 'center_y': .5}), background_normal='btn.png', background_down='btn_pressed.png', border=(0,0,0,0))
btn2.bind(on_release=self.optionen)
self.add_widget(btn2)
btn3 = Button(text="Exit", font_name="BDRENAIS.ttf", font_size=80, size_hint=(.5, .1), pos_hint=({'center_x': .5, 'center_y': .2}), background_normal='btn.png', background_down='btn_pressed.png', border=(0,0,0,0))
btn3.bind(on_release=self.stop)
self.add_widget(btn3)
return True
def start(self, instance):
#
fobj = open("mode.txt", "w")
fobj.write("2")
fobj.close()
fobj = open("mode.txt", "r")
mode = fobj.read()
fobj.close()
#
self.clear_widgets()
print("start")
if mode == "2":
self._keyboard = Window.request_keyboard(self._keyboard_closed, self)
self._keyboard.bind(on_key_down = self._on_keyboard_down)
def _keyboard_closed(self):
#
fobj = open("mode.txt", "r")
mode = fobj.read()
fobj.close()
#
if mode == "2":
self._keyboard.unbind(on_key_down = self.start._on_keyboard_down)
self._keyboard = None
def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
#
fobj = open("mode.txt", "r")
mode = fobj.read()
fobj.close()
#
if mode == "2":
if keycode[1] == 'p':
btnback = Button(text="Zurueck", font_name="BDRENAIS.ttf", font_size=80, size_hint=(.5, .1), pos_hint=({'center_x': .5, 'center_y': .2}), background_normal='btn.png', background_down='btn_pressed.png', border=(0,0,0,0))
btnback.bind(on_release=self.StartScreen)
self.add_widget(btnback)
def optionen(self, instance):
#
fobj = open("mode.txt", "w")
fobj.write("3")
fobj.close()
#
self.clear_widgets()
print("options")
btnback = Button(text="Zurueck", font_name="BDRENAIS.ttf", font_size=80, size_hint=(.5, .1), pos_hint=({'center_x': .5, 'center_y': .2}), background_normal='btn.png', background_down='btn_pressed.png', border=(0,0,0,0))
btnback.bind(on_release=self.StartScreen)
self.add_widget(btnback)
def stop(self, instance):
#
fobj = open("mode.txt", "w")
fobj.write("4")
fobj.close()
#
self.clear_widgets()
print("stop")
exit()
class Ini(App):
def build(self):
return Main()
Ini().run()
Nun das Problem: Die einzelnen Funktionen laufen im Hintergrund weiter, was dazu führt, dass man, wenn man auf Play drückt, 'P' drückt, auf Zurueck drückt, wieder 'P' drückt und dann wieder auf Play drücken möchte, einen Error erhält.
Ich hoffe ihr habt irgendwelche hilfreichen Ideen zur Lösung des Problems. ('Nutzt doch Pygame' ist nicht hilfreich =) )
MfG
Julian

Hilfe
Neues Thema
Antworten

Nach oben




