Mon drapeau Japonais

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Mon drapeau Japonais

Message par jbernard13 »

bonjour
je suis en amuser a refaire un drapeau japonais

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()
  ClearScreen(RGB(255,255,255))
  ;dessine le cercle rouge et du cadre du drapeau 
  StartDrawing(ScreenOutput())
Circle(390,290,Rayon,Couleur)
    Line(5,5,790,0,(Couleur))
    Line(5,5,0,590,(Couleur))
    Line(795,5,0,591,(Couleur))
    Line(5,595,790,0,(Couleur))
    
  StopDrawing()
  
  FlipBuffers()
  Until KeyboardPushed(#PB_Key_Escape)
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

je viens de finir le drapeau Français

Code : Tout sélectionner

;**  Dessin du Drapeau Francais par Jbernard 
;*** On inialise tout  ****
InitSprite()
InitKeyboard()
Couleur = RGB(255,255,255); couleur du cadre 

;Creation de l'ecran 
OpenScreen( 800,600,32," Drapeau Français")
;Boucle du programme 
Repeat 
  ExamineKeyboard()
  ClearScreen(RGB(0,0,0))
;Dessin du drapeau et du cadre   
startDrawing(ScreenOutput())
    Line(5,5,790,0,Couleur) 
    Line(5,5,0,590,(Couleur))
    Line(795,5,0,591,(Couleur))
    Line(5,595,790,0,(Couleur))
    Box(7,7,280,587,RGB($0,$0,$FF))
    Box(250,7,290,587,Couleur)
    Box(535,7,260,587,RGB($FF,$0,$0))
    StopDrawing()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Message par Cool Dji »

Hello,

Profite du drapeau américain pour tester les boucles...
- boucle pour afficher les lignes rouges et blanches
- boucles pour afficher les étoiles
Only PureBasic makes it possible
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

tu veux parler de for next?
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Cool, c'est une bonne idée :D

J'y connait fifre en mode console, mais il me semble que dans les deux programmes les lignes 'Line" ne servent pas à grand chose :roll:

Code : Tout sélectionner

;**  Dessin du Drapeau Francais par Jbernard 
;*** On inialise tout  **** 
InitSprite() 
InitKeyboard() 
Couleur = RGB(255,255,255); couleur du cadre 

;Creation de l'ecran 
OpenScreen( 800,600,32," Drapeau Français") 
ClearScreen(RGB(0,0,0)) 
;Dessin du drapeau et du cadre    
StartDrawing(ScreenOutput()) 
Line(5,5,790,0,Couleur) 
Line(5,5,0,590,(Couleur)) 
Line(795,5,0,591,(Couleur)) 
Line(5,595,790,0,(Couleur)) 
Box(7,7,280,587,RGB($0,$0,$FF)) 
Box(250,7,290,587,Couleur) 
Box(535,7,260,587,RGB($FF,$0,$0)) 
StopDrawing() 
FlipBuffers() 

;Boucle du programme 
Repeat   
 ExamineKeyboard() 
Until KeyboardPushed(#PB_Key_Escape) 

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") 

ClearScreen(RGB(255,255,255)) 
;dessine le cercle rouge et du cadre du drapeau 
StartDrawing(ScreenOutput()) 
Circle(390,290,Rayon,Couleur) 
Line(5,5,790,0,(Couleur)) 
Line(5,5,0,590,(Couleur)) 
Line(795,5,0,591,(Couleur)) 
Line(5,595,790,0,(Couleur)) 
StopDrawing() 
FlipBuffers() 

;Boucle du programme 
Repeat 
 ExamineKeyboard() 
Until KeyboardPushed(#PB_Key_Escape)
Dernière modification par Kwai chang caine le lun. 19/janv./2009 18:14, modifié 6 fois.
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

si elles servent a crée le contour du drapeau ....
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Ah d'accord sur mon ecran je ne voyais pas la difference :)
Par contre j'sais pas si ce serait pas mieux de sortir le dessin de la boucle :roll:
J'ai remodifié au dessus :wink:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Ben non, KCC, comme JBernard avait fait, c'était bon. Je préfère sa solution

Le dessin doit toujours être dans le boucle avec le flipbuffer()

Sinon, on ne peut pas faire évoluer, que sais-je, par exemple en changeant de drapeau à chaque clic.

Une bonne poursuite serait de faire un jeu de connaissance des drapeau du monde.

ON affiche un drapeau en aléatoire
L'utilisateur dis un pays
On clique pour voir la réponse et si on a juste
Puis on reclique pour jouer avec un autre drapeau
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pour eviter tes lignes qui dessine le contour
tu peux employer un Box() avec le mode outlined ;)

comme ça :

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()
    ClearScreen(RGB(255,255,255))
    ;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()
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 et soldat inconnu , j'ai fait sans utiliser d'exemple juste avec la doc de PB ...

là je bosse sur un simple jeu ....
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Merci SOLDAT 8)

Voila donc une preuve de plus, (comme si il en fallait une) que je n'ai jamais rien fait sous console :oops:

C'est dingue que l'on redessine toute les X secondes le meme dessin pour rien 8O
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

c'est ce quon apelle le FPS, on dessine son image toutes les x secondes

soit partiellement, soit complètement. Le plus simple étant de tout redessiner
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Kwai chang caine a écrit :Merci SOLDAT 8)

