巨蟒奇异果更新游戏比分
原学程将引见巨蟒奇怪因革新游戏比分的处置办法,这篇学程是从其余处所瞅到的,而后减了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
属性。如许您便会获得所描写的毛病。
您不妨经由过程拜访App
的root
属性去完成您想要的操纵。测验考试将上1言调换为:
label = App.get_running_app().root.get_screen('game_screen').ids.score
label.text = str(int(label.text)+一)
佳了闭于巨蟒奇怪因革新游戏比分的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。