Profondeur d'un sprite ("axe Z") + Playfield/Layer

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Ta liste n'est ni globale ni shared, donc invisible depuis l'intérieur de ta procédure.
Tu peux aussi utiliser foreach pour parcourir la liste, sans avoir besoin de resetlist :)
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Message par Atomo »

Ta procédure ne peut pas accéder à tes listes car elles n'ont pas été déclarées en global.

edit : grilled by djes. :lol:
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Message par TazNormand »

Je pense qu'il serait bon de corriger le tuto sur les listes chainées de Crystal Noir
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

corrigé ! :)
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Message par PAPIPP »

Bonjour à tous
Dans une procédure les listes chainées strars() et stars2 ne sont pas connues
il faut soit les placer en Global soit en paramètre de la proc.
on peut même changer leur nom dans la procédure
Exemple en gardant le même nom

Code : Tout sélectionner

;Tutorial Listes Chaînées

;Initialisation des composants

InitSprite()

InitKeyboard()

InitMouse()

InitSound()

Structure Etoile
  
  posx.f
  
  posy.f
  
  vitesse.f
  
EndStructure

NewList Stars.Etoile()

NewList Stars2.Etoile()

;Constantes

#Star = 1

#Star2 = 2



;Création de la fenêtre principale

SetRefreshRate(60)

MaFenetre = OpenScreen(800, 600, 32, "Test")

If MaFenetre = 0
  
  MessageRequester("Erreur", "Impossible d'ouvrir une fenêtre DirectX", #PB_MessageRequester_Ok)
  
EndIf

Procedure DisplayEtoile(List stars.etoile(), List stars2.etoile())
  
  ResetList(Stars())
  
  While NextElement(Stars())
    
    If Stars()\posy>600
      
      Stars()\posy = -5
      
    EndIf
    
    DisplayTransparentSprite(#Star, Stars()\posx, Stars()\posy)
    
    Stars()\posy + Stars()\vitesse
    
  Wend
  
  ResetList(Stars2())
  
  While NextElement(Stars2())
    
    If Stars2()\posy>600
      
      Stars2()\posy = -5
      
    EndIf
    
    DisplayTransparentSprite(#Star2, Stars2()\posx, Stars2()\posy)
    
    Stars2()\posy + Stars2()\vitesse
    
  Wend
  
EndProcedure

;Chargement des sprites

CreateSprite(#star, 1, 1)

StartDrawing(SpriteOutput(#star))
  
  Plot(0, 0, RGB(255, 255, 255))
  
StopDrawing()

CreateSprite(#star2, 1, 1)

StartDrawing(SpriteOutput(#star2))
  
  Plot(0, 0, RGB(120, 120, 120))
  
StopDrawing()

For i = 1 To 150
  
  AddElement(Stars())
  
  AddElement(Stars2())
  
  Stars()\posx = Random(800)
  
  Stars()\posy = Random(600)
  
  Stars()\vitesse = 2
  
  Stars2()\posx = Random(800)
  
  Stars2()\posy = Random(600)
  
  Stars2()\vitesse = 1
  
Next

Repeat
  
  ClearScreen(RGB(0, 0, 0))
  
  DisplayEtoile(stars(),stars2())
  
  ExamineKeyboard()
  
  FlipBuffers()
  
Until KeyboardPushed(#PB_Key_Escape)

End

A+
Répondre