[PYTHON] J'ai essayé de multiplier les balles rebondissantes (parfois x100)

Politique de base

texte "La classe d'introduction Python la plus simple" par Fumitaka Osawa, (Sotec Publishing, 2017) "Puis-je augmenter davantage?" Tel est le motif. Quoi qu'il en soit, les muselières de couleur sont modernisées.


bouncing_ball.gif


Comment faire une vidéo


Définir aléatoirement les valeurs initiales pour la position, la vitesse et la couleur

: random.randint(0,9) Doit être amélioré.

random.randint(0, 800), random.randint(0, 600) #x,position y
random.randint(0, 10)-5 # dx

color1 = "#e8f" # rgb color

Comment dois-je faire cela?


Randomisation de la couleur

color1 = "#"+
      hex(random.randint(1, 15)).lstrip("0x") +
      hex(random.randint(1, 15)).lstrip("0x") + 
      hex(random.randint(1, 15)).lstrip("0x")

Comme. Que fais tu

  1. Préparez une chaîne appelée "#"
  2. Donner un entier de 1..15 (1..f) et
  3. Convertissez en hexadécimal tel que "0xe" avec hexadécimal
  4. Dénudez le "0x" à gauche (l) avec la bande l

Beaucoup de balles

Après cela, ajoutez beaucoup de balles aux balles.

balls = []
for j in range(100):
    balls.append(Ball(x, y, dx, dy, color)

Ne génère pas bien

En fait, il échoue deux fois en trois fois.

  File "C:\Users\shige\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 2567, in __init__
    self.tk.call(
_tkinter.TclError: invalid color name "#12"

Impossible de générer des caractères de couleur (corrigé, peut-être).


La source

Je vais tout exposer.

# Copyright (c) 2020 daddygongon
# Released under the MIT license
# https://opensource.org/licenses/mit-license.php
import tkinter as tk
import random
speed = 1

class Ball:
    global speed
    def __init__(self, x, y, dx, dy, color):
        self.x = x
        self.y = y
        self.dx = dx*speed
        self.dy = dy*speed
        self.color = color
        self.shape = None

    def move(self, canvas):
        self.erase(canvas)
        self.x = self.x + self.dx
        self.y = self.y + self.dy
        self.draw(canvas)
        if (self.x >= canvas.winfo_width() or self.x <= 0):
            self.dx = -self.dx
        if (self.y >= canvas.winfo_height() or self.y <= 0):
            self.dy = -self.dy
    def erase(self, canvas):
        canvas.delete(self.shape)
    def draw(self, canvas):
        self.shape = canvas.create_oval(self.x - 20, self.y - 20, self.x +
                                        20, self.y + 20, fill=self.color, width=0)

def loop():
    for b in balls:
        b.move(canvas)
    root.after(10, loop)


root = tk.Tk()
root.geometry("800x600")

color1 = "#"+hex(random.randint(1, 2)
                 ).lstrip("0x")+hex(random.randint(1, 2)
                                    ).lstrip("0x") + hex(random.randint(1, 2)
                                                         ).lstrip("0x")

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

balls = []
for j in range(100):
    color1 = "#"+hex(random.randint(8, 15)
                     ).lstrip("0x")+hex(random.randint(8, 15)
                                        ).lstrip("0x") + hex(random.randint(8, 15)
                                                             ).lstrip("0x")
    balls.append(Ball(random.randint(0, 800), random.randint(0, 600),
                      random.randint(0, 10)*2-10, random.randint(0,10)*2-10, color1))

root.after(10, loop)
root.mainloop()

Il semble que la dernière boucle principale ne soit pas nécessaire pour l'inactivité.

Recommended Posts

J'ai essayé de multiplier les balles rebondissantes (parfois x100)
J'ai essayé de déboguer.
J'ai essayé d'apprendre PredNet
J'ai essayé d'organiser SVM.
J'ai essayé d'implémenter PCANet
J'ai essayé de réintroduire Linux
J'ai essayé de résumer SparseMatrix
jupyter je l'ai touché
J'ai essayé d'implémenter StarGAN (1)
J'ai essayé les champignons Pepper x IBM Bluemix Text to Speech
J'ai essayé d'implémenter Deep VQE
J'ai essayé de créer l'API Quip
J'ai essayé de toucher Python (installation)
J'ai essayé de mettre en place une validation contradictoire
J'ai essayé d'expliquer l'ensemble de données de Pytorch
J'ai essayé l'authentification vocale Watson (Speech to Text)
J'ai touché l'API de Tesla
J'ai essayé de m'organiser à propos de MCMC.
J'ai essayé d'implémenter Realness GAN
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
J'ai essayé d'afficher l'interface graphique sur Mac avec le système X Window
J'ai essayé de résumer la gestion des exceptions Python
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'utiliser Azure Speech to Text.
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé de résumer la commande umask
J'ai essayé d'implémenter la permutation en Python
Livre Wrangle x Python Je l'ai essayé [2]
J'ai essayé de créer un linebot (préparation)
J'ai essayé de visualiser AutoEncoder avec TensorFlow
J'ai essayé de reconnaître le mot de réveil
J'ai essayé de commencer avec Hy
J'ai essayé d'implémenter PLSA dans Python 2
Entrée standard Python3 que j'ai essayé de résumer
J'ai essayé de classer le texte en utilisant TensorFlow
J'ai essayé d'ajouter un post-incrément à l'implémentation CPython
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé de laisser optuna résoudre le nombre
J'ai essayé d'estimer le rapport de circonférence π de manière probabiliste
J'ai essayé de toucher l'API COTOHA
J'ai essayé d'implémenter PPO en Python
J'ai essayé d'implémenter CVAE avec PyTorch
Livre Wrangle x Python Je l'ai essayé [1]
J'ai créé une API Web
J'ai essayé de résoudre TSP avec QAOA
[Python] J'ai essayé de calculer TF-IDF régulièrement
J'ai essayé de toucher Python (syntaxe de base)
J'ai fait de mon mieux pour retourner au Lasso
J'ai essayé de résumer les modules d'Ansible - l'édition Linux
J'ai essayé de prédire l'année prochaine avec l'IA
J'ai essayé de créer une méthode de super résolution / ESPCN
J'ai essayé de programmer la bulle de tri par langue
J'ai essayé Web Scraping pour analyser les paroles.
J'ai essayé d'implémenter la lecture de Dataset avec PyTorch
J'ai essayé d'utiliser lightGBM, xg boost avec Boruta
J'ai essayé de créer une méthode de super résolution / SRCNN ①