Nombres décimaux sur python
Résolu
alex
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, je voudrais savoir pourquoi ma version python(ou mon logiciel de programmation) ne prend pas en compte les nombres décimales. Je vous explique:
je voudrais programmer un jeux en python ou un personnage peut se déplacer de 1.5 pixel à chaque fois que j'appuis sur une touche. le problème, c'est que le calcul arrondis la vitesse à 1 ce qui pause problème pour mon jeu. Voici le code que j'ai utilisé:
sur mon script principal, je met un print de rect.x et le calcul met au cordonées 1 au lieu de 1.5
je voudrais don comment résoudre ce problème merci.
je voudrais programmer un jeux en python ou un personnage peut se déplacer de 1.5 pixel à chaque fois que j'appuis sur une touche. le problème, c'est que le calcul arrondis la vitesse à 1 ce qui pause problème pour mon jeu. Voici le code que j'ai utilisé:
import pygame
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.speed = 1.5
self.skin = pygame.image.load('player/player_right.png')
self.rect = self.skin.get_rect()
self.rect.x = 100
self.rect.y = 670
def move_left(self):
self.rect.x -= self.speed
self.skin = pygame.image.load('player/player_left.png')
def move_right(self):
self.rect.x += self.speed
self.skin = pygame.image.load('player/player_right.png')
sur mon script principal, je met un print de rect.x et le calcul met au cordonées 1 au lieu de 1.5
je voudrais don comment résoudre ce problème merci.
A voir également:
- Nombres décimaux sur python
- Citizen code python avis - Accueil - Outils
- Code binaire des nombres - Guide
- Nombres faciles - Télécharger - Outils professionnels
- Citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). - Forum Excel
- Mot secret python pix ✓ - Forum Python
4 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
il me semble probable que l'attribut rect.x soit un entier.
je pense alors que tu dois mémoriser et calculer la position en float, et l'assigner à x.
il me semble probable que l'attribut rect.x soit un entier.
je pense alors que tu dois mémoriser et calculer la position en float, et l'assigner à x.
Bonjour,
C'est probablement lié au type de la variable.
Si tu mets x=100, c'est un integer mais avec x=100.0 x est un float. Initialise toutes tes variables en float.
C'est probablement lié au type de la variable.
Si tu mets x=100, c'est un integer mais avec x=100.0 x est un float. Initialise toutes tes variables en float.
Bonsoir
Une chance sur deux que mon message soit utile.
Ne codant pas en mode fenêtré en Python, je ne sais pas s’il est possible ou non de donner des coordonnées décimales à un(e?) sprite.
Mais littéralement
Le pixel est la surface unitaire d’un écran, il n’est pas divisible.
Si les coordonnées du sprite sont effectivement en pixels, ça va forcément caster le résultat en valeur entière.
Si les coordonnées du sprite sont dans un autre système, qui accepte des valeurs décimales, alors j’ai posté ce message pour rien.
Une chance sur deux que mon message soit utile.
Ne codant pas en mode fenêtré en Python, je ne sais pas s’il est possible ou non de donner des coordonnées décimales à un(e?) sprite.
Mais littéralement
se déplacer de 1.5 pixelest impossible.
Le pixel est la surface unitaire d’un écran, il n’est pas divisible.
Si les coordonnées du sprite sont effectivement en pixels, ça va forcément caster le résultat en valeur entière.
Si les coordonnées du sprite sont dans un autre système, qui accepte des valeurs décimales, alors j’ai posté ce message pour rien.
def __init__(self): # ... self.posx = self.rect.x def move_left(self): self.posx -= self.speed self.rect.x = self.posx