Page 1 sur 2

Displaytranslucidesprite

Publié : ven. 20/août/2004 15:22
par garzul
:D 8O 8O Rahhhh je met sa dans mon code mais apparemment sa me ralentie ma ligne qui tourne je voudrais savoir i quelq'un a un moyen d'y remedier si oui comment ? J'ai oublier le code ^^ tenez ?

Code : Tout sélectionner


;Procedure du dessin
  Procedure Ligne(x.f,y.f,anx.f,any.f)


    Protected x1.f,y2.f,s1.f,d1.f

      Coord\x = x1  + x * Sin(any)
      Coord\y = y2  - x * Cos(any)
      
      ; * Cos(anx)
  EndProcedure


;initialisation des cmposant
    If InitSprite() = 0 Or InitKeyboard() = 0
      End
    EndIf
;création screen
OpenScreen(1024,768,32,"Démos")


AngleX.f = 0
AngleY.f = 0
AngleZ.f = 0

  FontID = LoadFont(0, "tahoma", 8, #PB_Font_HighQuality)

SetFrameRate(60) 

;Création des fichier . pak
;- .PAK
CreatePack("Demos.pak")
AddPackFile("Texte1.bmp",9) 
ClosePack()
OpenPack("Demos.pak")
CatchSprite(1,NextPackFile())
ClosePack()


;Texte
Procedure Texte()
DisplayTranslucideSprite(1, 250, 250, 255)
intense + 1
If intense = 255
inse - 1
EndIf
EndProcedure

;BOUCLE
Repeat

  ClearScreen(0, 0, 0);A enlever sa fait un jolie effet :)

  AngleX + 0.01
  AngleY + 0.09
  AngleZ + 0.09
  
  StartDrawing(ScreenOutput())
    DrawingFont(FontID)
      
      ;Tracer de la ligne 1
      Ligne(200,0,angleX,AngleY)
        Line(250,250,coord\x,coord\y,RGB($F7,$EF,$08))
        
          ;Plot( 250 + coord\x,250 + coord\y,RGB($1B,$3E,$E4)) ;Normalement le point qui devrait faire un cercle
          ;tracer de la ligne 2
         Ligne(0,200,angleX,AngleY)
        Line(250,250,coord\x,coord\y,RGB($28,$18,$D7))       
 
  StopDrawing()

texte()
  FlipBuffers()

  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
Pour que sa marche créé une image .

Publié : ven. 20/août/2004 16:17
par Backup

Code : Tout sélectionner

 Coord\x = x1  + x * Sin(any)
      Coord\y = y2  - x * Cos(any) 


ALERTE !!!
this variable doesn't have a 'structure'

met ton code en entier ça ira mieu pour t'aider !! :? :)

Publié : ven. 20/août/2004 16:20
par garzul
:D DSL dobrro Tien regarde j'ai fait sa mais ya toujour un probléme au niveau de la ligne qui tourne .

Code : Tout sélectionner

;Coder par garzul le 20 aout a 4 heure 31
;Variable de la démos 
jeuxtime = 300
affichagetexte1 = 0
affichagetexte2 = 1
affichagescene1 = 1
;Structure
Structure Ligne
  x.f
  y.f
EndStructure

 Global coord.Ligne,intense,affichagetexte2,affichagetexte1


;Procedure du dessin
  Procedure Ligne(x.f,y.f,anx.f,any.f)


    Protected x1.f,y2.f,s1.f,d1.f

      Coord\x = x1  + x * Sin(any)
      Coord\y = y2  - x * Cos(any)
      
      ; * Cos(anx)
  EndProcedure


;initialisation des cmposant
    If InitSprite() = 0 Or InitKeyboard() = 0
      End
    EndIf
;création screen
OpenScreen(1024,768,32,"Démos")


AngleX.f = 0
AngleY.f = 0
AngleZ.f = 0

  FontID = LoadFont(0, "tahoma", 8, #PB_Font_HighQuality)

SetFrameRate(60) 

;Création des fichier . pak
;- .PAK
CreatePack("Demos.pak")
AddPackFile("Texte1.bmp",9) 
AddPackFile("Texte2.bmp",9) 
ClosePack()
OpenPack("Demos.pak")
CatchSprite(1,NextPackFile())
CatchSprite(2,NextPackFile())
ClosePack()


;Texte

Procedure Texte()
If affichagetexte1 = 0
affich1 = DisplayTranslucideSprite(1,360 , 360, intense)
EndIf
  If affichagetexte2 = 0
    affich = DisplayTranslucideSprite(2,360 , 360, intense)
  EndIf
EndProcedure


;BOUCLE
intense = 0
Repeat

  ClearScreen(0, 0, 0);A enlever sa fait un jolie effet :)
  
  ;Effet de l'intensite 
 
intense + 20
 
  If intense = 260
  EndIf

;Effet de disparition et d'affichage des texte
jeuxtime = jeuxtime - 10

  If jeuxtime < 0 
    intense - 40
    affichagetexte2 = 0
    affichagetexte1 = 1
  EndIf

  If affichagetexte2 = 0 And intense = 0
    affichagetexte2 = 1
    affichagetexte1 = 1
  EndIf

