Mon drapeau Japonais

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

en tout cas chez moi ça c'est clean

Code : Tout sélectionner

; Dessin d'un drapeau Japonais Par Jbernard

;*** On inialise tout  ****
InitSprite()
InitKeyboard()

;definition du rayon du cercle
Rayon = 150
; Couleur du cercle et du cadre
Couleur = (RGB($FF,$0,$0))
;Creation de l'ecran
OpenScreen( 800,600,32," Drapeau Japonais")


;Boucle du programme

Repeat
    ExamineKeyboard()
   
    ;dessine le cercle rouge et du cadre du drapeau
    StartDrawing(ScreenOutput())
        Circle(390,290,Rayon,Couleur)
        DrawingMode(#PB_2DDrawing_Outlined  ) ; force que les dessins se fassent en mode non plein !!
        Box(5,5,790,591,Couleur) ; le box remplace tes lignes ()
    StopDrawing()
    
    FlipBuffers()
      ClearScreen(RGB(255,255,255))
   
Until KeyboardPushed(#PB_Key_Escape)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

En tous cas, je trouve que c'est une super idée cette histoire de drapeau :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

@DOBRO
Merci pour ton explication plus que détaillée.
Je ne sais pas pourquoi, j'avais dans l'idée que l'image restait tant que on la changeait pas, c'est idiot :oops:

@DJES
C'est vrai, c'est tout bete, mais c'est une bonne idée.
Souvent les plus simples sont les meilleurs :D
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

j'ai crée ces 2 drapeaux dans le but d'apprendre a dessiné en 2d avec pb
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

jbernard13 a écrit :j'ai crée ces 2 drapeaux dans le but d'apprendre a dessiné en 2d avec pb
Oui et tu as bien réussi. Le top serait une procédure qu'on appellerait en spécifiant le pays (par exemple drapeau("FR", 0, 0, 640, 480) ) et qui dessinerait le drapeau à la taille et à l'emplacement spécifié dans le contexte courant.
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

bonsoir
j'ai rajouter ceci ( merci à dobro)

Code : Tout sélectionner


** ScrollText , par Jbernard** 
#sprite_text=1 
; On iniallise tout 
InitSprite() 
InitKeyboard() 
; Creation de l'ecran 
largeur_ecran=GetSystemMetrics_(#SM_CXSCREEN):; largeur de l'ecran 
hauteur_ecran=GetSystemMetrics_(#SM_CYSCREEN) ; hauteur de l'ecran    
OpenScreen(largeur_ecran,hauteur_ecran,32,"Scrolltext") 
    

; on charge la police d'ecriture et on crée un sprite 
LoadFont(1,"impact", 50) 
CreateSprite(#sprite_text,250+largeur_ecran,60) 


; on dessine et affiche le texte 
text$="Le drapeau du  JAPON " 
StartDrawing(SpriteOutput(#sprite_text)) 
  DrawingMode(#PB_2DDrawing_Transparent) 
  DrawingFont(FontID(1)) 
  DrawText(0,0-14,text$,RGB($FF,$0,$0)) 
  Longueur_text = TextWidth(text$) 
StopDrawing() 

; Boucle du programme 

Repeat 
  
  ClearScreen(0) 
  ; animation du texte 
  x=x-3
  If x<0-Longueur_text 
    x=largeur_ecran 
  EndIf 
  y=hauteur_ecran -100
StartDrawing(ScreenOutput())
  Box(250,50,1000,700,RGB($FF,$FF,$FF))
  Circle(735,400,190,RGB($FF,$0,$0))
  StopDrawing()


   DisplaySprite(#sprite_text,x,y)    
  FlipBuffers() 
  ExamineKeyboard() 
  
Until KeyboardPushed(#PB_Key_Escape) 
Dernière modification par jbernard13 le ven. 23/janv./2009 23:32, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Et bien ton code JB ne clip pas cette fois !
Par contre THE JAPON.... :D
Ecris plutôt LE JAPON ou JAPAN mais pas THE JAPON :P :P :P
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

n'hésite pas a bien séparer ton code par étape comme dans l'exemple ci dessous , et de créer un sprite par élément affiché !!

c'est mieux d'utiliser des sprites pour afficher des objets qui bougent a l'écran
plutôt que de les faires bouger directement dans l'écran sans prédessin !!

la tu pré dessine tes objets , et tu n'a plus qu'a les faire afficher avec un simple displaysprite() :)


Code : Tout sélectionner


;
#sprite_text=1
#sprite_drapeau=2
; On iniallise tout
InitSprite()
InitKeyboard()
; Creation de l'ecran
largeur_ecran=GetSystemMetrics_(#SM_CXSCREEN):; largeur de l'ecran
hauteur_ecran=GetSystemMetrics_(#SM_CYSCREEN) ; hauteur de l'ecran   
OpenScreen(largeur_ecran,hauteur_ecran,32,"Scrolltext")
   

; on charge la police d'ecriture et on crée un sprite
LoadFont(1,"impact", 50)



; ********* on cree le sprite qui contient le drapeau ********************
CreateSprite(#sprite_drapeau,largeur_ecran,hauteur_ecran)
StartDrawing(SpriteOutput(#sprite_drapeau))
	Box(0,0,largeur_ecran,hauteur_ecran,RGB($FF,$FF,$FF)) ; notre fond de drapeau prend tout l'ecran
	Circle(largeur_ecran/2,hauteur_ecran/2,190,RGB($FF,$0,$0)) ; ici le cercle est dessiné au millieu de l'ecran
StopDrawing()  ;                                                                                grace a largeur_ecran/2 et hauteur_ecran/2
; *****************************************************************


; ******************** on cree le sprite qui contien le text ***************
CreateSprite(#sprite_text,largeur_ecran,60)
text$="Le drapeau du  JAPON "
StartDrawing(SpriteOutput(#sprite_text))
	DrawingMode(#PB_2DDrawing_Transparent)
	DrawingFont(FontID(1))
	DrawText(0,0-14,text$,RGB($FF,$0,$0))
	Longueur_text = TextWidth(text$)
StopDrawing()

; *********************************************************************


; **** apres ces créations préalable , on peut attaquer l'affichage proprement dit
; Boucle du programme

Repeat
	
	
	; ******* animation du texte *********
	x=x-3
	If x<0-Longueur_text
		x=largeur_ecran
	EndIf
	y=hauteur_ecran -100
	; ********************************
	
	DisplaySprite(#sprite_drapeau,0,0) ; on affiche d'abord le drapeau pour qu'il reste derriere   
	DisplayTransparentSprite(#sprite_text,x,y)   ; puis par dessus on affiche le text en transparent !!
	
	FlipBuffers()
	ClearScreen(0) ; perso je nettoie l'ecran toujour a la fin !!
	ExamineKeyboard()
	
Until KeyboardPushed(#PB_Key_Escape) 
 
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

merci dobro pour tes cours
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

merci dobro pour tes cours
Oui merci pour prendre le temps de bien commenter tes codes 8)

Ouaih DOBRO, il aurait fait un bon prof !!!! 8)
Il s'ennerve jamais, il est patient 8)

Sauf quand on luit dit qu'elle est bien SA DOBRO :oops:
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

juste une question

GetSystemMetrics , c'est un api? parceque j'ai rien dans la doc de pb sur cette commande
et #SM_CXSCREEN est ce que c'est une constante que tu as crée dobro ou bien c'est une constante api ...
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Quand il y a un un underscore derriere une fonction, y'a de fortes chances que ce soit une api :D

Alors ce que je fais, j'ai installé le logiciel "API-Guide" tu doit connaitre et grace à ça tu tape dans la recherche "GetSystemMetrics"
et tu obtiens ça, qui confirme que tu as raison :wink:

Code : Tout sélectionner

Declare Function GetSystemMetrics Lib "user32" Alias "" (ByVal nIndex As Long) As Long
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Cela fait plusieur fois que je croise les API

GetSystemMetrics_(#SM_CXSCREEN) dans des codes, Il est natif à Windows alors que DesktopWidth(0) qui est natif a PB. Est-il moins rapide ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

oui ! effectivement :)

TOUTES les fonctions qui ont leur nom qui finis par "_(" sont des API windows

et donc les constante employées sont forcement en rapport avec l'Api :)

il faut allez sur le site de microsoft, ou bien avoir certains prg
ou bien le fichier d'aide "WIN32" qui permet ensuite d'avoir l'info comme avec l'aide de purebasic en appuyant sur F1 lorsque le curseur est sur l'API

seule probleme ce fichier d'aide n'est pas complet .. :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

ou bien le fichier d'aide "WIN32" qui permet ensuite d'avoir l'info comme avec l'aide de purebasic en appuyant sur F1 lorsque le curseur est sur l'API
Cool la combine 8O
Mais tu le met ou ce Win32 pour que ça marche ? :roll:
Répondre