Night.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: Dread Mac Farlane - Complet / Sorties: "Dread Mac Farlane", (...) / Tutos: Checklist de la composition (...) / Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

552 connectés actuellement

29527510 visiteurs
depuis l'ouverture

3574 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Leo-Games

Le Temple de Valor

RPG Maker VX

Lumen

Tous nos partenaires

Devenir
partenaire



Messages postés par TFk
Nombre de messages référencés sur Oniromancie (non supprimés): 6

Aller à la page: 1

Posté dans Forum - Un petit script pour faire des barres facilement

TFK - posté le 29/01/2012 à 12:16:36. (6 messages postés)

Citation:

j'en ai vu NULLE PART dans tes explications.
Réveille toi vieux.


Tu as tout à fait raison, pour quelqu'un qui ne connaîtrait rien à Ruby il n'y aurait aucun moyen de le remarquer.
Le

Portion de code : Tout sélectionner

1
attr_accessor :value

ne doit pas parler à tout le monde.
Il faut que je commente le code correctement, mais je ne sais pas trop quelles sont les best practices pour commenter en ruby, si tu connais un lien qui l'explique je serais très intéressé.


Citation:

C'est bien, @last_value est tout le temps égal à nil.
Donc ça sert à rien.


Merci de l'avoir signalé, je n'avais pas remarqué cette erreur, c'est corrigé.

Posté dans Forum - Un petit script pour faire des barres facilement

TFK - posté le 29/01/2012 à 12:04:57. (6 messages postés)

Pour rafraichir la barre, il suffit d'appeler la method refresh, je pense que c'est plutôt évident.
Le changement de contenu se fait au besoin dans la method refresh si "value" a changé.

Il faudrait comparer les perfs de ton algo avec celui d'Andres, car le tiens utilise des cos/sin, des flotant, etc..

Posté dans Forum - Un petit script pour faire des barres facilement

TFK - posté le 29/01/2012 à 12:02:10. (6 messages postés)

@Nagato Yuki: c'est ce qui est prévu, mais pour l'instant, l'idée d'une progress bar circulaire m'intéresse pas mal.

Voici la classe que j'ai implémenté avec des methods static pour dessiner des cercles facilement:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
class Circle
  def self.draw_circle(r, color, bitmap,x_center, y_center)
    x = 0
    y = r
    d = r - 1
    while(y >= x)      
      bitmap.set_pixel(x + x_center, y + y_center, color)
      bitmap.set_pixel(y+x_center, x+y_center,color)
      bitmap.set_pixel(-x+x_center, y+y_center, color)
      bitmap.set_pixel(-y+x_center, x+y_center, color)
      bitmap.set_pixel(x+x_center, -y+y_center, color)
      bitmap.set_pixel(y+x_center, -x+y_center, color)
      bitmap.set_pixel(-x+x_center, -y+y_center, color)
      bitmap.set_pixel(-y+y_center, -x+y_center, color)
      
      
      if(d >= 2 * x)
        d = d - 2 * x - 1
        x+=1
      elsif(d <= (2 * r - y))
        d = d + 2 * y - 1
        y-=1
      else
        d + 2 * (y - x - 1)
        y = y -1
        x +=1
      end        
    end
    return bitmap
  end
  def self.draw_circle_t(r, thickness, color, bitmap, x_center, y_center)
    x = 0
    while(x < thickness)
      bitmap = Circle::draw_circle(r - x, color, bitmap, x_center, y_center)      
      x+=1
    end    
    return bitmap
  end
  def self.draw_circle_d(inner_r, outer_r, inner_color, outer_color, bitmap, x_center, y_center)
    bitmap = Color::draw_circle(inner_r, inner_color, bitmap, x_center, y_center)
    bitmap = Color::draw_circle(outer_r, outer_color, bitmap, x_center, y_center)
    return bitmap
  end  
end
 
 



L'algo utilisé vient de là: [url]http://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_cercle_d'Andres[/url] .

Posté dans Forum - Un petit script pour faire des barres facilement

TFK - posté le 29/01/2012 à 10:48:58. (6 messages postés)

Tout est réalisable en programmant :)
Après, c'est moins simple.
Est-ce qu'il existe une method dans RGSS pour dessiner des cercle ou je dois l'implémenter aussi ?

Posté dans Forum - Un petit script pour faire des barres facilement

TFK - posté le 29/01/2012 à 08:32:06. (6 messages postés)

Merci pour vos réponses,

je suis tout à fait d'accord avec le fait que la barre générée n'est pas très belle et que l'intérêt n'est pas flagrant.