; fin de l'effet
  ;   passage a la scene 1
If affichagetexte2 = 1 And affichagetexte1 = 1
affichagescene1 = 0
EndIf

    AngleX + 0.01
    AngleY + 0.09
    AngleZ + 0.09
  
  
  If affichagescene1 = 0
  StartDrawing(ScreenOutput())
    DrawingFont(FontID)
      
      ;Tracer de la ligne 1
      Ligne(200,0,angleX,AngleY)
        Line(250,250,coord\x,coord\y,RGB($F7,$EF,$08))
        
          ;Plot( 250 + coord\x,250 + coord\y,RGB($1B,$3E,$E4)) ;Normalement le point qui devrait faire un cercle
          ;tracer de la ligne 2
         Ligne(0,200,angleX,AngleY)
        Line(250,250,coord\x,coord\y,RGB($28,$18,$D7))       
 
  StopDrawing()
  EndIf 

texte()
  FlipBuffers()

  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)

Publié : ven. 20/août/2004 17:58
par Backup
je peut pas t'aider je sais pas ce que tu fait avec ça

Code : Tout sélectionner

; CreatePack("Demos.pak")
; AddPackFile("Texte1.bmp",9)
; AddPackFile("Texte2.bmp",9)
; ClosePack()
; OpenPack("Demos.pak")
; CatchSprite(1,NextPackFile())
; CatchSprite(2,NextPackFile())
; ClosePack()
si j'active ça j'ai une erreur ligne 52 !!

Publié : ven. 20/août/2004 18:26
par garzul
:D C'est normal dobro tien je t'ai mis la source et les deux image tu les decompresse et zous tu me degage la poussiere qui fait planter lol :D non tien je t'ai mis la source et les deux image c'est pour sa que sa plantais :) http://consolpcgame.ifrance.com/consolp ... bro%20.rar

Publié : ven. 20/août/2004 18:45
par Backup
bon ok !!

et tu veux quoi exactement ? :)

Publié : ven. 20/août/2004 18:48
par garzul
:D Bah que la ligne ne rame plus quelle sit aussi fluide qu'avant (je suis pas chiant non :D ) héhé

Publié : ven. 20/août/2004 19:07
par garzul
:D Mechant dobro tien prend sa lol Image et sa Image oula je vais me faire engueuler Image Lol je rigole n'empeche c'est marrant ce site ou ya plein de smyley ACCLAMEZ MOI Image LOL :D si vous en voulez d'autre allez sur ce site http://membres.lycos.fr/bluesmilies/ Bon alors pour mon code c'est simple je ne veut plus que sa rame au niveau de la ligne tout en laissant le displaytranslucidesprite mais a mon avis c'est impossible en tout cas si vous avez une idéés aidez moi ^^ Image @++ Image :D

Publié : ven. 20/août/2004 19:11
par Backup
il semblerai qu'il exiqte un bug avec la fonction

Code : Tout sélectionner

StartSpecialFX() 
        affich = DisplayTranslucideSprite(2,360 , 360, intense) 
        StopSpecialFX() 

qui ne serai pas du a toi mais a Purebasic !!

en principe StartSpecialFX() est sensé accelerer l'affichage de
DisplayTranslucideSprite

or ça fige tout !!! tres curieux !! 8O

dans le code de garzul
il affiche une ligne niquel tant que l'on utilise pas DisplayTranslucideSprite
si l'on utilise DisplayTranslucideSprite
l'affichage d'une simple ligne ralentit mortel !!

je pense a un gros bug du pure !!
j'aimerai bien avoir l'avis des pros la dessus !! 8O

Publié : ven. 20/août/2004 19:18
par Backup
Garzul essai avec les sprite 3D :D


l'equivalent de DisplayTranslucideSprite(#Sprite, x, y, Intensité)


c'est DisplaySprite3D(#Sprite3D, x, y, Transparence)

Publié : ven. 20/août/2004 19:23
par garzul
:D Dobro je sais j'ai essayer en c++ et sa fait pareil ? Bizare et comment je peux faire pour le mettre en sprite 3d ?

Publié : ven. 20/août/2004 19:25
par garzul
:D excuse dobro l'ecran avait effacer un peu ton message mais bon regarde en c++ sa fait pareil bizarre j'ai essayer de creer une image qui rebondi en c++ avec de la transarence et sa fait pareil sa doit etres soit l'opengl mais c'est pas pure basic ? :?

Publié : ven. 20/août/2004 19:33
par Backup
tien j'ai passé ton code en version sprite 3D

Code : Tout sélectionner

;Coder par garzul le 20 aout a 4 heure 31 
;Variable de la démos 
jeuxtime = 300 
affichagetexte1 = 0 
affichagetexte2 = 1 
affichagescene1 = 1 
;Structure 
Structure Ligne 
  x.f 
  y.f 
