Forum Liberty Basic France
• Index
Salutations dominicales,
Encore un gag de notre langage de programmation qui décidément ne réagit pas comme j'ai décidé qu'il devrait réagir !
J'ai une routine qui dessine un bitmap de 8*16 pixels destiné à devenir sprite, et qui fonctionne.
Dans le programme j'ai besoin de deux sprites, un alien et un missile, les deux sont correctement générés, mais seul le missile est attribué à son sprite, le sprite de l'alien est un carré gris qui n'est pas le bitmap généré.
Comme c'est une routine qu'on appelle pour chaque sprite, le nom du bitmap qu'elle génère est toujours le même, et c'est avec un "addsprite" que je l'attribue au sprite en lui donnant le nom qu'il convient.
Le programme est pour le moment horriblement compliqué pour ce qu'il fait : c'est normal car je prévois de dessiner beaucoup de sprites et qu'il faut prévoir de s'y retrouver dans le futur, je voulais - à titre d'expérience - créer mes sprites comme on le faisait à l'époque des space invaders, et je me suis servi d'un programme tout fait trouvé dans les exemples pour en conserver sa routine d'animation. Mais cette complexité ne devrait pas empêcher l'attribution d'un bitmap à un sprite ?
Code VB :
Encore un gag de notre langage de programmation qui décidément ne réagit pas comme j'ai décidé qu'il devrait réagir !
J'ai une routine qui dessine un bitmap de 8*16 pixels destiné à devenir sprite, et qui fonctionne.
Dans le programme j'ai besoin de deux sprites, un alien et un missile, les deux sont correctement générés, mais seul le missile est attribué à son sprite, le sprite de l'alien est un carré gris qui n'est pas le bitmap généré.
Comme c'est une routine qu'on appelle pour chaque sprite, le nom du bitmap qu'elle génère est toujours le même, et c'est avec un "addsprite" que je l'attribue au sprite en lui donnant le nom qu'il convient.
Le programme est pour le moment horriblement compliqué pour ce qu'il fait : c'est normal car je prévois de dessiner beaucoup de sprites et qu'il faut prévoir de s'y retrouver dans le futur, je voulais - à titre d'expérience - créer mes sprites comme on le faisait à l'époque des space invaders, et je me suis servi d'un programme tout fait trouvé dans les exemples pour en conserver sa routine d'animation. Mais cette complexité ne devrait pas empêcher l'attribution d'un bitmap à un sprite ?
Code VB :
'A partir d'un programme de Rod (rodbird), trouvé dans les exemples, 'dont j'ai gardé la routine d'animation ' "" 'Invaders again! use the mouse to move the gun right click to fire. 'Use this simple video game as a foundation for a more ambitious game. 'Used with permission. ' "" 'nomainwin [aliens] data 60,66,126,129,195,60,66,129 [missiles] data 24,60,126,24,24,60,102,195 [vaisseau] data 24,36,36,24,153,189,231,195 [explosion] 'data WindowWidth = 800 WindowHeight = 600 UpperLeftX = (DisplayWidth-WindowWidth)/2 UpperLeftY = (DisplayHeight-WindowHeight)/2 graphicbox #w.g, 0,0,800,600 open "Invaders" for graphics_nf_nsb as #w #w "trapclose [quit]" [initialise] x = 1 y = 2 dim bullet(6,2) 'bullet x,y dim alien(6,2) 'alien x,y adir = -10 'alien direction aspeed = 1.01 'alien acceleration base = 540 'base line of gun 'box background for i = 0 to 150 j = 256 - i #w.g "down ; backcolor ";j/3;" ";j/3;" ";j/3 #w.g "color ";j/3;" ";j/3;" ";j/3 #w.g "place ";i;" ";i #w.g "boxfilled ";800 - i;" ";600 - i next 'stars for n = 1 to 100 c = int(rnd(0)*255) #w.g "color ";c;" ";c;" ";c;" ; set ";150+rnd(0)*500;" ";150+rnd(0)*300 next #w.g "getbmp bak 0 0 800 600" #w.g "background bak"; #w.g, "getbmp lebitmap 0 0 ";colonne;" ";ligne+8 'générer les sprites 'cat=catégorie de sprite for cat=1 to 4 select case cat case 1 'créer les aliens restore [aliens] couleur$="red" gosub [creer_bmpsprite] 'bmpsave "lebitmap","bitmap";cat;".bmp" nd=1 'nombre de lignes de data à lire pour cette catégorie for bcl=1 to nd*8 for n=1 to 6 alien(n,x) = 200+70*n alien(n,y) = 0 #w.g "addsprite alien";str$(n);" lebitmap" next next case 2 'créer les missiles restore [missiles] couleur$="cyan" gosub [creer_bmpsprite] 'bmpsave "lebitmap","bitmap";cat;".bmp" nd=1 for bcl=1 to nd*8 for n=1 to 6 bullet(n,x) = 400 bullet(n,y) = base #w.g "addsprite bullet";str$(n);" lebitmap" next next case 3 'restore [vaisseau] 'nd=1:nsp=1:nom$="alien" case 4 'restore [explosions] 'nd=1:nsp=1:nom$="alien" end select next 'start the keyboard checking event #w.g "when mouseMove [track]" #w.g "when leftButtonUp [fire]" #w.g "setfocus" ' now start the timer to repeatedly call the drawing loop timer 56, [drawingloop] 'timer 500, [drawingloop] 'now sit and wait wait [creer_bmpsprite] #w.g, "down" 'préparer le fond du sprite #w.g, "backcolor black;color black" #w.g, "place 0 0 ; boxfilled 8 16" 'dessiner les zones du sprite 'on converti les valeurs décimales des datas en valeurs binaires 'le 1 sera un point visible, le 0 sera un point invisible du sprite for ligne=0 to 7 read decimal colonne=0 for exposant=7 to 0 step -1 'détermination des bits p=2^exposant if decimal>=p then bit=1 decimal=decimal-p else bit=0 end if 'en fonction de la valeur du bit if bit=0 then 'le point est transparent 'il apparait en blanc sur le masque 'et en noir sur le sprite colmask$="white" colspr$="black" else 'le point est opaque 'il apparait en noir sur le masque 'et dans la couleur du sprite sur le sprite colmask$="black" colspr$=couleur$ end if 'placer le point #w.g, "color ";colmask$ #w.g, "set ";colonne;" ";ligne #w.g, "color ";colspr$ #w.g, "set ";colonne;" ";ligne+8 'print bit; colonne=colonne+1 next 'print next 'créer le bitmap du sprite #w.g, "getbmp lebitmap 0 0 ";colonne;" ";ligne+8 #w.g, "up" return [drawingloop] for n = 1 to 6 'move the bullets if bullet(n,y) = 540 then bullet(n,x) = gunX else bullet(n,y) = bullet(n,y) -10 for c= 1 to 6 'check for collision #w.g, "spritecollides alien";str$(c);" list$" if left$(list$,6) = "bullet" then 'playwave "media\bump.wav",async a = val(mid$(list$,7,1)) bullet(a,x) = gunX bullet(a,y) = base alien(c,y) = 600 list$ = "" end if next if bullet(n,y) < -40 then bullet(n,y) = base : bullet(n,x) = gunX end if 'move the aliens alien(n,x) = alien(n,x) + adir if alien(n,x) < 0 or alien(n,x) > 760 then bounce=1 'place the sprites and draw #w.g "spritexy bullet";str$(n);" ";bullet(n,x);" ";bullet(n,y) #w.g "spritexy alien";str$(n);" ";alien(n,x);" ";alien(n,y) #w.g "drawsprites" next 'if we hit a wall bounce if bounce then bounce = 0 adir = adir * -1 adir = adir*aspeed for m = 1 to 6 alien(m,y) = alien(m,y)+20 next end if wait [fire] 'find the first free bullet and launch it for b = 1 to 6 if bullet(b,y)=base then bullet(b,y) = base-1 exit for end if next wait [track] 'keep the launch pad lined up with the mouse gunX = MouseX-20 wait [quit] timer 0 unloadbmp "bak" unloadbmp "lebitmap" close #w end
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Il faudrait vérifier la validité du sprite avec un getbmp et un bmpsave; comme tu l'a fait (mais apostrophé) pour le sprite vert
Parce que la conception est suffisamment complexe pour qu'il y ait une (des) erreur(s).
Franchement, tu aime bien compliquer les choses, il serait si simple de charger des images.
Dans ta procédure de sortie tu ne unloade que deux bmp.
Il faudrait unloader tous ceux qui ont été créés dans une boucle ou un par un (ou y a un truc qui m'échappe ?)
Ne faut-il pas que chaque sprite ait son propre bmp ? parce que là il n'y a qu'un seul bmp (lebitmap) ?
Purééééée! plus compliqué, tu meurs!
Parce que la conception est suffisamment complexe pour qu'il y ait une (des) erreur(s).
Franchement, tu aime bien compliquer les choses, il serait si simple de charger des images.
Dans ta procédure de sortie tu ne unloade que deux bmp.
Il faudrait unloader tous ceux qui ont été créés dans une boucle ou un par un (ou y a un truc qui m'échappe ?)
Ne faut-il pas que chaque sprite ait son propre bmp ? parce que là il n'y a qu'un seul bmp (lebitmap) ?
Purééééée! plus compliqué, tu meurs!
____________________
Roro
Roro
ça, je te l'accorde, faut reconnaitre que c'est particulièrement abscon. Trop difficile de faire simple 
Une des complexités est de simuler la génération de sprites "façon eighties", ça fait partie du cahier des charges. Aujourd'hui on créé un bitmap avec paint, ou avec des instructions graphiques, on ne définit plus la position des pixels allumés par un bit à 1 dans l'octet codant une ligne du sprite. Tit bout de programme générant les 8 octets définissant un sprite de 8x8 pixels, fournissant la ligne de datas de l'époque :
Code VB :
Citation:
Ne faut-il pas que chaque sprite ait son propre bmp ? parce que là il n'y a qu'un seul bmp (lebitmap) ?
Il n'y a qu'un seul bitmap, parce qu'une fois qu'il a été attribué au sprite "alien" je le redessine pour ensuite l'attribuer au sprite "bullet". peut-être fallait-il que je l'efface entre ces deux définitions de sprites, mais au pire, "bullet" aurait eu le même dessin qu'"alien", et pas un carré gris ?
J'ai simplifié et viré beaucoup de ce qui était boucles, et là ça fonctionne :
Code VB :
J'ai changé l'échelle des sprites pour qu'ils soient bien visible, mais j'ai rien touché aux conditions de collision, et il aurait fallu que je modifie parce que la zone de collision semble démesurée. Mais c'est pas l'objet de la discussion
Edité par Christophe Le 01/11/2020 à 18h57

Une des complexités est de simuler la génération de sprites "façon eighties", ça fait partie du cahier des charges. Aujourd'hui on créé un bitmap avec paint, ou avec des instructions graphiques, on ne définit plus la position des pixels allumés par un bit à 1 dans l'octet codant une ligne du sprite. Tit bout de programme générant les 8 octets définissant un sprite de 8x8 pixels, fournissant la ligne de datas de l'époque :
Code VB :
'convertir une grille 8x8 bits en octets data "00011000" data "00100100" data "00100100" data "00011000" data "10011001" data "10111101" data "11100111" data "11000011" print "data "; for a=0 to 7 read a$ tr=128 valeur=0 for b=1 to 8 b$=mid$(a$,b,1) if b$="1" then valeur=valeur+tr tr=tr/2 next if a=7 then print valeur else print valeur;","; next
Citation:
Ne faut-il pas que chaque sprite ait son propre bmp ? parce que là il n'y a qu'un seul bmp (lebitmap) ?
Il n'y a qu'un seul bitmap, parce qu'une fois qu'il a été attribué au sprite "alien" je le redessine pour ensuite l'attribuer au sprite "bullet". peut-être fallait-il que je l'efface entre ces deux définitions de sprites, mais au pire, "bullet" aurait eu le même dessin qu'"alien", et pas un carré gris ?
J'ai simplifié et viré beaucoup de ce qui était boucles, et là ça fonctionne :
Code VB :
'nomainwin [aliens] data 60,66,126,129,195,60,66,129 [missiles] data 24,60,126,24,24,60,102,195 [vaisseau] data 24,36,36,24,153,189,231,195 [explosion] 'data WindowWidth = 800 WindowHeight = 600 UpperLeftX = (DisplayWidth-WindowWidth)/2 UpperLeftY = (DisplayHeight-WindowHeight)/2 graphicbox #w.g, 0,0,800,600 open "Invaders" for graphics_nf_nsb as #w #w "trapclose [quit]" [initialise] x = 1 y = 2 dim bullet(6,2) 'bullet x,y dim alien(6,2) 'alien x,y adir = -10 'alien direction aspeed = 1.01 'alien acceleration base = 540 'base line of gun 'box background for i = 0 to 150 j = 256 - i #w.g "down ; backcolor ";j/3;" ";j/3;" ";j/3 #w.g "color ";j/3;" ";j/3;" ";j/3 #w.g "place ";i;" ";i #w.g "boxfilled ";800 - i;" ";600 - i next 'stars for n = 1 to 100 c = int(rnd(0)*255) #w.g "color ";c;" ";c;" ";c;" ; set ";150+rnd(0)*500;" ";150+rnd(0)*300 next #w.g "getbmp bak 0 0 800 600" #w.g "background bak"; ' ***** créer le bitmap des aliens ****** 'préparer le fond du sprite #w.g, "down" #w.g, "backcolor black;color black" #w.g, "place 0 0 ; boxfilled 8 16" 'dessiner les zones du sprite 'on converti les valeurs décimales des datas en valeurs binaires 'le 1 sera un point visible, le 0 sera un point invisible du sprite restore [aliens] for ligne=0 to 7 read decimal colonne=0 for exposant=7 to 0 step -1 'détermination des bits p=2^exposant if decimal>=p then bit=1 decimal=decimal-p else bit=0 end if 'en fonction de la valeur du bit if bit=0 then 'le point est transparent 'il apparait en blanc sur le masque 'et en noir sur le sprite colmask$="white" colspr$="black" else 'le point est opaque 'il apparait en noir sur le masque 'et dans la couleur du sprite sur le sprite colmask$="black" colspr$="red" end if 'placer le point #w.g, "color ";colmask$ #w.g, "set ";colonne;" ";ligne #w.g, "color ";colspr$ #w.g, "set ";colonne;" ";ligne+8 'print bit; colonne=colonne+1 next 'print next 'créer le bitmap du sprite #w.g, "getbmp alien 0 0 ";colonne;" ";ligne+8 #w.g, "up" ' ***** créer le bitmap des missiles ****** #w.g, "down" #w.g, "backcolor black;color black" #w.g, "place 0 0 ; boxfilled 8 16" restore [missiles] for ligne=0 to 7 read decimal colonne=0 for exposant=7 to 0 step -1 'détermination des bits p=2^exposant if decimal>=p then bit=1 decimal=decimal-p else bit=0 end if 'en fonction de la valeur du bit if bit=0 then 'le point est transparent 'il apparait en blanc sur le masque 'et en noir sur le sprite colmask$="white" colspr$="black" else 'le point est opaque 'il apparait en noir sur le masque 'et dans la couleur du sprite sur le sprite colmask$="black" colspr$="yellow" end if 'placer le point #w.g, "color ";colmask$ #w.g, "set ";colonne;" ";ligne #w.g, "color ";colspr$ #w.g, "set ";colonne;" ";ligne+8 'print bit; colonne=colonne+1 next 'print next 'créer le bitmap du sprite #w.g, "getbmp bullet 0 0 ";colonne;" ";ligne+8 #w.g, "up" ' ***** appliquer les bitmaps aux sprites ****** for n = 1 to 6 bullet(n,x) = 400 bullet(n,y) = base alien(n,x) = 200+70*n alien(n,y) = 0 #w.g "addsprite alien";str$(n);" alien" #w.g "addsprite bullet";str$(n);" bullet" next 'start the keyboard checking event #w.g "when mouseMove [track]" #w.g "when leftButtonUp [fire]" #w.g "setfocus" ' now start the timer to repeatedly call the drawing loop timer 56, [drawingloop] 'timer 500, [drawingloop] 'now sit and wait wait [drawingloop] for n = 1 to 6 'move the bullets if bullet(n,y) = 540 then bullet(n,x) = gunX else bullet(n,y) = bullet(n,y) -10 for c= 1 to 6 'check for collision #w.g, "spritecollides alien";str$(c);" list$" if left$(list$,6) = "bullet" then 'playwave "media\bump.wav",async a = val(mid$(list$,7,1)) bullet(a,x) = gunX bullet(a,y) = base alien(c,y) = 600 list$ = "" end if next if bullet(n,y) < -40 then bullet(n,y) = base : bullet(n,x) = gunX end if 'move the aliens alien(n,x) = alien(n,x) + adir if alien(n,x) < 0 or alien(n,x) > 760 then bounce=1 'place the sprites and draw #w.g "spritexy bullet";str$(n);" ";bullet(n,x);" ";bullet(n,y) #w.g "spritescale bullet";str$(n);" 300" #w.g "spritexy alien";str$(n);" ";alien(n,x);" ";alien(n,y) #w.g "spritescale alien";str$(n);" 300" #w.g "drawsprites" next 'if we hit a wall bounce if bounce then bounce = 0 adir = adir * -1 adir = adir*aspeed for m = 1 to 6 alien(m,y) = alien(m,y)+20 next end if wait [fire] 'find the first free bullet and launch it for b = 1 to 6 if bullet(b,y)=base then bullet(b,y) = base-1 exit for end if next wait [track] 'keep the launch pad lined up with the mouse gunX = MouseX-20 wait [quit] timer 0 unloadbmp "bak" unloadbmp "alien" unloadbmp "bullet" close #w end
J'ai changé l'échelle des sprites pour qu'ils soient bien visible, mais j'ai rien touché aux conditions de collision, et il aurait fallu que je modifie parce que la zone de collision semble démesurée. Mais c'est pas l'objet de la discussion
Edité par Christophe Le 01/11/2020 à 18h57
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Bravo ! ça marche; mais quel boulot de ouf.
Si tu veux que ton soft fonctionnel aille dans la bibliothèque, il faudrait que tu lui donne un titre significatif (star shooter ?), et que tu supprime le code non fonctionnel. du premier msg.
De même, il serait judicieux de le sortir de "Débutant" pour le mettre dans "Général" ou "Jeux".
Tu fais comme tu veux, pas de hachoir pour cette fois.
Si tu veux que ton soft fonctionnel aille dans la bibliothèque, il faudrait que tu lui donne un titre significatif (star shooter ?), et que tu supprime le code non fonctionnel. du premier msg.
De même, il serait judicieux de le sortir de "Débutant" pour le mettre dans "Général" ou "Jeux".
Tu fais comme tu veux, pas de hachoir pour cette fois.
____________________
Roro
Roro
Mais j'espère bien ! 
Effectivement, quand on voit le premier listing, on se dit que le positionnement dans "Débutant" est une erreur, mais la question de savoir pourquoi le sprite affiche un carré gris sans rapport avec le dessin qu'il devrait afficher, reste une question de débutant, à laquelle je n'ai pas la réponse
Le premier listing était le point de départ, il n'y a pas de raison de le modifier. Il montre d'ailleurs aux débutants l'exemple à ne pas suivre, parce que j'ai voulu intégrer une routine qui n'était pas du tout au point, dans un programme que je n'étais pas certain de bien comprendre. Les deux ensemble, ça pouvait pas aller bien loin. Erreur typique de débutant, ou de rêveur qui part la fleur au fusil et la tête pleine d'idées.
Cette routine devait gérer la création de bitmaps pour les attribuer à des sprites, et se complique singulièrement si on veut des sprites avec un seul bitmap, et d'autres avec plusieurs bitmaps pour faire des animations. La bonne démarche aurait été de l'étudier à part, et de l'intégrer dans le programme principal seulement quand elle était au point. Et je sais à peine créer un sprite...
Le second listing n'est pas un programme terminé, mais juste une étape qui a permis de supprimer le sac de nœuds du premier. Maintenant, on cherche à étendre ses capacités à une cinquantaine de sprites au lieu de deux, et ce sera une autre étape, pour laquelle je vais probablement ouvrir une discussion dans "jeux".
Sur ce coup là j'ai vraiment agi à la légère. Je laisse la discussion ouverte pour poster des éléments plus en rapport avec son titre et sa description.

Effectivement, quand on voit le premier listing, on se dit que le positionnement dans "Débutant" est une erreur, mais la question de savoir pourquoi le sprite affiche un carré gris sans rapport avec le dessin qu'il devrait afficher, reste une question de débutant, à laquelle je n'ai pas la réponse

Le premier listing était le point de départ, il n'y a pas de raison de le modifier. Il montre d'ailleurs aux débutants l'exemple à ne pas suivre, parce que j'ai voulu intégrer une routine qui n'était pas du tout au point, dans un programme que je n'étais pas certain de bien comprendre. Les deux ensemble, ça pouvait pas aller bien loin. Erreur typique de débutant, ou de rêveur qui part la fleur au fusil et la tête pleine d'idées.
Cette routine devait gérer la création de bitmaps pour les attribuer à des sprites, et se complique singulièrement si on veut des sprites avec un seul bitmap, et d'autres avec plusieurs bitmaps pour faire des animations. La bonne démarche aurait été de l'étudier à part, et de l'intégrer dans le programme principal seulement quand elle était au point. Et je sais à peine créer un sprite...
Le second listing n'est pas un programme terminé, mais juste une étape qui a permis de supprimer le sac de nœuds du premier. Maintenant, on cherche à étendre ses capacités à une cinquantaine de sprites au lieu de deux, et ce sera une autre étape, pour laquelle je vais probablement ouvrir une discussion dans "jeux".
Sur ce coup là j'ai vraiment agi à la légère. Je laisse la discussion ouverte pour poster des éléments plus en rapport avec son titre et sa description.
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Dans ton premier code, à la ligne 75 (Notepad++) tu fait "addsprite" sans avoir fait "getbmp" et donc: pas de bmp en mémoire et pas sprite
Ok pour laisser les choses en l'état.
Ok pour laisser les choses en l'état.
____________________
Roro
Roro
Ayé, j'ai compris où je ne comprenais pas :
je dessine mon sprite
je transforme ce dessin en bitmap : getbmp x1 y1 x2 y2 <nom du bitmap>
j'attribue ce bitmap au sprite : addsprite <nom du sprite> <nom du bitmap>
Jusque là, c'est du classique.
Là où je me gourais, c'est que je pensais qu'une fois qu'on avait attribué le bitmap au sprite, celui-ci n'avait plus besoin du bitmap, et qu'on pouvait donc redéfinir ce bitmap pour l'attribuer à d'autres sprites, par exemple au sprite suivant dans une boucle. En fait, avec addsprite, on n'attribue pas le bitmap au sprite, on établit seulement un lien entre le bitmap et le sprite, et si on casse ce lien, le sprite devient le carré gris.
Dans le premier listing, une boucle crée le dessin des sprites en utilisant le même nom pour le bitmap pour tous les sprites : le sprite des missiles était correctement défini parce qu'étant le dernier créé, il avait toujours le lien avec son bitmap, alors que celui des aliens ne l'avait plus.
CQFD...
je dessine mon sprite
je transforme ce dessin en bitmap : getbmp x1 y1 x2 y2 <nom du bitmap>
j'attribue ce bitmap au sprite : addsprite <nom du sprite> <nom du bitmap>
Jusque là, c'est du classique.
Là où je me gourais, c'est que je pensais qu'une fois qu'on avait attribué le bitmap au sprite, celui-ci n'avait plus besoin du bitmap, et qu'on pouvait donc redéfinir ce bitmap pour l'attribuer à d'autres sprites, par exemple au sprite suivant dans une boucle. En fait, avec addsprite, on n'attribue pas le bitmap au sprite, on établit seulement un lien entre le bitmap et le sprite, et si on casse ce lien, le sprite devient le carré gris.
Dans le premier listing, une boucle crée le dessin des sprites en utilisant le même nom pour le bitmap pour tous les sprites : le sprite des missiles était correctement défini parce qu'étant le dernier créé, il avait toujours le lien avec son bitmap, alors que celui des aliens ne l'avait plus.
CQFD...
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
On doit pouvoir faire dans une boucle, mais il faut changer le nom du bmp pour chaque sprite.
Avec "word$()"; j'aime bien word$()
Avec "word$()"; j'aime bien word$()
____________________
Roro
Roro
Je sais
Je l'utilise aussi, à l'occasion
Pour les bitmaps d'ici, on peut aussi utiliser un tableau. J'ai procédé comme ça dans cette nouvelle version de l'usine à gaz présentée ici, et ça marche aussi (disons que je n'ai pas vu de messages d'erreur
.
Cette fois-ci j'ai simplifié le listing pour que son déroulement soit le plus linéaire possible : des étapes simples, qui se répètent et qui sont faciles à dépanner : ça permet de se concentrer sur la suite du programme.
Quand le jeu fonctionnera, il sera toujours temps d'ajouter des cohortes de sprites, et de recourir à des ruses de sioux pour les gérer facilement - si d'aventure on souhaite les laisser modifiables - et éviter de se retrouver avec trois kilomètres de listing...

Pour les bitmaps d'ici, on peut aussi utiliser un tableau. J'ai procédé comme ça dans cette nouvelle version de l'usine à gaz présentée ici, et ça marche aussi (disons que je n'ai pas vu de messages d'erreur

Cette fois-ci j'ai simplifié le listing pour que son déroulement soit le plus linéaire possible : des étapes simples, qui se répètent et qui sont faciles à dépanner : ça permet de se concentrer sur la suite du programme.
Quand le jeu fonctionnera, il sera toujours temps d'ajouter des cohortes de sprites, et de recourir à des ruses de sioux pour les gérer facilement - si d'aventure on souhaite les laisser modifiables - et éviter de se retrouver avec trois kilomètres de listing...
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Perso, j'aurais fait deux topics;
Un: "Confection de bmp et de sprites à la main façon sixties".
Et un: "Shoot em"; avec des bmp d'importation. (pour y voir plus clair)
Un: "Confection de bmp et de sprites à la main façon sixties".
Et un: "Shoot em"; avec des bmp d'importation. (pour y voir plus clair)
____________________
Roro
Roro
Non, eighties 
Il y avait effectivement du pour et du contre. Mais j'ai considéré que c'était le jeu en entier (programme et affichage) qui aurait fait un voyage dans le temps, puis revu mes prétentions à la baisse, ce qui devrait permettre d'arriver à un programme relativement simple mais opérationnel.
Mais tant qu'on est pas arrivé au bout

Il y avait effectivement du pour et du contre. Mais j'ai considéré que c'était le jeu en entier (programme et affichage) qui aurait fait un voyage dans le temps, puis revu mes prétentions à la baisse, ce qui devrait permettre d'arriver à un programme relativement simple mais opérationnel.
Mais tant qu'on est pas arrivé au bout

____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
• Index
1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie