Je fais un jeu de serpent en python avec pygame et pour déplacer le personnage j'ai un nombre entier qui est le degré de l'angle qu'il doit déplacer. Y a-t-il un moyen d'obtenir le changement de x et y pour le déplacer en fonction des degrés? Par exemple: func(90) # [0, 5]
ou func(0) # [5, 0]
python convertir des degrés pour changer en x et changer en y
Répondre
import math
speed = 5
angle = math.radians(90) # Remember to convert to radians!
change = [speed * math.cos(angle), speed * math.sin(angle)]
Le sinus et le cosinus de l'angle, multiplié par la quantité totale du mouvement, vous donneront les changements X et Y.
import math
def func(degrees, magnitude):
return magnitude * math.cos(math.radians(degrees)), magnitude * math.sin(math.radians(degrees))
>>> func(90,5)
(3.0616169978683831e-16, 5.0)
>>> func(0,5)
(5.0, 0.0)
Byers, je ne connaissais pas math.radians, merci pour votre exemple! J'ai changé le mien pour correspondre. –
Si le serpent ne peut se déplacer sous certains angles (par exemple 90 ou 45 degrés), ce qui est typique dans un tel jeu, il n'y a que 4 ou 8 directions, vous pouvez aller. Vous pouvez simplement diviser votre angle par l'incrément autorisé et obtenir un index de direction, qui peut ensuite être utilisé pour indexer dans un tableau de décalages X/Y. Ce sera beaucoup plus rapide que l'utilisation de la trigonométrie.
x, y = 100, 100 # starting position of the snake
direction = angle/90 % 4 # convert angle to direction
directions = [(0,-1), (1, 0), (0, 1), (-1, 0)] # up, right, down, left
# convert the direction to x and y offsets for the next move
xoffset, yoffset = directions[direction]
# calculate the next move
x, y = x + xoffset, y + yoffset
Mieux encore, passer du concept d'angle entièrement et il suffit d'utiliser une variable de direction. Ensuite, la rotation du serpent est une simple question d'incrémentation ou de décrémentation de la direction.
# rotate counter-clockwise
direction = (direction - 1) % 4
# rotate clockwise
direction = (direction + 1) % 4
Cela peut facilement être étendue à 8 directions (se déplaçant à incréments de 45 degrés), si désiré.
- 1. Comment changer '\ x ??' à unicode en python?
- 2. Convertir l'azimut en degrés
- 3. python, changer les fonctions en classes et en objets
- 4. comment changer les valeurs d'axe en python?
- 5. programme C pour convertir les degrés Fahrenheit en degrés Celsius
- 6. Changer les éléments d'un CvSeq en python
- 7. Convertir kilo-octets en degrés
- 8. Saisie de degrés précis en python
- 9. Comment changer "namedtuples" en classes en python?
- 10. Convertir des degrés décimaux ou des degrés de secondes en mètres en Java
- 11. Changer les fonds d'écran en python
- 12. javascript: convertir a = 'x1y2' en x = 1 et y = 2?
- 13. changer la superclasse de l'objet en Python
- 14. Convertir radians en degrés comme Google
- 15. comment changer [1,2,3,4] pour '1234' en utilisant python
- 16. convertir les vecteurs x et y en meshgrid
- 17. Python IDLE: Changer Python Version
- 18. Utiliser string.gsub pour changer x en y le plus efficacement (Lua)
- 19. Flash: changer x, y = 0,0 en haut à droite, au lieu de en haut à gauche
- 20. Changer de répertoire avec os.walk en python
- 21. CoreMotion convertir Iphone Pitch: raidians en degrés
- 22. mod_rewrite changer .htaccess pour convertir php en html
- 23. En python 2.7 quelle est la différence entre "x! = Y" et "not x == y"?
- 24. Changer User Agent en Python 3 pour urrlib.request.urlopen
- 25. Changer principal nom du package en python
- 26. changer le nom d'importation en python
- 27. Accéléromètre Phonegap valeur y à des degrés
- 28. Python -c changer
- 29. Comment changer les formats d'heure en python?
- 30. Imprimer en degrés et en degrés de chaque sommet
Court sur l'explication mais long sur l'exemple. –