Я создаю базовое приложение для игры в угадайку в Киви, чтобы выучить его основы, но пока не совсем все понимаю. Мне нужно получить доступ к guesses_left, когда я перехожу к следующему экрану (TimeToGuess), чтобы при написании логики удалить догадки, если они угадали неправильно, и в конечном итоге проиграть, если они закончились.
Я уже пробовалустановить атрибут класса TimeToGuess как Guesses, чтобы получить к нему быстрый доступ, но использование canvas.clear () в релизе кнопки, которое также переключается на TimeToGuess, не работает для меня.
вот код файла python:
from kivy import *
import random
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import ScreenManager, Screen
guesses_left = int()
computer_num = random.randint(1, 10)
user_guess = int()
class WannaPlay(Screen):
pass
class Guesses(Screen):
guesses_left = int()
class TimeToGuess(Screen):
def user_is_guessing(self):
if user_guess != computer_num:
guesses_left -= 1
class Winner(Screen):
pass
class Loser(Screen):
pass
class ScreenManage(ScreenManager):
pass
kv = Builder.load_file('guessinggame.kv')
class GuessingGameApp(App):
def build(self):
return kv
if __name__ == '__main__':
GuessingGameApp().run()
и .kv:
ScreenManage:
WannaPlay:
Guesses:
TimeToGuess:
Winner:
Loser:
<WannaPlay>:
name: 'start'
GridLayout:
cols: 1
Label:
text: 'Want to Play the Guessing Game?'
GridLayout:
cols: 2
Button:
name: 'yes'
text: 'Yes'
on_release:
root.manager.transition.duration = 0
root.manager.current = 'guess_choice'
Button:
name: 'no'
text: 'No'
on_release:
app.stop()
<Guesses>
name: 'guess_choice'
id: guesses_choice
GridLayout:
cols: 1
Label:
text: 'How Many Guesses Would You Like?'
GridLayout:
cols: 4
Button:
name: 'guess_amount_one'
text: '1'
on_release:
root.manager.transition.duration = 0
root.manager.current = 'time_to_guess'
guesses_left = 1
print(guesses_left)
Button:
name: 'guess_amount_two'
text: '2'
on_release:
root.manager.transition.duration = 0
root.manager.current = 'time_to_guess'
guesses_left = 2
print(guesses_left)
Button:
name: 'guess_amount_three'
text: '3'
on_release:
root.manager.transition.duration = 0
root.manager.current = 'time_to_guess'
guesses_left = 3
print(guesses_left)
Button:
name: 'guess_amount_four'
text: '4'
on_release:
root.manager.transition.duration = 0
root.manager.current = 'time_to_guess'
guesses_left = 4
print(guesses_left)
<TimeToGuess>
name: 'time_to_guess'
GridLayout:
cols: 1
Label:
text: 'Guess a number between 1 and 10'
GridLayout:
cols: 5
Button:
name: 'guess_1'
text: '1'
Button:
name: 'guess_2'
text: '2'
Button:
name: 'guess_3'
text: '3'
Button:
name: 'guess_4'
text: '4'
Button:
name: 'guess_5'
text: '5'
Button:
name: 'guess_6'
text: '6'
Button:
name: 'guess_7'
text: '7'
Button:
name: 'guess_8'
text: '8'
Button:
name: 'guess_9'
text: '9'
Button:
name: 'guess_10'
text: '10'
Заранее благодарим за помощь
Этот обновленный код показывает, как на самом деле помог проверенный ответрешить хотя бы эту проблему (я уверен, что у меня будет еще больше проблем. lol)
Код Python:
from kivy import *
import random
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import ScreenManager, Screen
guesses_left = int()
user_guess = int()
computer_num = random.randint(1, 10)
class WannaPlay(Screen):
pass
class Guesses(Screen):
pass
def user_is_guessing(guesses_amount=guesses_left, computer_num=computer_num):
if user_guess != computer_num and guesses_amount == 0:
#subtract from guesses_left go to lose page
pass
elif guesses_amount == computer_num:
#go to win page
pass
elif guesses_amount != computer_num:
#subtract from guesses_left and have the user guess again
pass
class TimeToGuess(Screen):
pass
class Winner(Screen):
pass
class Loser(Screen):
pass
class ScreenManage(ScreenManager):
pass
kv = Builder.load_file('guessinggame.kv')
class GuessingGameApp(App):
def build(self):
return kv
if __name__ == '__main__':
GuessingGameApp().run()
.kv:
ScreenManage:
WannaPlay:
Guesses:
TimeToGuess:
Winner:
Loser:
<WannaPlay>:
name: 'start'
GridLayout:
cols: 1
Label:
text: 'Want to Play the Guessing Game?'
GridLayout:
cols: 2
Button:
name: 'yes'
text: 'Yes'
on_release:
root.manager.transition.duration = 0
root.manager.current = 'guess_choice'
Button:
name: 'no'
text: 'No'
on_release:
app.stop()
<Guesses>
name: 'guess_choice'
id: guesses_choice
GridLayout:
cols: 1
Label:
text: 'How Many Guesses Would You Like?'
GridLayout:
cols: 4
Button:
name: 'guess_amount_one'
text: '1'
on_release:
root.manager.transition.duration = 0
root.manager.current = 'time_to_guess'
guesses_left = 1
print(guesses_left)
Button:
name: 'guess_amount_two'
text: '2'
on_release:
root.manager.transition.duration = 0
root.manager.current = 'time_to_guess'
guesses_left = 2
print(guesses_left)
Button:
name: 'guess_amount_three'
text: '3'
on_release:
root.manager.transition.duration = 0
root.manager.current = 'time_to_guess'
guesses_left = 3
print(guesses_left)
Button:
name: 'guess_amount_four'
text: '4'
on_release:
root.manager.transition.duration = 0
root.manager.current = 'time_to_guess'
guesses_left = 4
print(guesses_left)
<TimeToGuess>
name: 'time_to_guess'
GridLayout:
cols: 1
Label:
text: 'Guess a number between 1 and 10'
GridLayout:
cols: 5
Button:
name: 'guess_1'
text: '1'
Button:
name: 'guess_2'
text: '2'
Button:
name: 'guess_3'
text: '3'
Button:
name: 'guess_4'
text: '4'
Button:
name: 'guess_5'
text: '5'
Button:
name: 'guess_6'
text: '6'
Button:
name: 'guess_7'
text: '7'
Button:
name: 'guess_8'
text: '8'
Button:
name: 'guess_9'
text: '9'
Button:
name: 'guess_10'
text: '10'