Как сделать диагональную линию в этом коде? - PullRequest
0 голосов
/ 19 декабря 2018

Конечный продукт должен выглядеть следующим образом enter image description here

Как сделать треугольник в нижней части изображения?Пока я получил только 6 полос.Я использую tkinter и random.

import tkinter
import random
import math
import time

canvas = tkinter.Canvas(width=600 ,height=400)
canvas.pack()
previerka = tkinter.Tk()
frame = tkinter.Frame(previerka)
frame.pack()

def shooting1():
    for a in range(8000):
        y = 0
        x = 0
        xr = random.randint(0,600)
        yp = random.randint(0,600)
        if yp <= 600:
            canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline="yellow", width=2)
        if 100 <= xr <= 300:
            canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline="black", width=2)
        if 200 <= xr <= 400:
            canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline="blue", width=2)
        if 300 <= xr <= 500:
            canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline="green", width=2)
        if 400 <= xr <= 600:
            canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline="white", width=2)
        if 500 <= xr <= 700:
            canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline="red", width=2)
button1=tkinter.Button(frame, text="shooting", fg="black", bg="white", command=shooting1)
button1.pack()

1 Ответ

0 голосов
/ 19 декабря 2018

Я не знаю, понимаете ли вы это, но вы перекрываете все цветные точки (попробуйте изменить ширину любого овала на 3 или 4, и вы поймете это).Вам необходимо рассчитать, совместимы ли значения x и y в соответствии с этой строкой y = 2x/3 (для компьютера ось Y инвертирована, поэтому y = 400 - 2x/3).Тогда и только тогда вы будете рисовать на этом холсте.Вот пример.

import tkinter
import random

previerka = tkinter.Tk()
canvas = tkinter.Canvas(previerka, width=600, height=400)
canvas.pack()
frame = tkinter.Frame(previerka)
frame.pack()

def shooting1():
    y = 0
    x = 0
    i = 0
    r  =("%02x"%random.randint(0,255))
    g = ("%02x"%random.randint(0,255))
    b = ("%02x"%random.randint(0,255))
    rand_color="#"+r+g+b

    for _ in range(20000):
        xr = random.randint(0,600)
        yp = random.randint(0,400)
        if yp<=400-2*xr//3:
            if xr < 100:
                canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline="yellow", width=2)
            elif xr < 200:
                canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline="black", width=2)
            elif xr < 300:
                canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline="blue", width=2)
            elif xr < 400:
                canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline="green", width=2)
            elif xr < 500:
                canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline="white", width=2)
            elif xr <= 600:
                canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline="red", width=2)
        else:
            canvas.create_oval(x+xr,y+yp,x+xr,y+yp, outline=rand_color, width=2)

button1=tkinter.Button(frame, text="shooting", fg="black", bg="white", command=shooting1)
button1.pack()
previerka.mainloop()

enter image description here

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