Gambas France BETA


Pas de compte ? Incription

Déplacer une image (Sprite/Bob ?)

1
AuteurMessages
Counia#1 Posté le 25/7/2013 à 20:11:50
Bonjour,
je me remets doucement à la programmation et découvre Gambas.

Je cherche "la bonne" technique pour déplacer une image sur une Form.
Les images sont actuellement en formats "GIF" avec une couleur transparente.
Quel conteneur utiliser ?
Peut-être un exemple ?
Merci
Jack#2 Posté le 26/7/2013 à 09:34:48
Bonjour,

tu pourrais éventuellement t'inspirer de l'exemple Beastscroll dans Gambas3.
Pour un code démocratique nationalisons Gambas.
Counia#3 Posté le 27/7/2013 à 17:50:46
Excellent, un exemple tiré de l'Amiga en plus :-)

Par contre j'ai des pb à l'ouverture des projets exemples Gambas3.
C'est sans doute rien.
Mais comme je ne suis pas très fort avec le système quelle action serait à faire ?


Pb1: Il semble que ce projet soit déjà ouvert.
J'ouvre quand même.

Pb2: Certains composants ne sont pas installés: gb.image.io, gb.sdl, gb.sdl.sound
Je fais continuer.

Pb3: Le projet est en lecture seule.
Bon je fais avec.

Si j'exécute le prog.

Pb4:Le programme a retourné la valeur 1.
gbx3: no project file in '/usr/share/gambas3/examples/Games/BeastScroll'.



Counia#4 Posté le 27/7/2013 à 17:57:15
Pour le PB2:
J'ai rajouté des paquets avec le gestionnaire "synaptic".
Jack#5 Posté le 27/7/2013 à 18:33:27
Tu as le message de la lecture seule car tu n'as pas les permissions d'écrire dans le répertoire initial du projet.
Sauvegardes le projet sous un autre répertoire.
Pour un code démocratique nationalisons Gambas.
Counia#6 Posté le 27/7/2013 à 19:06:26
Oui, c'est ça. (j'ai un peut de mal avec ces systèmes à permission dans tout les sens)

Donc y a du mieux ;-)
J'ai le son mais pas l'image ; encore une erreur:
gb.sdl error: Couldn't open
usr/share/gambas3/gb.sdl/DejaVuSans.ttf

Je suppose que c'est une police de caractère, mais pourquoi la chercher là ?
Sur l'arborescence de mon système, je la vois ici:
/usr/share/fonts/truetype/ttf-dejavu/

Mais où renseigner le bon chemin à Gambas.
Counia#7 Posté le 27/7/2013 à 23:27:18
J'ai contourné ce problème.
(pour info je me suis connecté en "root" ,j'ai créé le répertoire "usr/share/gambas3/gb.sdl/" et y est copié le fichier "DejaVuSans.ttf").
Dupliquer les polices de caractère un peut partout me semble pas très élégant mais au moins cet exemple ce lance maintenant.
Jack#8 Posté le 28/7/2013 à 09:19:40
En principe ce fichier est copié lors de l'installation de Gambas. Peut-être as-tu eu un problème d'installation ?
Pour un code démocratique nationalisons Gambas.
Counia#9 Posté le 30/7/2013 à 01:18:52
Non, à ma souvenance pas de pb.

J'ai regardé un peut cet exemple, déjà des dépendances utilisées sont incompatibles avec le "Form".

Sur cet exemple dans la fct [Screen_Draw()].
Je ne comprends pas les instructions de pré-proces.
Ni pourquoi le traçage est correct avec [Screen.Clear] en commentaire.

Et sur cet écriture: [Public Screen As New Window As "Screen"]
Que signifie le [As "Screen"] de fin ?
Jack#10 Posté le 30/7/2013 à 08:37:24
Bonjour,

[Public Screen As New Window As "Screen"] : Instancie la class Screen et permet de lever les événements (screen_draw).
Voir la doc ici ==> http://www.gambasdoc.org/help/lang/new?fr

Pour le code de Screen_Draw() je pense qu'on pourrait le ramener à quelque chose de plus simple. Mais si Guy Carlier l'a écrit ainsi je pense qu'il avait ses raisons qu'il pourrait peut-être expliquer s'il passait par là.

Public Sub Screen_Draw()

scroll = scroll + speed
Dec (scroll1)
scroll2 = scroll2 - 2
scroll3 = scroll3 - 3
scroll4 = scroll4 - 4
scroll5 = scroll5 - 5
scroll5b = scroll5b - 2
scroll6 = scroll6 - 5

If (scroll = 320) Then speed = -2
If (scroll = -960) Then speed = 2
scrollb = scroll
If (scrollb < - 640) Then scrollb = - 640
If (scrollb > 0) Then scrollb = 0
If (scroll1 = - 640) Then scroll1 = 0
If (scroll2 = - 640) Then scroll2 = 0
If (scroll3 < - 640) Then scroll3 = scroll3 + 640
If (scroll4 < - 640) Then scroll4 = scroll4 + 640
If (scroll5 < - 640) Then scroll5 = scroll5 + 1280
If (scroll5b < - 640) Then scroll5b = scroll5b + 1280
If (scroll6 < - 640) Then scroll6 = scroll6 + 640

Draw.Image(ciel, 0, 0)
Draw.Image(montagnes, scroll1, 200)
Draw.Image(montagnes, scroll1 + 640, 200)
Draw.Image(sol1, scroll2, 420)
Draw.Image(sol1, scroll2 + 640, 420)
Draw.Image(sol2, scroll3, 430)
Draw.Image(sol2, scroll3 + 640, 430)
Draw.Image(sol3, scroll4, 450)
Draw.Image(sol3, scroll4 + 640, 450)
Draw.Image(nuage1, scroll6, 0)
Draw.Image(nuage1, scroll6 + 640, 0)
Draw.Image(nuage2, scroll4, 82)
Draw.Image(nuage2, scroll4 + 640, 82)
Draw.Image(nuage3, scroll3, 120)
Draw.Image(nuage3, scroll3 + 640, 120)
Draw.Image(nuage4, scroll2, 138)
Draw.Image(nuage4, scroll2 + 640, 138)
Draw.Image(barriere, scroll5, 440)
Draw.Image(arbre, scroll5b, 140)
Draw.Image(fireworks, scrollb, 0)
Draw.Image(scrolltext, scrollb + 640, 0)

Draw.ForeColor = &hFFFF00&
Draw.Text(Screen.Framerate & " FPS", 5, 450)

End
Pour un code démocratique nationalisons Gambas.
Counia#11 Posté le 30/7/2013 à 10:31:14
Salut,
merci pour l'explication des évènements, j'aurais pas trouvé tout seul.

Pour le code de Screen_Draw()
Il y a toujours la question du [Screen.Clear]:
J'ai calqué le fonctionnement des [Draw.Image] de l'exemple mais l'affichage laisse les img. déjà tracées.
Pas de conservation du font apparemment, je dois alors utilisé le fameux [Screen.Clear] et tout retracer.
Y a t'il des propriétés de traçages ?
Ou dois-je implémenter personnellement une technique de masques ?
1