Skip to content

Instantly share code, notes, and snippets.

@bastoche
Created January 22, 2018 20:52
Show Gist options
  • Save bastoche/95f4b3c9117b6ba2e15917ba00b8f0b2 to your computer and use it in GitHub Desktop.
Save bastoche/95f4b3c9117b6ba2e15917ba00b8f0b2 to your computer and use it in GitHub Desktop.
from math import *
from upemtk import *
from time import sleep,time
taille = 600
r = taille // 2
x,y = (taille//2,taille//2)
dico ={}
pas = 0.01
decimale = len(str(pas))-2
modulo = 855
multi = 2
c1,c2,c3,c4 = ("darkblue","black","red","blue")
teta = pi/2
figure = 100
"""
le programme est la représentation graphique des table de multiplication d'ou multiplication et table de multiplication
si tu mets le pas = 1, tu dois mettre décimale 0 et modifier le sleep tout en bas en mettant 0.1
#taille de la fenetre je te conseille de mettre 800 et 1000 si ton écran est grand
# r pour rayon
# pas pour la fluidité de l'image<,tu peux mettre 0,001 peut etre que ça vas marcher
# modulo le nombre de traits plus tu augmente la taille de fênetre , plus tu augmente le modulo
#multi représente la table de multiplication
# c .... si tu veux modifie les couleur
#figure : le progamme s'arrete a la figure qui représente sa table, plus tu augmente et plus l'animation dura longtemps
et plus l'animation sera stylé
"""
def points(nombre,teta1 = pi/2,teta2 = pi/2):
i = cos (teta1 + (nombre/modulo*pi*2)) * r
j = sin (teta2 + (nombre/modulo*pi*2)) * r
return (x+i,y-j)
"""
for M in range(modulo):
chaine = str(M)
dico[chaine] = points(M) #je l'ai sauvegarde dans un dictionnaire, pour pas faire les calcules 2 foix
#cercle(x+i, y-j, 1,'red','red')
return None
"""
def remplis(Range):
var = Range
for M in range(modulo):
n = round(M % modulo,decimale)
chaine = str(n)
if not(chaine in dico) :
dico[chaine] = points(n,teta)
#cercle(x+i, y-j, 1,'red','red')
var += Range
return None
def programme(multi,modulo):
for M in range(0,modulo,2):
n = round((M * multi) % modulo,decimale)
x1,y1 = points(M)
x2,y2 = points(n)
ligne(x1, y1, x2, y2,c1)
for M in range(1,modulo,2):
n = round((M * multi) % modulo,decimale)
x1,y1 = points(M,teta)
x2,y2 = points(n,teta)
ligne(x1, y1, x2, y2,c1)
return None
def animation(figure,multi,modulo):
while multi <= figure:
efface_tout()
#partie graphique
rectangle(0,0,taille,taille,remplissage="white")
cercle(x, y, r, couleur='black', remplissage='', epaisseur=1, tag='')
texte(taille-110, 30, "table de :",c2,"nw","Purisa",10)
texte(taille-50, 30, str(round(multi,decimale)),c3,"nw","Purisa",10)
texte(taille-90, 65, "modulo :",c2,"nw","purisa",10)
texte(taille-40, 65, str(modulo),c3,"nw","purisa",10)
#le programme
programme(multi,modulo)
multi += pas
#modulo += 1
round(multi,decimale)
mise_a_jour()
sleep(pas)
return None
cree_fenetre(taille,taille)
def poly(modulo,teta,c):
for M in range(modulo):
x1,y1 = points(M,teta)
x2,y2 = points( (M+1) % modulo,teta)
ligne(x1, y1, x2, y2,c,2)
return None
def rotation_poly(teta):
while True:
efface_tout()
rectangle(0,0,taille,taille,remplissage="white")
cercle(x, y, r, couleur='black', remplissage='', epaisseur=1, tag='')
poly(modulo,teta,c1)
poly(modulo,-teta,c2)
poly(modulo,-teta * 2,c3)
poly(modulo,teta * 2,"darkviolet")
mise_a_jour()
teta += 0.01
sleep(0)
animation(figure,multi,modulo)
attente_clic()
@bastoche
Copy link
Author

@bastoche
Copy link
Author

https://gist.github.com/bastoche/95f4b3c9117b6ba2e15917ba00b8f0b2#file-ninja-py-L35
tu devrais utiliser un outil comme pycodestyle pour améliorer la lisibilité de ton code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment