Page 1 sur 4

Mon drapeau Japonais

Publié : lun. 19/janv./2009 15:58
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)

Publié : lun. 19/janv./2009 17:24
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)


Publié : lun. 19/janv./2009 17:35
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

Publié : lun. 19/janv./2009 17:50
par jbernard13
tu veux parler de for next?

Publié : lun. 19/janv./2009 17:56
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)

Publié : lun. 19/janv./2009 18:05
par jbernard13
si elles servent a crée le contour du drapeau ....

Publié : lun. 19/janv./2009 18:09
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:

Publié : lun. 19/janv./2009 18:26
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

Publié : lun. 19/janv./2009 18:42
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)

Publié : lun. 19/janv./2009 18:48
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 ....

Publié : mar. 20/janv./2009 9:50
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

Publié : mar. 20/janv./2009 10:32
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

Publié : mar. 20/janv./2009 11:28
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 :)

Publié : mer. 21/janv./2009 9:46
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!)...

Publié : mer. 21/janv./2009 14:15
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