Problème actualisation kivy
Bonjour,
J'ai un problème avec mon code kivy. Tous mes print marchent, sauf celui de collision qui devrait en pratique marcher. J'ai l'impression que ma page ne se réactualise pas étant donner que right et left marchent.
import kivy import random import time from kivy.app import App from kivy.animation import Animation from kivy.clock import Clock from kivy.core.window import Window from kivy.lang import Builder from kivy.properties import ( NumericProperty, ReferenceListProperty, ObjectProperty ) from kivy.uix.button import ButtonBehavior from kivy.uix.image import Image from kivy.uix.label import Label from kivy.uix.screenmanager import Screen, FadeTransition from kivy.uix.widget import Widget from kivy.vector import Vector class ImageButton(ButtonBehavior, Image): pass class Home(Screen): pass class Player(): def __init__(self): self.life=3 self.point=0 def add_point(self): self.point += 1 def supp_life(self): self.life -= 1 class Game(Screen): def __init__(self, **kwargs): super(Game, self).__init__(**kwargs) self._keyboard = Window.request_keyboard(self._keyboard_closed, self) self._keyboard.bind(on_key_down=self._on_keyboard_down) self.player = Player() Clock.schedule_interval(self.Select_image, 1) Clock.schedule_interval(self.update, 1.0 / 60.0) def _keyboard_closed(self): self._keyboard.unbind(on_key_down=self._on_keyboard_down) self._keyboard = None def _on_keyboard_down(self, keyboard, keycode, text, modifiers): if keycode[1] in ['left', 'right']: if keycode[1] == 'left': print("left") self.ids.mon_widget.x -= 30 elif keycode[1] == 'right': print("right") self.ids.mon_widget.x += 30 return True def Animate_image(self, rand_image): anim = Animation(y = -2000, duration = 3) anim.start(rand_image) print("imageanim") def Select_image(self, dt): image_list = [self.ids.egg, self.ids.canette] rand_image = image_list[random.randint(0,1)] self.Animate_image(rand_image) def update(self,dt): if self.player.life > 0: if self.ids.egg.collide_widget(self.ids.mon_widget): print("collide") self.player.supp_life() lead = Builder.load_file("main.kv") class Ecogame(App): def build(self): self.game = Game() return lead def change_screen(self, screen_name): screen_manager = self.root.ids['screen_manager'] screen_manager.transition = FadeTransition() screen_manager.current = screen_name Ecogame().run()
Main.kv
#:kivy 1.0.9 #:include home.kv #:include game.kv GridLayout: cols: 1 ScreenManager: id: screen_manager Home: name: "home" id: home Game: name: "game" id: game game.kv: <Game>: canvas.before: Color: rgba: 0.961, 0.937, 0.831, 1 Rectangle: pos: self.pos size: self.size FloatLayout: Image: id: mon_widget pos_hint: {"center_x": 0.5, "center_y": 0.05 } source: "poubelle1.png" size_hint: 0.3, .2 Image: id: egg pos_hint: {"center_x": 0.5, "center_y": 0.5 } size_hint: 0.3,0.3 source: "egg.png" Image: id: canette pos_hint: {"center_x": 0.5, "center_y": 0.5 } size_hint: 0.3,0.3 source: "canette.png" home.kv : <Home>: canvas.before: Color: rgba: 0.298, 0.424, 0.325, 1 Rectangle: pos: self.pos size: self.size FloatLayout: GridLayout: rows: 1 pos_hint: {"center_x": 0.5, "center_y": 0.5 } size_hint: 1, .2 ImageButton: source: "play.png" id: play_image pos_hint: {'center_x': 0.5, 'center_y': 0.5 } size_hint: 1, 1 on_release: app.change_screen("game")
Merci beaucoup d'avance
Bonne soirée
A voir également:
- Problème actualisation kivy
- Bouton d'actualisation sur smartphone - Forum Samsung
- Actualisation automatique excel ✓ - Forum Excel
- Désactiver actualisation automatique chrome - Forum Réseaux sociaux
- Bouton d'actualisation sur page web ? ✓ - Forum Webmastering
- Probleme grindr impossible d'actualiser ✓ - Forum Instagram
1 réponse
Bonjour,
Veille à partager tes extraits de code comme expliqué ici.
J'ai essayé de remettre en forme (et réindenter) ton code mais je ne sais pas si c'est exactement ce que tu as. Merci de contrôler et de corriger ton message initial si besoin.
En admettant que ce soit bien :
if self.player.life > 0: if self.ids.egg.collide_widget(self.ids.mon_widget): print("collide")
Il faudrait commencer par s'assurer que la vie est positive (rajoute un print ?). Si ça n'est pas ça il faudrait vérifier les arguments passés à collide_widget.
Bonne chance