Добавляем больше движения к рандомизации, добавляем сетку с матрицами: Tkinter, Python - PullRequest
1 голос
/ 04 февраля 2020

Я пытаюсь заставить шар двигаться случайно во всех направлениях (вверх, вниз, вправо, влево, по диагонали), а также реализовать сетку с использованием матриц. Каждая ячейка в сетке будет содержать значение 20, и когда мяч перемещается над коробкой, значение ячейки уменьшается на единицу.

Моя главная проблема - дать мячу больше движение, как не только по диагонали.

Вот код:

from tkinter import *
from random import randint
import time

class Ball: 
    def __init__(self,canvas,color):
        width = 1280
        height = 720        
        self.alive = True
        self.canvas = canvas 
        self.id = canvas.create_oval(30, 30, 50, 50, fill=color) 
        self.canvas.move(self.id, 640, 360)
        self.vx = randint(0,2)
        self.vy = randint(0,2)
        self.canvas_width = self.canvas.winfo_width() 
        self.canvas_height = self.canvas.winfo_height() 

    def move(self): 
        self.canvas.move(self.id, self.vx, self.vy) 
        pos = self.canvas.coords(self.id) 
        if pos[0] <= 0:
            self.vx = 1
        if pos[2] >= self.canvas_width:
            self.vx = -1
        if pos[1] <= 0:
            self.vy = 1
        if pos[3] >= self.canvas_height: 
            self.vy = -1

    def kill(self):
        self.alive = False

def main():
    tk = Tk()
    tk.title("Bee Ball")
    tk.resizable(False, False)
    tk.wm_attributes("-topmost", 1)
    canvas = Canvas(tk, bg="white", width=1280, height=720, bd=0, highlightthickness=0)
    canvas.pack()
    tk.update()

    tk.protocol("WM_DELETE_WINDOW", lambda: ball1.kill())

    ball1 = Ball(canvas, "black")
    while ball1.alive:
        tk.update()
        ball1.move()
        time.sleep(0.005)
    tk.destroy()

if __name__ == "__main__":
    main()

Если кто-то может помочь с чем и, возможно, с сеткой / дать мне некоторый ресурс изучить, как сделать сетку с помощью tkinter или помочь с матрицами, это было бы здорово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...