Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 cool .

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   big_smile

Hors ligne

#8 Le 29/11/2022, à 19:49

Compte supprimé

Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)

chris7522 a écrit :

merci a tous les deux   big_smile

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 smile

Hors ligne

#10 Le 30/11/2022, à 08:39

Compte supprimé

Re : [Resolu] deplacement de mon vaisseau dans petit jeux pgame ( python)

wink
Je t'invite lors de tes ablutions, de réciter dans tes linaties le zen de python(import this):

python zen a écrit :

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 big_smile

Dernière modification par Compte supprimé (Le 30/11/2022, à 10:49)