[PYTHON] Celui qui n'est pas sur DVD

Je me demande quoi faire

Quand j'ai entendu dire qu'il y avait un défi pour faire quelque chose qui fonctionne, j'ai trouvé diverses idées, mais celle qui était tout à fait à mon niveau (** seulement celle avec un degré de difficulté élevé **) ) Je ne pouvais pas y penser. Alors, quand j'explorais ceci et cela, quand j'ai soudainement vu le Bouncing Ball, je me suis souvenu d'une ** image familière **. C'est cette vidéo. Il s'agit d'une image dans laquelle se déplace la ** marque DVD **. C'est pourquoi j'aimerais faire ceci cette fois.

--Le produit final est this

Début de la production ~

Je vais en fait le faire sur la base de la balle rebondissante que j'ai faite plus tôt. En tant que processus de fabrication

  1. Fond fixe et forme de balle
  2. Essayez de changer la couleur à chaque fois qu'elle touche le mur

Fond fixe et forme de boule

Dans example07-06-1.py, rendez l'arrière-plan noir et la boule ovale. L'arrière-plan devient noir lorsque le dernier argument de la méthode canvas est bg = "black". Pour le transformer en ellipse, augmentez le rayon de l'axe des x du cercle.

Résultat corrigé


#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()

Changer la couleur de la balle à chaque fois qu'elle touche le mur

―― Ça ne va pas bien!

J'ai eu une erreur plusieurs fois et je me suis amélioré à chaque fois, mais cela n'a pas fonctionné du tout. J'ai donc reçu des conseils de mon professeur.

J'ai trouvé que je devais définir ** self.color sur aléatoire ** lorsque je frappe le mur **.

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()

Je ne peux toujours pas! Je ne peux pas jouer avec n'importe où. J'ai échoué.

Code source

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()

Impressions

Je suis très déçu de ne pas pouvoir programmer comme prévu. Cependant, j'ai beaucoup appris parce que j'ai acquis de nouvelles connaissances à cause des erreurs continues.

Les références

Randomisation de la couleur https://qiita.com/daddygongon/items/d658cd7877104975564f #Randomisation de la couleur À propos de la portée https://qiita.com/iverson3kobe0824/items/067cca581bf1ca349dd1 vidéo dvd https://www.youtube.com/watch?v=gAAp4n7xqbo

Recommended Posts

Celui qui n'est pas sur DVD
Test.py n'est pas reflété sur le serveur Web dans Python3.
[Linux] Qui est le travail d'arrière-plan! ??
Construire un environnement Python sur Ubuntu (lorsque pip n'était pas la valeur par défaut)
La valeur de pyTorch torch.var () n'est pas distribuée
Jusqu'à ce que la documentation Sphinx soit publiée sur GitHub
Jusqu'à la sortie de l'application Web avec Sakura VPS
Lorsque l'objet sélectionné dans bpy.context.selected_objects n'est pas renvoyé
Suivez tous les utilisateurs qui ne suivent pas sur Twitter
Vérifiez si le câble LAN est déconnecté sous Linux
Suspendre l'arrêt sous Linux lorsque la mise en veille n'est pas possible
Je me suis perdu dans le labyrinthe
Celui qui n'est pas sur DVD
Celui qui affiche la barre de progression en Python
Le gars qui obtient les données Fitbit du serveur
L'image est affichée dans l'environnement de développement local, mais l'image n'est pas affichée sur le serveur distant de VPS.
python> link> dir_util.copy_tree ()> update = 1> Ne pas copier celui acquis?
Procédures à suivre lorsque le japonais n'est pas affiché dans matplotlib
La plage d'adresses IP AWS est différente selon la méthode d'acquisition.