EndStructure 

 Global coord.Ligne,intense,affichagetexte2,affichagetexte1 


;Procedure du dessin 
  Procedure Ligne(x.f,y.f,anx.f,any.f) 


    Protected x1.f,y2.f,s1.f,d1.f 
    
    coord\x = x1  + x * Sin(any*2*3.1415926/50) 
    coord\y = y2  - x * Cos(any*2*3.1415926/50)
    
    
    ; par Dobro
; effet lazer
;     coord\x = x1  + x * Sin(any*2*3.1415926/50) 
;     coord\y = y2  - x * Cos(any) 
; effet roue qui tourne
;     coord\x = x1  + x * Sin(any*2*3.1415926/3.12) 
;     coord\y = y2  - x * Cos(any*2*3.1415926/3.12) 
      
      ; * Cos(anx) 
  EndProcedure 


;initialisation des cmposant 
If InitSprite() = 0 Or InitKeyboard() = 0  Or InitSprite3D() =0
    
      End 
    EndIf 
;création screen 
OpenScreen(1024,768,32,"Démos") 


AngleX.f = 0 
AngleY.f = 0 
AngleZ.f = 0 

  FontID = LoadFont(0, "tahoma", 8, #PB_Font_HighQuality) 

SetFrameRate(60) 

;Création des fichier . pak 
; ;- .PAK 
; CreatePack("Demos.pak") 
; AddPackFile("Texte1.bmp",9) 
; AddPackFile("Texte2.bmp",9) 
; ClosePack() 
; OpenPack("Demos.pak") 
; CatchSprite(1,NextPackFile()) 
; CatchSprite(2,NextPackFile()) 
; ClosePack() 

LoadSprite(1, "Texte1.bmp" ) 
LoadSprite(2, "Texte2.bmp" ) 

Resultat = LoadSprite(1, "Texte1.bmp" , #PB_Sprite_Texture) 
Resultat = LoadSprite(2, "Texte2.bmp" ,#PB_Sprite_Texture) 
Resultat = CreateSprite3D(1, 1)
Resultat = CreateSprite3D(2, 2)
;Texte 

Procedure Texte() 
    If affichagetexte1 = 0   
        Resultat = Start3D() 
        DisplaySprite3D(1, 360, 360, intense)
        Stop3D() 
    EndIf 
    If affichagetexte2 = 0   
        Resultat = Start3D() 
        DisplaySprite3D(2, 360, 360, intense) 
        Stop3D() 
    EndIf 
EndProcedure 


;BOUCLE 
intense = 0 
Repeat 

  ClearScreen(0, 0, 0);A enlever sa fait un jolie effet :) 
  
  ;Effet de l'intensite 
  
intense + 20 
  
  If intense = 260 
  EndIf 

;Effet de disparition et d'affichage des texte 
jeuxtime = jeuxtime - 10 

  If jeuxtime < 0 
    intense - 40 
    affichagetexte2 = 0 
    affichagetexte1 = 1 
  EndIf 

  If affichagetexte2 = 0 And intense = 0 
    affichagetexte2 = 1 
    affichagetexte1 = 1 
  EndIf 

; fin de l'effet 
  ;   passage a la scene 1 
If affichagetexte2 = 1 And affichagetexte1 = 1 
affichagescene1 = 0 
EndIf 

    AngleX + 1
    AngleY + 1
    AngleZ + 1 
    
;     AngleX + 10
;     AngleY + 10
;     AngleZ + 2 
    
    
  If affichagescene1 = 0 
  StartDrawing(ScreenOutput()) 
    DrawingFont(FontID) 
      
      ;Tracer de la ligne 1 
      Ligne(200,0,AngleX,AngleY) 
        Line(250,250,coord\x,coord\y,RGB($F7,$EF,$08)) 
        
          ;Plot( 250 + coord\x,250 + coord\y,RGB($1B,$3E,$E4)) ;Normalement le point qui devrait faire un cercle 
          ;tracer de la ligne 2 
         Ligne(0,200,AngleX,AngleY) 
        Line(250,250,coord\x,coord\y,RGB($28,$18,$D7))        
  
  StopDrawing() 
  EndIf 

  Texte() 

  FlipBuffers() 

  ExamineKeyboard() 
Until KeyboardPushed(#PB_Key_Escape)

Publié : ven. 20/août/2004 19:38
par Chris
Sinon, tu peux simplement essayer de modifier le code au niveau du chargement du sprite.

Code : Tout sélectionner

OpenPack("Demos.pak") 
CatchSprite(1,NextPackFile(),#PB_Sprite_Memory) 
CatchSprite(2,NextPackFile(), #PB_Sprite_Memory) 
ClosePack()
Tu ajoutes #PB_Sprite_Memory pour charger les sprites en mémoire PC au lieu de la mémoire vidéo. Chez moi, ça fonctionne.

Publié : ven. 20/août/2004 19:40
par Backup
aaarrrg !! j'y ai pas pensé !!
je test !! :)





..... ouaaaa ça marche Garzul !!

ecoute le grand maitre Chris :D