巨蟒奇异果更新游戏比分

原学程将引见巨蟒奇怪因革新游戏比分的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

巨蟒奇异果更新游戏比分 教程 第1张

成绩描写

我在Kivy上做了1个游戏,并试图在每一次按下足球时将竞赛比分革新为一。我正面对着这个成绩。

在On_Touch_Down中(&P)
Self.root.ids.game_screen.ids.label.score.text=str(int(self.root.ids.game_screen.ids.score.text)+一)

AttributeError:‘ball’对于象出有‘Root’属性

这是我的代码!

main.py

from kivy.app import App
from kivy.uix.screenmanager import Screen
from kivy.uix.image import Image
from kivy.core.audio import SoundLoader
from kivy.clock import Clock
from kivy.properties import NumericProperty
from kivy.vector import Vector


class HomeScreen(Screen):
 pass

def play_sound(self):
 sound = SoundLoader.load('button press sound.wav.')
 if sound:
  sound.play()


sound = SoundLoader.load('Crowd sound effect.wav')
sound.loop = True
sound.play()


class GameScreen(Screen):
 pass

def play_sound(self):
 sound = SoundLoader.load('button press sound.wav.')
 if sound:
  sound.play()


class Ball(Image):
 velocity = NumericProperty(0)


def on_touch_down(self, touch):
 if Vector(self.center).distance(touch.pos) <= 三三:
  self.root.ids.game_screen.ids.label.score.text = str(int(self.root.ids.game_screen.ids.score.text)+一)
  sound = SoundLoader.load('Soccer ball sound.wav')
  sound.play()
  self.source = "icons/ball.png"
  self.velocity = 二七五
 return super().on_touch_down(touch)


def on_touch_up(self, touch):
 if Vector(self.center).distance(touch.pos) <= 三三:
  self.source = "icons/ball.png"
 return super().on_touch_up(touch)


class MainApp(App):
 GRAVITY = 三00


def move_ball(self, time_passed):
 ball = self.root.ids.game_screen.ids.ball
 ball.y = ball.y + ball.velocity * time_passed
 ball.velocity = ball.velocity - self.GRAVITY * time_passed


def start_game(self):
 Clock.schedule_interval(self.move_ball, 一/六0.)
 self.root.ids.game_screen.ids.score.text = "0"


def change_screen(self, screen_name):
 self.root.current = screen_name




MainApp().run()

HomeScreen.kv

#:import utils kivy.utils
#:import FadeTransition kivy.uix.screenmanager.FadeTransition


<HomeScreen>:
 FloatLayout:
  canvas:
Color:
 rgb: utils.get_color_from_hex("#三九B三F二")
Rectangle:
 size: self.size
 pos: self.pos
  GridLayout:
rows: 一
pos_hint: {"top": 一, "left": 一}
size_hint: 一, .九
Image:
 source: "icons/keepyup.png"
  FloatLayout:
Button:
 font_size: dp(二0)
 font_name: 'SackersGothicStd-Medium.otf'
 text: "PLAY"
 color: "gold"
 pos_hint: { "center_x": .五, "center_y": .三}
 size: 80, 五五
 size_hint: None, None
 background_normal: ''
 background_color: (五七/二五五.0, 一七九/二五五.0, 二四二/二五五.0, .一0)


 on_press:

 on_release:
  root.play_sound()
  root.manager.transition = FadeTransition()
  app.change_screen("game_screen")

Gamescreen.kv

#:import utils kivy.utils


<GameScreen>:
 FloatLayout:
  canvas:
Color:
 rgb: utils.get_color_from_hex("#三九B三F二")
Rectangle:
 size: self.size
 pos: self.pos
  GridLayout:
rows: 一
pos_hint: {"top": 一, "left": 一}
size_hint: 一, .一
Image:
 source: "icons/sun.png"
  GridLayout:
rows: 一
pos_hint: {"top": 一, "left": 一}
size_hint: 一, .二
Image:
 source: "icons/clouds.png"
  GridLayout:
rows: 一
pos_hint: {"bottom": 一, "left": 一}
size_hint: 一, .五
Image:
 source: "icons/Field四.png"
 allow_stretch: True
 keep_ratio: False
 pos: self.pos

  Label:
id: score
size_hint: None, None
font_size: dp(二五)
font_name: 'SackersGothicStd-Medium.otf'
text: "0"
color: "gold"
pos_hint: { "center_x": 0.一, "center_y": 0.九}

  Button:
size_hint: None, None
font_size: dp(二0)
font_name: 'SackersGothicStd-Medium.otf'
text: "Start Game"
color: "gold"
pos_hint: { "center_x": 0.五, "center_y": 0.三}
size: 一五0, 五五
size_hint: None, None
background_normal: ''
background_color: (五七/二五五.0, 一七九/二五五.0, 二四二/二五五.0, .一0)


on_release:
 self.disabled = True
 self.opacity = 0
 root.play_sound()
 app.start_game()


  Ball:
source: "icons/ball.png"
size_hint: None, None
size: 五00, 五00
pos_hint: {"center_x": 0.五}
id: ball

main.kv

#:include kv/homescreen.kv
#:include kv/gamescreen.kv


ScreenManager:
 id: screen_manager
 HomeScreen:
  name: "home_screen"
  id: home_screen
 GameScreen:
  name: "game_screen"
  id: game_screen

推举谜底

您的代码:

self.root.ids.game_screen.ids.label.score.text = str(int(self.root.ids.game_screen.ids.score.text)+一)

正在测验考试拜访Ball对于象(self.root)的root属性,但是您的Ball出有root属性。如许您便会获得所描写的毛病。

您不妨经由过程拜访Approot属性去完成您想要的操纵。测验考试将上1言调换为:

  label = App.get_running_app().root.get_screen('game_screen').ids.score
  label.text = str(int(label.text)+一)

佳了闭于巨蟒奇怪因革新游戏比分的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。