2016-06-19 9 views
2

Ich mache ein Python-Spiel und ich bin mir nicht sicher, wie man den Gegner und den Spieler Kollisionen machen kann. Könnte mir jemand eine einfache Möglichkeit zeigen, Kollisionen zu mehreren Dingen effizient hinzuzufügen. Ich möchte, dass der Gegner in meinem Python-Spiel mit dem Spieler kollidiert. Hier ist der Code, den ich benutze, um den Gegner zum Spieler zu bewegen. Dieser Code bewegt den Feind, aber der Gegner kollidiert nicht mit dem Spieler.Wie macht man Kollisionen im TKinter?

if self.canvas.coords(self.man)[0] > self.canvas.coords(Man1.man)[0]: 
    self.canvas.move(self.man,-1,0) 
if self.canvas.coords(self.man)[0] < self.canvas.coords(Man1.man)[0]: 
    self.canvas.move(self.man,1,0) 
if self.canvas.coords(self.man)[1] < self.canvas.coords(Man1.man)[1]: 
    self.canvas.move(self.man,0,1) 
if self.canvas.coords(self.man)[1] > self.canvas.coords(Man1.man)[1]: 
    self.canvas.move(self.man,0,-1) 
+1

fragen Sie, wie zwei Elemente auf einer Leinwand zu bewegen, bis sie sich berühren? –

+0

check [this] (https://inventwithpython.com/chapter18.html) out – girthquake

+0

Ich versuche, ein Element auf der Leinwand zu stoppen, wenn es mit einem anderen Element kollidiert – Crafterguy

Antwort

1

können Sie die canvas.overlapping() verwenden, die alle Einzelteile in einem bestimmten Rechteck zurückgibt. Geben Sie ihm einfach die x, y-Koordinaten eines Ihrer Objekte und sehen Sie, ob das Tupel mehr als eins zurückgibt.

, wenn Sie uns etwas Code zeigen, oder mehr Details geben wir vielleicht besser helfen können Sie

+0

Könnten Sie bitte ein funktionierendes und überprüfbares Beispiel für ihre Verwendung geben? – nbro

+0

Ich versuchte canvas.overlapping, aber es gab mir diesen Fehler: AttributeError: 'Canvas' Objekt hat kein Attribut 'überlappend' – Crafterguy

Verwandte Themen