Mais si dans votre jeu vous voulez faire une barre d'hp, une barre de mana, une barre d'xp, vous allez avoir déjà 3 events à faire (il me semble qu'ils ne sont pas rès performants d'ailleurs), 3 images à charger, gérer l'évolution de la barre px par px, soit en chargeant une image de 1px de long, soit en décalant sur le côté de l'écran (et là si votre barre d'xp est au milieu de l'écran, c'est le dawa).
Alors qu'en faisant:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
    red_to_green = [Color.new(255, 0, 0, 255), Color.new(128, 128, 0, 255), Color.new(0, 255, 0, 255)]
    blues = [Color.new(0, 0, 196), Color.new(0, 0, 255)]
    purple = [Color.new(160, 32, 240)]
    background = Color.new(128, 128, 128, 196)
    border = Color.new(255, 255, 255, 255)
 
    @hp_bar = Bar.new(20, 20, 180, 27, red_to_green, border, background, 100)
    @mana_bar =  Bar.new(20, 48, 150, 27, blues, border, background, 40)
    @xp_bar = Bar.new(20, 76, 150, 17, purple, border, background, 60)
 
 



et dans un Update,

Portion de code : Tout sélectionner

1
2
3
4
5
 
    @hp_bar.refresh
    @mana_bar.refresh
    @xp_bar.refresh
 



En gros, si on ne compte pas les couleurs, ça prend 1 ligne par barre + 1 ligne pour refresh, ce qui permet de faire des barres très vite sans avoir à ouvrir photoshop ou autre.
Le résultat:

image


Je vais encore travailler sur cette classe (pour que les barres aient un meilleur design).


:avert2Il y a aussi quelques bugs que je corrige en ce moment

Posté dans Forum - Un petit script pour faire des barres facilement

TFK - posté le 29/01/2012 à 00:20:33. (6 messages postés)

Bonjour à tous, j'ai découvert assez récemment RM et comme je suis dev et que je souhaite créer un petit jeu avec, j'ai commencé à écrire quelques petits scripts.

Voici un script qui vous permet de faire une barre simple :

V 0.1
-début du script

V 0.2
-pleins de petits bugs corrigés
-quelques optimisation



Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
 
class Bar
  
  attr_accessor :value
  attr_accessor :x
  attr_accessor :y
  attr_reader :width
  attr_reader :height
  attr_accessor :colors
  attr_accessor :background_color
  attr_reader :border_color
  
  def initialize(x, y, width, height, colors, borderColor, backgroundColor, value)
    @x = x
    @y = y
    @width = width
    @height = height
    @colors = colors
    @border_color = borderColor
    @background_color = backgroundColor
    @value = value
    @last_value = nil
    
    @border = nil
    @content = nil
  end
 
  def refresh()
      
    unless @border
      @border = Sprite.new      
      @border.bitmap = generate_border(@border_color)
      @border.opacity = 255
      @border.ox = 0
      @border.oy = 0
    end
    unless @content
      @content = Sprite.new         
      @content.opacity = 255
      @content.ox = 0
      @content.oy = 0
    end
    
    @border.x = @x
    @border.y = @y
    
    @content.x = @x + 1
    @content.y = @y + 1
    unless @last_value == @value      
      @content.bitmap = generate_content()
      @last_value = @value
    end
 
  end
  
  def generate_border(color)
    border = Bitmap.new(@width, @height)
    
    y = 0
    while(y < @height)
      # left border
      border.set_pixel(0, y, color)
      # right border
      border.set_pixel(@width - 1, y, color)
      y += 1
    end
    x = 1
    while(x < @width)
      # up border
      border.set_pixel(x, 0, color)
      # down border
      border.set_pixel(x, @height - 1, color)
      x += 1
    end
    
    return border    
  end
  
  def generate_content()
    width = @width - 2
    height = @height - 2
    val = (@value.to_f / 100)
    content = Bitmap.new(width, height)
    
    # Gets the color according to the value of the bar.
    value = @value.to_f / 100 * @colors.length
    while(value.floor > @colors.length - 1)
      value -=1
    end
    while(value.floor < 0)
      value += 1
    end
    color = @colors[value.floor]
    
    # Fills the bar with the appropriate color
    x = 0
    while(x < width)
      column_color = color
      if(x > width * val)
        column_color = @background_color
      end
      y = 0
      while(y < height)
        content.set_pixel(x, y, column_color)
        y += 1
      end
      x += 1
    end
      return content
  end
    
end
 
 



Il est très simple à utiliser et ne requiert aucune image.

Pour créer votre barre, il suffit de créer un objet Bar comme suit:

Portion de code : Tout sélectionner

1
my_bar = Bar.new(x, y, width, height, colors, border_color, background_color, value


Avec
x = x du coin supérieur gauche de la barre
y = y du coin supérieur gauche de la barre
width = largeur de la barre (attention: 2px sont utilisés pour la bordure)
height = hauteur de la barre (attetion: 2px sont utilisés pour la bordure)
colors = un tableaudes couleurs de la barre (voir plus bas pour explications)
border_color = la couleur de la bordure (sous forme d'un Color)
background_color = la couleur de fond de la barre (uniquement visible sur la partie non remplie)
value = la valeur de la part, doit être entre 0 et 100 (inclus)


Le tableau de couleurs (colors) est utilisé pour changer la couleur de la part en fonction de sa valeur. Si il ne contient qu'une seule couleur, le remplissage se fera toujours avec celle-ci, si il contient deux couleurs, le remplissage se fera avec la première en dessous de 50% et avec la seconde au dessus, avec trois couleurs, la première sera utilisée entre 0 et 33%, la seconde lorsque la valeur dépasse 33% et la troisième lorsqu'elle dépasse 66%.

Quelques images avec une barre à 3 couleurs (rouge, jaune-vert, vert)



image
image
image
image


Il reste encore pas mal d'optimisation à faire, mais l'idée est là.

De nombreuses améliorations sont prévues notamment pour permettre via une autre classe de changer la façon dont la border et le contenu sont créés ainsi que pour permettre l'utilisation d'images pour créer des barres personnalisées & performantes très facilement.

Aller à la page: 1

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers