我最近開始和Kivy一起玩,想做一個簡單的射擊遊戲。Kivy - 刪除touch_down上的物體
這是我的代碼:
import kivy
kivy.require('1.9.0')
from kivy.config import Config
Config.set('graphics', 'width', '800')
Config.set('graphics', 'height', '600')
from kivy.app import App
from kivy.clock import Clock
from kivy.core.text import LabelBase
from kivy.core.window import Window
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.graphics import Rectangle
from kivy.lang import Builder
from kivy.config import Config
import random, time
a = Builder.load_string('''
<BattleField>
BoxLayout:
orientation: 'vertical'
<Target>
canvas:
Rectangle:
pos: self.pos
size: self.size
source: 'target.jpg'
''')
class BattleField(Widget):
#to destroy target
def on_touch_down(self,touch):
#if self.collide_point(*touch.pos):
if self.collide_widget(self.target):
self.remove_widget(self.target)
def appear_target(self, *args):
random_pos = tuple([random.randint(0, 600) for i in range(2)])
self.target = Target()
self.target.pos = (random_pos)
self.add_widget(self.target)
class Target(Widget):
pass
class ClockApp(App):
def build(self):
g = BattleField()
Clock.schedule_interval(g.appear_target, 1)
return g
if __name__ == '__main__':
ClockApp().run()
所以暫時把它添加一個新的目標,每1秒。不過,我這裏有幾個問題:
- 只能刪除,我點擊最近插件
- 不管最近添加的窗口小部件添加刪除。
有人能幫我解決這個問題嗎?謝謝!
工程就像一個魅力,謝謝!我在玩代碼時發現,如果不在BattleField中創建__init__並將時鐘放入應用程序中,它就會像以前一樣工作。你有沒有特別的理由?我一定會閱讀你提供的鏈接。再次感謝! – Rezney
主要用於閱讀。很高興幫助! –