#1 Le 28/11/2022, à 17:29
- chris7522
[Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)
Bonjour a toutes et a tous,
Je souhaiterai que mon vaisseau se dirige d'une certaine facon , mais je m'y prend comme un manche !
Dans le code suivant , il arrive a l'ecran au coordonnées x = 500 et y = 1800 , il avance droit devant jusqu'a x = 1100 , ensuite j'aimerai qu'il reste a la meme position en x , mais qu'il monte pendant 3 secondes puis qu'il redescende pendant 3 autres secondes etc ...
Voici mon code :
class enemyspaceship:
def __init__(self):
self.image = pygame.image.load('data/ennemi.png')
self.image = pygame.transform.scale(self.image, (100, 100))
self.rect = self.image.get_rect()
self.rect.x = 1800
self.rect.y = 500
self.health = 10
self.hitbox = (self.rect.x, self.rect.y, self.image.get_width(),self.image.get_height()) # largeur et hauteur du futur vaisseau
self.vel = 1.5
self.health = 30
self.lasercount = 0
self.loop = 0
def draw(self, win):
self.hitbox = (self.rect.x, self.rect.y, self.image.get_width(), self.image.get_height())
win.blit(self.image, (self.rect.x, self.rect.y))
self.drawHealthBar(win)
self.move()
self.fire()
def move(self):
if self.hitbox[0] > 1100:
self.rect.x -= self.vel
if self.hitbox[0] == 1100:
if self.loop == 0:
self.rect.y -= 5
if self.loop == 3000:
self.rect.y += 5
if self.loop == 6000:
self.loop = 1
else:
self.loop += 1
if self.loop > 6000:
self.loop = 0
Merci de votre aide !
Dernière modification par chris7522 (Le 29/11/2022, à 22:03)
Hors ligne
#2 Le 29/11/2022, à 08:14
- Compte supprimé
Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)
Bonjour,
Dans le code suivant , il arrive a l'ecran au coordonnées x = 500 et y = 1800
Ah bon? Tu évoques surement un autre code, car celui présenté n'instancie même pas la classe..., comment pourrait-il faire ce que tu dis?
(d'ailleurs même instanciée, il n'y a rien à voir.)
Sans code testable, tu risques de ne pas avoir l'aide sollicitée...
À ce propos, as-tu donné suite à la proposition de @kholo de t'aider avec ton jeu?
C'était(ou c'est) un bon plan . Très généreux de sa part .
Sinon, pour qui est de ta demande elle se schématiserait par:
if x == 1100:
#fait ceci , fait cela
après faut voir, comment organiser le code selon la façon de faire de pygame ... (pour ma part, n'utilisant pas pygame et ne disposant pas d'un code testable, je ne m'y investirai pas)
#3 Le 29/11/2022, à 08:58
- chris7522
Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)
Bonjour ,
Je peux poster le code dans son entièrté mais je vais avoir du mal avec le dossier data qui contient les fichier son et png , je ne sais pas comment m'y prendre ...:(.
Sinon pour la petite portion de code , j'ai pensé a faire ca , mais ca ne fonctionne pas non plus :
def move(self):
if self.hitbox[0] > 1100:
self.rect.x -= self.vel
if self.hitbox[0] == 1100:
dir = ['up', 'down']
cote = random.choice(dir)
if cote == 'up':
if self.rect.y > self.image.get_height():
self.rect.y -+ 3
else:
if self.rect.y < 1000 - self.image.get_height():
self.rect.y += 3
Hors ligne
#4 Le 29/11/2022, à 11:14
- Compte supprimé
Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)
Il ne s'agit pas de poster ton code en entier, mais de présenter un code minimal reproductible mettant en oeuvre ton souci.
lien (pris au hasard) : https://babeuloula.fr/blog/comment-cree … tible.html
Dans tous les forums sur la programmation, il te sera demandé de procéder ainsi. D'ailleurs ça permet souvent de résoudre par soi-même sa problématique. Une fois le code dépouillé de toutes les lignes inutiles, il devient beaucoup plus facile de comprendre ce qui se passe.
Ceci étant dit:
Tu as une erreur de syntaxe avec self.rect.y -+ 3, mais ça ton python a dû te le dire...
Et si en modifiant self.rect.y ton image ne bouge pas , c'est qu' il n'a pas été transmis comme argument à la méthode blit() (qui n'est probablement pas appelée)
Dernière modification par Compte supprimé (Le 29/11/2022, à 11:16)
#5 Le 29/11/2022, à 16:15
- chris7522
Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)
Bonjour ,
Merci d'avoir pris le temps de me répondre et de m' apprendre la facon de faire pour obtenir une réponse sur un forum .
Apres avoir réduis mon code au minimum , je souhaiterai que :
- mon rectangle parte du point ( x , y = 500, 1800 ) et avance de droite a gauche jusqu'a x = 1100
- ensuite tout en restant au meme point x , qu'il alterne la montée et la descente en y .
Voici mon code :
import pygame
import random
pygame.init()
clock = pygame.time.Clock()
class Enemyspaceship:
def __init__(self):
self.x = 1800
self.y = 500
self.vel = 4
def draw(self, win):
pygame.draw.rect(win, red, (self.x, self.y, 100, 40))
self.move()
def move(self):
if self.x > 1100:
self.x -= self.vel
if self.x == 1100:
dir = ['up', 'down']
cote = random.choice(dir)
if cote == 'up':
if self.y > 0:
self.y -= 10
else:
if self.y < 1000 - 40:
self.y += 10
screen_w = 1800
screen_h = 1000
win = pygame.display.set_mode((screen_w, screen_h))
win.fill((0, 0, 0))
red = 255, 0, 0
enemy = Enemyspaceship()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
win.fill((0, 102, 178))
enemy.draw(win)
pygame.display.update()
clock.tick(60)
Merci de votre aide
Hors ligne
#6 Le 29/11/2022, à 18:19
- Compte supprimé
Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)
Là procédant ainsi toutes les 60 ms, tu laisses random choisir au hasard 'up' ou 'down' ce qui rend le mouvement anarchique.
synopsie: le vaisseau part de gauche à droite, lorsqu'il arrive à un point particulier, il monte jusqu'à un certain point puis redescend jusqu'à un autre point et recommence son tour.
Ce que je traduirais part:
import pygame
import random
pygame.init()
clock = pygame.time.Clock()
class Enemyspaceship:
def __init__(self):
self.x = 1800
self.y = 500
self.vel = 4
self.cote = 'up'
def draw(self, win):
pygame.draw.rect(win, red, (self.x, self.y, 100, 40))
self.move()
def move(self):
if self.x > 1100:
self.x -= self.vel
if self.x == 1100:
if self.cote == 'up':
if self.y > 0:
self.y -= 10
if self.y == 100:
self.cote= 'down'
else:
self.y += 10
if self.y == 900:
self.cote = 'up'
screen_w = 1800
screen_h = 1000
win = pygame.display.set_mode((screen_w, screen_h))
win.fill((0, 0, 0))
red = 255, 0, 0
édit: orthographe
Dernière modification par Compte supprimé (Le 29/11/2022, à 19:45)
#7 Le 29/11/2022, à 19:39
- chris7522
Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)
C'est exactement ce que je recherchais , du sur mesure !
Une fois de plus , merci a tous les deux
Hors ligne
#8 Le 29/11/2022, à 19:49
- Compte supprimé
Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)
merci a tous les deux
Yapadequoi... Tu me vois en double? ^^
Bonne suite
#9 Le 29/11/2022, à 21:35
- chris7522
Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)
Non , j'ai hésité a remercier le corps physique ou l'esprit du développeur python , car les deux sont a distinguer selon le dualisme , alors j'ai remercié les deux
Hors ligne
#10 Le 30/11/2022, à 08:39
- Compte supprimé
Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)
Je t'invite lors de tes ablutions, de réciter dans tes linaties le zen de python(import this):
Préfère :
la beauté à la laideur,
l'explicite à l'implicite,
le simple au complexe
et le complexe au compliqué,
le déroulé à l'imbriqué,
l'aéré au compact.
Prends en compte la lisibilité.
Les cas particuliers ne le sont jamais assez pour violer les règles.
Mais, à la pureté, privilégie l'aspect pratique.
Ne passe pas les erreurs sous silence,
... ou bâillonne-les explicitement.
Face à l'ambiguïté, à deviner ne te laisse pas aller.
Sache qu'il ne devrait [y] avoir qu'une et une seule façon de procéder,
même si, de prime abord, elle n'est pas évidente, à moins d'être Néerlandais.
Mieux vaut maintenant que jamais.
Cependant jamais est souvent mieux qu'immédiatement.
Si l'implémentation s'explique difficilement, c'est une mauvaise idée.
Si l'implémentation s'explique aisément, c'est peut-être une bonne idée.
Les espaces de nommage ! Sacrée bonne idée ! Faisons plus de trucs comme ça.
#11 Le 30/11/2022, à 10:22
- chris7522
Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)
Tu penses que si je met tout ça en application, je peux accéder à l'illumination et me reincarner en python et peut être même devenir un bouddhas ?
Hors ligne
#12 Le 30/11/2022, à 10:48
- Compte supprimé
Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)
Tout dépend de ton encens
Dernière modification par Compte supprimé (Le 30/11/2022, à 10:49)