Voila donc une preuve de plus, (comme si il en fallait une) que je n'ai jamais rien fait sous console :oops:
déjà ne parle pas de console !! :)

la console c'est une autre sorte de fenêtre (voir librairie console dans la doc)

ici il s'agit d'écran graphique !!

et effectivement depuis toujours dans l'histoire de la micro informatique
les écrans sont dynamique !!
il se rafraichissent tout les X frame par secondes
a l'opposé d'un écran qui serait "Static" (comme un telecran par ex)
le pinceau lumineux qui balaye l'ecran de haut en bas
et de gauche a droite, dessine en temps réel ce qui se trouve en VRAM
et la rémanence de ton écran te montre le dessin
si ce pinceau s'arrêtait, ton dessin disparaitrai au bout d'un petit moment , lorsque la rémanence ne ferai plus sont boulot

donc on redessine a nouveau pour rafraichir les pixel de l'ecran !!
on profite d'ailleurs du moment ou le pinceau arrive en bas et doit remonter en haut, pour synchroniser l'affichage
on appel ça le VSYNC ou Vertical Blank
c'est a ce moment précis que FlipBuffer() entre en jeux
il swap le contenu qui venait d'être affiché , avec ce qui sera le prochain affichage ...(image 1 d'une animation puis l'image 2 etc ...) :)


donc notre bon vieux flipbuffer , sert justement a échanger
l'écran dit "Logique" (celui qu'on ne voit pas et celui sur lequel est en train de se fabriquer le dessin...)
avec l'écran dit "Physique" celui que l'on voit, c'est a dire la représentation effective du dessin ... :)

tu comprendrai mieux tout ceci si tu avait pu faire du GFA basic ou du STOS (AMOS) , car en stos les écrans portaient carrément le nom
de physic, et logic , et nous manipulions, indépendamment ces 2 écrans !!
en stos on avait même en plus l'écran BACK ! qui était l'arrière plan des sprites :)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Vous ne pourriez pas mettre tout ça dans une procédure? Et là je ne vois pas l'intérêt de flipper le buffer, puisqu'il n'y a pas d'animation. La procédure permettrait de créer le dessin dans une image, qui pourrait être utilisée dans un gadget, pour un jeu dans une fenêtre classique, ce qui serait bien plus portable.
Et puis ça ne sert à rien de parler de double buffer pour l'instant, pourquoi pas de triple buffer (voire plus) tant qu'on y est :)

D'autant que l'informatique n'est pas liée aux écrans cathodiques, y'a bien des écrans vectoriels ou du pilotage laser! Et les écrans plats ne fonctionnent pas non plus de la même façon au niveau de l'affichage, rien ne dit qu'à l'avenir on devra toujours utiliser le double-buffer; c'est juste pour une question de commodité pour l'animation, mais ça n'est pas obligatoire, et ça n'est pas du tout "naturel". Y'a qu'à voir à quel point ça rend difficile la gestion des collisions (pas facile de retrouver l'endroit précis d'un choc quand ton objet fait des bonds de 50 pixels!)...
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Dobro a écrit :pour eviter tes lignes qui dessine le contour
tu peux employer un Box() avec le mode outlined ;)

comme ça :

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()
    ClearScreen(RGB(255,255,255))
    ;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()
Until KeyboardPushed(#PB_Key_Escape)
Tiens, j'ai un vieux clipping avec ce code
~~~~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
Répondre