[PYTHON] Derjenige, der nicht auf DVD ist

Ich frage mich, was ich machen soll

Als ich hörte, dass es eine Herausforderung gab, etwas zu machen, das funktioniert, kam ich auf verschiedene Ideen, aber die, die ganz auf meinem Niveau war (** nur die mit einem hohen Schwierigkeitsgrad **) ) Ich konnte nicht daran denken. Als ich dies und das erkundete, als ich plötzlich den springenden Ball sah, erinnerte ich mich an ein ** vertrautes Bild **. Das ist dieses Video. Dies ist ein Bild, in dem sich die ** DVD-Markierung ** bewegt. Deshalb möchte ich diesmal machen.

Produktionsstart ~

Ich werde es tatsächlich basierend auf dem Bouncing Ball machen, den ich zuvor gemacht habe. Als Herstellungsprozess

  1. Hintergrund und Kugelform korrigiert
  2. Versuchen Sie, die Farbe jedes Mal zu ändern, wenn sie gegen die Wand stößt

Hintergrund und Kugelform behoben

Machen Sie in Beispiel 07-06-1.py den Hintergrund schwarz und den Ball oval. Der Hintergrund wird schwarz, wenn das letzte Argument der Canvas-Methode bg = "schwarz" ist. Erhöhen Sie den Radius der x-Achse des Kreises, um ihn in eine Ellipse umzuwandeln.

Korrigiertes Ergebnis


#cording:utf-8

import tkinter as tk
x = 400
y = 300

dx = 1
dy = 1

def move():
    global x, y , dx, dy
    canvas.create_oval(x - 30, y - 20, x + 30, y + 20, fill= "black", width= 0)
    x = x + dx
    y = y + dy 
    canvas.create_oval(x - 30, y - 20, x + 30, y + 20, fill= "red", width= 0)
    if x >= canvas.winfo_width():
        dx = -1
    if x <= 0:
        dx = +1
    if y >= canvas.winfo_height():
        dy = -1
    if y <= 0:
        dy = +1
    root.after(10,move)
root = tk.Tk()
root.geometry("600x400")

canvas = tk.Canvas(root, width = 600, height = 400, bg= "black")

canvas.place(x = 0, y =0)
root.after(10, move)

root.mainloop()

Ändern Sie die Farbe des Balls jedes Mal, wenn er gegen die Wand trifft

――Es geht nicht gut!

Ich habe viele Male einen Fehler bekommen und mich jedes Mal verbessert, aber es hat überhaupt nicht funktioniert. Also bekam ich einen Rat von meinem Lehrer.

Ich fand, dass ich ** self.color auf random ** setzen sollte, wenn ich gegen die Wand stoße **.

python


#cording:utf-8
import tkinter as tk 
import random

class Ball:
    def __init__(self, x, y, dx, dy,color):
        self.x = x
        self.y = y
        self.dx = dx
        self.dy = dy
        self.color = color
     def color_maker(init, fin):
        color1= "#"+ hex(random.randint(init, fin)
        ).lstrip("0x") + hex(random.randint(init, fin)
        ).lstrip("0x")+ hex(random.randint(init, fin)).lstrip("0x")
        return color1
       
         
    def move(self,canvas):
            canvas.create_oval(self.x - 20, self.y - 20, self.x + 20, self.y + 20, fill="black", wibdth = 0)
            self.x = self.x + self.dx
            self.y = self.y + self.dy
            canvas.create_oval(self.x - 20, self.y - 20, self.x + 20, self.y + 20, fill = self.color , width = 0)
            if self.x <= 0:
                self.dx = 1
                self.color = color_maker(8,15)
            
            if self.x >= canvas.winfo_width():
                self.dx= -1
                self.color = color_maker(8,15)
            if self.y <= 0:
                self.dy = 1
                self.color = color_maker(8,15)
            
            if self.y >= canvas.winfo_height():
                self.dy= -1
                self.color = color_maker(8,15)
    
          
b = Ball(400, 300, 1,1, self.color)



def loop():
    b.move(canvas)
    root.after(10, loop)
root = tk.Tk()
root.geometry("800x600")

canvas = tk.Canvas(root, width = 800, height = 600, bg = "black")
canvas.place(x = 0, y = 0)

root.after(10, loop)

root.mainloop()

Kann immer noch nicht! Ich kann nirgendwo damit spielen. Ich bin durchgefallen.

Quellcode

python


#cording:utf-8

import tkinter as tk
import random
x = 400
y = 300

dx = 1
dy = 1

def move():
    global x, y , dx, dy
    canvas.create_oval(x - 30, y - 20, x + 30, y + 20, fill= "black", width= 0)
    x = x + dx
    y = y + dy 
    canvas.create_oval(x - 30, y - 20, x + 30, y + 20,fill = "blue", width= 0)
    if x >= canvas.winfo_width():
        dx = -1
    if x <= 0:
        dx = +1
    if y >= canvas.winfo_height():
        dy = -1
    if y <= 0:
        dy = +1

    root.after(10,move)
root = tk.Tk()
root.geometry("600x400")


canvas = tk.Canvas(root, width = 600, height = 400, bg= "black")
canvas.place(x = 0, y =0)
root.after(10, move)

root.mainloop()

Impressionen

Ich bin sehr enttäuscht, dass ich nicht wie erwartet programmieren kann. Ich habe jedoch viel gelernt, weil ich aufgrund der ständigen Fehler neue Erkenntnisse gewonnen habe.

Verweise

Randomisierung der Farbe https://qiita.com/daddygongon/items/d658cd7877104975564f #Randomisierung der Farbe Informationen zum Gültigkeitsbereich https://qiita.com/iverson3kobe0824/items/067cca581bf1ca349dd1 DVD-Video https://www.youtube.com/watch?v=gAAp4n7xqbo

Recommended Posts

Derjenige, der nicht auf DVD ist
Test.py wird auf dem Webserver in Python3 nicht angezeigt.
[Linux] Wer ist der Hintergrundjob? ??
Erstellen einer Python-Umgebung unter Ubuntu (wenn pip nicht die Standardeinstellung war)
Der Wert von pyTorch torch.var () wird nicht verteilt
Bis die Sphinx-Dokumentation auf GitHub veröffentlicht wird
Bis die Webanwendung mit Sakura VPS veröffentlicht wird
Wenn das ausgewählte Objekt in bpy.context.selected_objects nicht zurückgegeben wird
Folgen Sie allen Benutzern, die nicht auf Twitter folgen
Überprüfen Sie, ob das LAN-Kabel unter Linux nicht angeschlossen ist
Unter Linux herunterfahren Wenn der Schlaf nicht möglich ist
Ich habe mich im Labyrinth verlaufen
Derjenige, der nicht auf DVD ist
Diejenige, die den Fortschrittsbalken in Python anzeigt
Der Typ, der die Fitbit-Daten vom Server erhält
Das Bild wird in der lokalen Entwicklungsumgebung angezeigt, aber das Bild wird nicht auf dem Remote-Server von VPS angezeigt.
python> link> dir_util.copy_tree ()> update = 1> Kopieren Sie den erworbenen nicht?
Verfahren, die durchgeführt werden müssen, wenn Japanisch nicht in matplotlib angezeigt wird
Der AWS IP-Bereich ist je nach Erfassungsmethode unterschiedlich.