0

だから私は動くボールを作成するこのコードを持っています:

from Tkinter import *
from random import randrange
from threading import Thread

Matrice = (600*400)*[0]

class Ball(Frame):

    def __init__(self, can, posx, posy, name):
        self.can = can

        self.largeur_can = int(self.can.cget("width"))
        self.hauteur_can = int(self.can.cget("height"))

        self.posx = posx
        self.posy = posy
        self.name = name 

        self.ball1 = self.can.create_oval(self.posy, self.posx, self.posy+10, self.posx+10, outline="red", fill=self.name, width=2)

        self.nx = randrange(-10,10,1)
        self.nx /= 2.0
        self.ny = randrange(-10,10,1)
        self.ny /= 2.0


        self.move()

    def move(self):
        global Matrice
        self.pos_ball = self.can.coords(self.ball1)
        self.posx_ball = self.pos_ball[0]
        self.posy_ball = self.pos_ball[1]

        if self.posx_ball < 0 or (self.posx_ball + 10) > self.largeur_can:
            self.nx = -self.nx         
        if self.posy_ball < 0 or (self.posy_ball + 10) > self.hauteur_can:
            self.ny = -self.ny

        self.can.move(self.ball1, self.nx, self.ny)

        Matrice[int(self.posy_ball)*600 + int(self.posx_ball)] += 100

        self.can.after(10, self.move)



root=Tk()
can=Canvas(root,width=600,height=400,bg="black")
for x in range(10):
    x=Ball(can,100,400, "blue")
    x=Ball(can,100,400, "green")
can.pack()
root.mainloop()

そして、ボールの後ろにトレースを作成Matriceし、各ボールが通過する場所を記録したマトリックスを作成しました。今度はそれを背景に表示したいのですが、方法がわかりません。注:マトリックスの値は、。以外の場所で減少または変更される可能性がありmoveます。だから誰かが私がそれをどのように行うことができるか考えていますか?

4

1 に答える 1

0

これは非効率的な方法ですが、最も簡単です。ボールを動かすたびに、ボールがあった場所から現在の場所に線を引くだけです。

self.can.move(self.ball1, self.nx, self.ny)

new_pos = self.can.coords(self.ball1)
self.can.create_line(self.posx_ball, self.posy_ball, new_pos[0], new_pos[1], fill='red')

self.can.after(10, self.move)

この線はスプライトの左上をたどることに注意してください。スプライトの中央をたどる場合は、座標を調整できます。

于 2013-01-19T23:15:43.107 に答える