【问题标题】:I need to change my random number every time this particular button is pressed in Kivy每次在 Kivy 中按下此特定按钮时,我都需要更改我的随机数
【发布时间】:2019-11-09 17:57:23
【问题描述】:

我需要,每次游戏开始时我的随机数都要改变。请记住,随机数由几个不同的类访问。以下是来自 python 和 .kv 文件的一些代码 sn-ps。

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
from kivy.uix.textinput import TextInput


class WannaPlay(Screen):
    pass


class Guesses(Screen):
    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

    computer_num = random.randint(1, 10)
    random_num = str(computer_num)
    print(random_num)
    guesses_left = 3


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: 'You Will Have 3 guesses. Are You Ready?'
        Button:
            name: 'yes_guess'
            text: 'YES'
            on_release:
                root.manager.current = 'time_to_guess'
                root.manager.transition.duration = 0
                app.guesses_left = int(3)





<TimeToGuess>

    name: 'time_to_guess'
    GridLayout:
        cols: 1

        Label:
            text: 'Guess a number between 1 and 10'
        Label:
            id: guesses_left
            text: 'Guesses Left: '

        GridLayout:
            cols: 2

            TextInput:
                id: guess
                name: 'user_guess'

            Button:
                text: 'Submit Answer'
                on_release:

                    app.guesses_left = int(app.guesses_left) - int(1)
                    guesses_left.text = 'Guesses Left: ' + str(app.guesses_left)
                    root.manager.current = 'winner' if guess.text == app.random_num else 'loser' if guess.text != app.random_num and app.guesses_left == int(0) else 'time_to_guess'
                    root.manager.transition.direction = 'left'
                    root.manager.transition.duration = 0
                    guess.text = ''





<Winner>
    name: 'winner'
    GridLayout:
        cols: 1
        Label:
            text: 'You have Won!'
        Label:
            text: 'Would You Like To Play Again?'
        GridLayout:
            cols: 2
            Button:
                text: 'Yes'
                on_release:
                    app.guesses_left = int(3)
                    root.manager.current = 'guess_choice'
                    root.manager.transition.duration = 0


            Button:
                text: 'No'
                on_release:
                    app.stop()
<Loser>
    name: 'loser'
    GridLayout:
        cols: 1
        Label:
            text:'You have Lost!'
        Label:
            text: 'Would You Like To Play Again?'
        GridLayout:
            cols: 2
            Button:
                text: 'Yes'
                on_press:
                    root.manager.current = 'guess_choice'
                    root.manager.transition.duration = 0
            Button:
                text: 'No'
                on_release:
                    app.stop()

所以,当点击是时。我需要一个新的随机数来生成,它仍然可以很容易地从不同的类中访问。提前谢谢你的帮助

【问题讨论】:

  • 发布一个最小的可运行示例。您甚至没有任何代码尝试使用您生成的随机数,因此没有什么可以指出如何修复。
  • 我已更新代码块以包含更多代码以显示如何使用随机数。每次用户想再玩时我只需要一个新的随机数

标签: python python-3.x kivy kivy-language


【解决方案1】:

kv 文件的开头添加以下行:

#:import random random

然后,无论您需要在哪里重新初始化random_num,只需添加以下行:

app.random_num = str(random.randint(1, 10))

例如,在您的&lt;Loser&gt; 规则中:

<Loser>
    name: 'loser'
    GridLayout:
        cols: 1
        Label:
            text:'You have Lost!'
        Label:
            text: 'Would You Like To Play Again?'
        GridLayout:
            cols: 2
            Button:
                text: 'Yes'
                on_press:
                    root.manager.current = 'guess_choice'
                    app.random_num = str(random.randint(1, 10))
                    root.manager.transition.duration = 0
            Button:
                text: 'No'
                on_release:
                    app.stop()

【讨论】:

  • 天哪,谢谢!这正是我所需要的。请注意,我还必须再次将 random_num 变量重新分配给 computer_num 变量,以更改我的 .kv 文件中的登录名。再次感谢!!!!!!
  • 我没有更新 computer_num 变量,因为它没有在您发布的代码中的其他任何地方使用。
  • 我明白你的意思。看起来我添加了一些不需要的额外逻辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多