Forum Liberty Basic France

Le 11/05/2017 à 17h30

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 377
Hello !

Pour illustrer la cinquième dimension évoquée par atomose dans ce fil consacré au projet Itarius, j'ai voulu jouer avec les sprites, mais par manque d'expérience, je suis confronté à un message bitmap named spr0.bmp not found.

spr0.bmp existe bel et bien en tant que bitmap et est généré par une instruction bmpsave.

Comme sur le chemin d'accès à spr0.bmp, il y avait des espaces, et que j'utilise Wine sous Linux, j'ai pensé à une compatibilité restreinte due à Wine, mais placer mes bmp dans un chemin sans espaces n'a pas eu d'effet, toujours spr0.bmp not found

Le principe du programme :
  • on définit un graphisme de 64 pixels de côté (variables largbmp et hautbmp, boucles cycles, ligne, colonne),
  • par cette méthode un graphisme légèrement différent est créé à chaque cycle,
  • à la fin de chaque cycle on sauve le graphisme sous la forme d'un fichier bitmap,
  • puis le sous-programme [defsprite] tente d'attribuer ce bitmap à un sprite, et c'est là qu'arrive l'erreur bitmap named spr0.bmp not found.


J'ai supprimé les autres instruction d'affichage et de redimensionnement de sprite pour alléger le programme. De même les équations sont choisies 'au pif', l'important étant de faire fonctionner ces sprites

Y a-t-il d'autres méthodes si on veut attribuer le contenu d'une zone d'écran à un sprite ?

Le programme :

Code VB :
 
    'sprites

    largbmp=64
    hautbmp=64
 
    'nomainwin

    open "Ellipses" for graphics as #1
        print #1, "fill black"
        print #1, "trapclose [quit]"
        print #1, "down"
        print #1, "place 0 0"
        F1=20
        F2=25
        F3=50
 
        omega1=2*3.14*F1
        omega2=2*3.14*F2
        omega3=2*3.14*F3
 
        pas=0.001
 
        t1=1+(-0.5+rnd(1)/10)
        t2=1+(-0.5+rnd(1)/10)
        t3=1+(-0.5+rnd(1)/10)
 
    for cycles=0 to 20
        f1=127+int(128*sin(omega1*t1))
        t1=t1+pas
 
        for ligne=0 to hautbmp-1
            f2=127+int(128*sin(omega2*t2))
            t2=t2+pas
 
            for colonne=0 to largbmp-1
                f3=127+int(128*sin(omega3*t3))
                t3=t3+pas
                print #1, "color ";str$(f1);" ";str$(f2);" ";str$(f3);" "
                print #1, "set ";20+colonne;" ";25+ligne;" "
            next
        next
 
        print #1, "getbmp bitmap ";20;" ";25;" ";largbmp;" ";hautbmp;" "
        bmpsave "bitmap", "spr";str$(cycles);".bmp"
        gosub [defsprite]
 
        print #1, "flush"
    next
    wait
 
[defsprite]
'définition des sprites
    for cycles=0 to 20
    ' print #1, "addsprite SP";str$(cycles);" spr";str$(cycles);".bmp"
        print #1, "addsprite SP";str$(cycles);" spr0.bmp"
    next
    wait
 
[quit]
    close #1
    end
 
 
____________________
Just Basic :
  • utilisation courante avec Linux/Mageia5 + Wine (support partiel et quelques petites choses non implémentées dans l'aide mais pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 11/05/2017 à 18h53

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 385
Petite aide juste pck j'aime bien les gens qui sont fous fous dans leur tête ;)


Code VB :
 'sprites

    largbmp=64
    hautbmp=64
 
    nomainwin
 
    open "Ellipses" for graphics as #1
        print #1, "fill black"
        print #1, "trapclose [quit]"
        print #1, "down"
        print #1, "place 0 0"
        F1=20
        F2=25
        F3=50
 
        omega1=2*3.14*F1
        omega2=2*3.14*F2
        omega3=2*3.14*F3
 
        pas=0.001
 
        t1=1+(-0.5+rnd(1)/10)
        t2=1+(-0.5+rnd(1)/10)
        t3=1+(-0.5+rnd(1)/10)
 
    for cycles=0 to 20
        f1=127+int(128*sin(omega1*t1))
        t1=t1+pas
 
        for ligne=0 to hautbmp-1
            f2=127+int(128*sin(omega2*t2))
            t2=t2+pas
 
            for colonne=0 to largbmp-1
                f3=127+int(128*sin(omega3*t3))
                t3=t3+pas
                print #1, "color ";str$(f1);" ";str$(f2);" ";str$(f3);" "
                print #1, "set ";20+colonne;" ";25+ligne;" "
            next
        next
 
        print #1, "getbmp bitmap ";20;" ";25;" ";largbmp;" ";hautbmp;" "
        bmpsave "bitmap", "spr";str$(cycles);".bmp"
        on error goto[nextXD]
        print #1, "addsprite SP";str$(cycles);" spr";str$(cycles);".bmp"
        [nextXD]
        print #1, "flush"
 
    next cycles
    wait
 
 
[quit]
    close #1
    end
 
 
 
____________________
Yo !

MSN Web    
Le 11/05/2017 à 21h06

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 377
Code VB :
 
	on error goto[nextXD]
        print #1, "addsprite SP";str$(cycles);" spr";str$(cycles);".bmp"
        [nextXD]
 


en effet, c'est radical, je prépare la suite ;)
____________________
Just Basic :
  • utilisation courante avec Linux/Mageia5 + Wine (support partiel et quelques petites choses non implémentées dans l'aide mais pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 03/06/2017 à 01h38

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 377
Lorsque il n'y a pas de réponse à une question sur un forum, on se trouve typiquement face à deux possibilités :
1. la réponse à la question est tellement évidente que personne ne se donne la peine de répondre
2. personne n'a la réponse...

Je subodore que nous sommes dans le premier cas, et je n'ai pas cherché davantage car c'était un besoin très ponctuel.

Cependant, 101 vues de ce sujet en trois semaines pour seulement deux réponses, ça laisse penser que d'autres aimeraient savoir. Donc, pour ceux qui voudraient approfondir leurs connaissance des sprites, sachez qu'il y a 3 exemples le dossier d'installation de JustBasic :
SPRGETXY.bas : attribue un bitmap à un sprite puis déplace le sprite sur un fond issu d'un autre bitmap
SPRTTST2.bas : attribue plusieurs bitmaps à un sprite, fait de même pour trois autres sprites, et les anime.
SPRTTST3.bas : attribue un bitmap à un sprite, puis le fait déplacer en le rendant invisible une fois sur quatre

Dans ces exemples le mouvement est excessivement rapide, probable conséquence d'exemples conçus il y a une éternité à l'échelle informatique, mais qu'on fait tourner sur des machines actuelles. On peut y remédier en ajoutant, dans la boucle d'animation, un boucle qui ne sert qu'à ralentir le programme, par exemple :
Code VB :
for a=0 to 5000:b=b+a+a*2/3:next


Bons tests
____________________
Just Basic :
  • utilisation courante avec Linux/Mageia5 + Wine (support partiel et quelques petites choses non implémentées dans l'aide mais pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie