un petit essai sous QB64
4 participants
Page 1 sur 1
un petit essai sous QB64
Salut à tous !
Et bonne année à tous le monde, bien sûr !
Voilà, en suivant (je les remercie par ailleurs) les conseils de Vetea, F.L, et merci aussi indirectement à kevryu (dont le code source de son jeu tribute m'a pas mal aidé), je me suis lancé aujourd'hui dans l'aventure qb64 !
Bon pour l'instant, il n'y a rien de transcendant, mais j'espère continuer à avancer et à progresser dans les jours(mois, années) qui viennent.
Prochainement, j'aimerais arriver à afficher les différents états du bonhomme (image du bonhomme vers la gauche quand on appuie sur la flèche gauche etc...), pourquoi pas réussir à les animer. Bon j'ai aussi pas mal galérer sur le saut (qui ne fonctionne pas), pour l'instant on peut juste dire que l'on peut faire voler le bonhomme (je n'ai pas réussi à le faire redescendre)... Mais bon c'est un début.
Je vous fait partager le fichier (enfin normalement, c'est la première fois que j'utilise dropbox), ainsi que le code source, si vous voyez des choses à améliorer, n'hésitez pas
https://www.dropbox.com/s/nby95jq0lrivqoz/test_sprite.zip
Et bonne année à tous le monde, bien sûr !
Voilà, en suivant (je les remercie par ailleurs) les conseils de Vetea, F.L, et merci aussi indirectement à kevryu (dont le code source de son jeu tribute m'a pas mal aidé), je me suis lancé aujourd'hui dans l'aventure qb64 !
Bon pour l'instant, il n'y a rien de transcendant, mais j'espère continuer à avancer et à progresser dans les jours(mois, années) qui viennent.
Prochainement, j'aimerais arriver à afficher les différents états du bonhomme (image du bonhomme vers la gauche quand on appuie sur la flèche gauche etc...), pourquoi pas réussir à les animer. Bon j'ai aussi pas mal galérer sur le saut (qui ne fonctionne pas), pour l'instant on peut juste dire que l'on peut faire voler le bonhomme (je n'ai pas réussi à le faire redescendre)... Mais bon c'est un début.
Je vous fait partager le fichier (enfin normalement, c'est la première fois que j'utilise dropbox), ainsi que le code source, si vous voyez des choses à améliorer, n'hésitez pas
https://www.dropbox.com/s/nby95jq0lrivqoz/test_sprite.zip
Re: un petit essai sous QB64
Salut et bravo pour ce premier jet !!!!!
C'est déjà très bien comme résultat et tu as déjà le soucis du détail avec choix menu, détection limite tableau, etc ... Sans compter les commentaires du code !!
Bravo !!
Quelques petits conseils :
Dans ton SUB Niveau1 :
1/ Le "CLS" dans ta boucle principale d'affichage n'est pas nécessaire ! En plus cela coute un peu en ressources machine ...
2/ Ne charge pas tes ressources dans la boucle !!! Car le programme va sans cesse charger tes sprites en mémoire 60 fois par seconde !! Cout en ressources machine, en mémoire et pas vraiment logique !!
Charge les au préalable avant ta boucle principale ... Elles seront toujours en mémoire tant que le programme est en cours d'exécution ! :)
3/ le CALL n'est pas vraiment nécessaire. Pour appeler un sous programme il suffit de le nommer dans ton programme : CALL niveau1 <=> niveau1 !
Après, je te laisse chercher pour ton histoire de saut descendant... Tu vas trouver tout seul comme un grand !! Tu es prêt de trouver la solution, puisque 3/4 du travail est fait ...
En ce qui concerne un saut en cours de déplacement, pense à une trajectoire parabolique !
Il y a diverses méthode pour aborder ce grand classique dans la conception de jeu d'arcade ... A toi de trouver la solution qui te convient et surtout, trouver par toi même en essayant des méthodes 100% Grostonton !!
Sors des sentiers classiques des règles classiques et déjà toute faire ... si c'est pour les copier sans rien comprendre, ça sert à rien !
Essais par toi même ! Cela prend plus de temps, mais la satisfaction au final en sera supérieure à tout point de vue !
Je suis content pour ta nouvelle aventure vidéo ludique !! Tel Walter Smitty tu vas vivre tes rêves au travers d'un univers dont les seuls limites seront ton imagination et ta technique ...
A bientôt ami du sud ! :)
C'est déjà très bien comme résultat et tu as déjà le soucis du détail avec choix menu, détection limite tableau, etc ... Sans compter les commentaires du code !!
Bravo !!
Quelques petits conseils :
Dans ton SUB Niveau1 :
- Code:
SUB niveau1
DO
CLS 'pas indispensable !
_LIMIT 60 'on limite l'affichage … 60 im/s
chargement_ressource_graphique 'on charge nos ressources graphiques
affichage_niveau1
limitejeu
_DISPLAY 'on raffraichit l'ecran
'********** deplacement vers la droite ****
IF _KEYDOWN(19712) THEN ' fleche droite enfonc‚e
coordpersoX = coordpersoX + 4
END IF
'********* deplacement vers la gauche ****
IF _KEYDOWN(19200) THEN ' fleche gauche enfonc‚e
coordpersoX = coordpersoX - 4
END IF
'********* saut ****
IF _KEYDOWN(32) THEN
coordpersoY = coordpersoY - 4
END IF
IF _KEYDOWN(27) THEN SYSTEM
LOOP
1/ Le "CLS" dans ta boucle principale d'affichage n'est pas nécessaire ! En plus cela coute un peu en ressources machine ...
2/ Ne charge pas tes ressources dans la boucle !!! Car le programme va sans cesse charger tes sprites en mémoire 60 fois par seconde !! Cout en ressources machine, en mémoire et pas vraiment logique !!
Charge les au préalable avant ta boucle principale ... Elles seront toujours en mémoire tant que le programme est en cours d'exécution ! :)
3/ le CALL n'est pas vraiment nécessaire. Pour appeler un sous programme il suffit de le nommer dans ton programme : CALL niveau1 <=> niveau1 !
Après, je te laisse chercher pour ton histoire de saut descendant... Tu vas trouver tout seul comme un grand !! Tu es prêt de trouver la solution, puisque 3/4 du travail est fait ...
En ce qui concerne un saut en cours de déplacement, pense à une trajectoire parabolique !
Il y a diverses méthode pour aborder ce grand classique dans la conception de jeu d'arcade ... A toi de trouver la solution qui te convient et surtout, trouver par toi même en essayant des méthodes 100% Grostonton !!
Sors des sentiers classiques des règles classiques et déjà toute faire ... si c'est pour les copier sans rien comprendre, ça sert à rien !
Essais par toi même ! Cela prend plus de temps, mais la satisfaction au final en sera supérieure à tout point de vue !
Je suis content pour ta nouvelle aventure vidéo ludique !! Tel Walter Smitty tu vas vivre tes rêves au travers d'un univers dont les seuls limites seront ton imagination et ta technique ...
A bientôt ami du sud ! :)
Invité- Invité
Re: un petit essai sous QB64
Salut Vetea et encore merci pour tes conseils avisés !
Ha oui effectivement, je ne le savais pas. C'est très bon à savoir ça !
Pour le saut descendant, je pensais partir sur une boucle de type do...loop
Mais ça ne le fait pas, le programme plante ( se bloque ?)
En fait je fais avec mes maigres connaissances, et en essayant de raisonner "verbalement" du style : "fais monter le sprite de tant de pixels, jusqu'à ce que le sprite atteigne cette hauteur." et ensuite :"fais descendre le sprite de tant de pixels jusqu'à ce que le sprite atteigne telle hauteur
Ca fait quelques heures que je bloque dessus, mais bon je ne me décourage pas, il doit y avoir quelquechose que je ne fais pas comme il faut lol.
Je suis bien d'accord avec toi, mais il a bien fallu que je regarde certains code sources, histoire de voir comment vous utilisiez les SUB etc...
En cherchant un peu pour des algorithmes de saut, je suis tombé sur des formules mathématiques insaisissables pour moi à l'heure actuelle, donc je ne les ai pas suivis, parce que comme tu dis, j'aimerais arriver à faire ce saut en comprenant ce que je fais. Mais c'est pas gagné lol
A bientôt
Vetea a écrit:2/ Ne charge pas tes ressources dans la boucle !!! Car le programme va sans cesse charger tes sprites en mémoire 60 fois par seconde !! Cout en ressources machine, en mémoire et pas vraiment logique !!
Charge les au préalable avant ta boucle principale ... Elles seront toujours en mémoire tant que le programme est en cours d'exécution ! :)
Ha oui effectivement, je ne le savais pas. C'est très bon à savoir ça !
Pour le saut descendant, je pensais partir sur une boucle de type do...loop
Mais ça ne le fait pas, le programme plante ( se bloque ?)
En fait je fais avec mes maigres connaissances, et en essayant de raisonner "verbalement" du style : "fais monter le sprite de tant de pixels, jusqu'à ce que le sprite atteigne cette hauteur." et ensuite :"fais descendre le sprite de tant de pixels jusqu'à ce que le sprite atteigne telle hauteur
Ca fait quelques heures que je bloque dessus, mais bon je ne me décourage pas, il doit y avoir quelquechose que je ne fais pas comme il faut lol.
Sors des sentiers classiques des règles classiques et déjà toute faire ... si c'est pour les copier sans rien comprendre, ça sert à rien !
Essais par toi même ! Cela prend plus de temps, mais la satisfaction au final en sera supérieure à tout point de vue !
Je suis bien d'accord avec toi, mais il a bien fallu que je regarde certains code sources, histoire de voir comment vous utilisiez les SUB etc...
En cherchant un peu pour des algorithmes de saut, je suis tombé sur des formules mathématiques insaisissables pour moi à l'heure actuelle, donc je ne les ai pas suivis, parce que comme tu dis, j'aimerais arriver à faire ce saut en comprenant ce que je fais. Mais c'est pas gagné lol
A bientôt
Re: un petit essai sous QB64
Bonjour je compte me mettre à ce langage.
Maitrisant parfaitement le php/jv depuis plusieurs années , aurais je du mal à comprendre celui ci ?
Maitrisant parfaitement le php/jv depuis plusieurs années , aurais je du mal à comprendre celui ci ?
J.Fauche- Patient en incubation
- Nombre de messages : 28
Age : 49
Localisation : Paris
Date d'inscription : 01/01/2014
Re: un petit essai sous QB64
Salut J.Fauche, si tu maîtrises le php depuis plusieurs années, tu dois avoir acquis une bonne logique de programmation, alors à part le fait de t'habituer à une autre syntaxe (celle de QB64), je ne pense pas que tu rencontres beaucoup de soucis !
Re: un petit essai sous QB64
Une petite mise à jour
l'état du bonhomme change en fonction de sa direction, et enfin, ENFIN il peut sauter, j'ai vraiment beaucoup insister tout seul pour y arriver, mais j'ai quand même du prendre exemple sur un code en purebasic pour y arriver.
Prochaine étape, toujours si j'y arrive, essayer d'animer le perso, lui donner 2 ou 3 étapes d'animations en fonction des directions, j'ai un peu regardé vite fait comment je pourrais faire, mais je n'ai pas (pas encore) réussi à trouver comment afficher (avec _putimage) plusieurs images à la suite quand une touche est appuyée.
https://www.dropbox.com/s/83movbuits1p9sm/test04_01_14.zip
l'état du bonhomme change en fonction de sa direction, et enfin, ENFIN il peut sauter, j'ai vraiment beaucoup insister tout seul pour y arriver, mais j'ai quand même du prendre exemple sur un code en purebasic pour y arriver.
Prochaine étape, toujours si j'y arrive, essayer d'animer le perso, lui donner 2 ou 3 étapes d'animations en fonction des directions, j'ai un peu regardé vite fait comment je pourrais faire, mais je n'ai pas (pas encore) réussi à trouver comment afficher (avec _putimage) plusieurs images à la suite quand une touche est appuyée.
https://www.dropbox.com/s/83movbuits1p9sm/test04_01_14.zip
Re: un petit essai sous QB64
Excellent travail cette mise à jour !!!
Les sauts sont très bien réalisés et le changement de direction du sprite correct !
Il ne te manque plus qu'à comprendre comment gérer les frames d'animation maintenant ...
Allez courage !! Tu es sur la bonne voie !!!
Les sauts sont très bien réalisés et le changement de direction du sprite correct !
Il ne te manque plus qu'à comprendre comment gérer les frames d'animation maintenant ...
Allez courage !! Tu es sur la bonne voie !!!
Invité- Invité
Re: un petit essai sous QB64
Merci pour ton soutien Vetea, ça fait vraiment plaisir !
Oui, c'est vrai que ça n'a pas l'air compliqué dis comme ça lol. Mais pour quelqu'un comme moi dont c'est la véritable première approche de programmation graphique, c'est vraiment pas de la tarte lol.
Il ne te manque plus qu'à comprendre comment gérer les frames d'animation maintenant ...
Oui, c'est vrai que ça n'a pas l'air compliqué dis comme ça lol. Mais pour quelqu'un comme moi dont c'est la véritable première approche de programmation graphique, c'est vraiment pas de la tarte lol.
Re: un petit essai sous QB64
Je t'en pris, ça me fait plaisir de participer à la découverte de la programmation !!
C'est une super expérience et on se s'ennuie jamais !! Ca vaut tous les Sudoku du monde, ça fait travailler les méninges comme pas possible en plus de stimuler l'imagination ...
Pour l'animation, j'utilise des compteurs ... C'est à dire une variable qui va aider à gérer les frames d'animation.
Il faut au préalable donner le nombre de frame maxi par mouvement. Moi je me suis cantonné à 3 frame.
Quand la frame maxi est atteinte, on décrémente les frames d'animation, une fois la frame minimale atteinte, on l'incrémente à nouveau ...
1 -- > 2 --> 3 --> 2 --> 1 --> 2 --> 3 ... Etc ...
Voici un exemple d'une de mes routines d'animation :
( La variable Spritetableau(ID).Tempoanimation donne le tempo et la vitesse de l'animation générale du sprite. )
Maintenant il faut réussir à créer un "objet" sprite avec ses caractéristiques ... Les variables de TYPE .... END TYPE sont excellentes en ce sens ... Elles permettent, par la suite, à créer des variables génériques qui hériteront de leurs attributs :
TYPE Sprite
CoordX as INTEGER
CoordY as INTEGER
FORCE as INTEGER
TILE as LONG
TILEDroite as LONG
etc ...
END TYPE
DIM SPRITETABLEAU(100) as Sprite 'La variable SPRITETABLEAU est un tableau de 100 unités qui héritent des attributs de Sprite
DIM Projectile(50) as Sprite 'La variable Projectile est un tableau de 50 unités qui héritent aussi des attributs de Sprite
etc ...
Bon courage l'ami !!
C'est une super expérience et on se s'ennuie jamais !! Ca vaut tous les Sudoku du monde, ça fait travailler les méninges comme pas possible en plus de stimuler l'imagination ...
Pour l'animation, j'utilise des compteurs ... C'est à dire une variable qui va aider à gérer les frames d'animation.
Il faut au préalable donner le nombre de frame maxi par mouvement. Moi je me suis cantonné à 3 frame.
Quand la frame maxi est atteinte, on décrémente les frames d'animation, une fois la frame minimale atteinte, on l'incrémente à nouveau ...
1 -- > 2 --> 3 --> 2 --> 1 --> 2 --> 3 ... Etc ...
Voici un exemple d'une de mes routines d'animation :
- Code:
IF SpriteTableau(ID).TempoAnimation >= 5 THEN
SpriteTableau(ID).Frame = SpriteTableau(ID).Frame + 1 * SpriteTableau(ID).SensAnimation 'Routine principale de l'animation
IF SpriteTableau(ID).Frame > SpriteTableau(ID).FrameMax THEN
SpriteTableau(ID).Frame = SpriteTableau(ID).FrameMax
SpriteTableau(ID).SensAnimation = -1 'Si l'on arrive … la fin des frame maxi alors on d‚cr‚mente le sens de l'animation
END IF
IF SpriteTableau(ID).Frame < 1 THEN 'Quand on arrive … la frame 1 on change … nouveau le sens de l'animation
SpriteTableau(ID).Frame = 1
SpriteTableau(ID).SensAnimation = 1
END IF
SpriteTableau(ID).TempoAnimation = 0
END IF
( La variable Spritetableau(ID).Tempoanimation donne le tempo et la vitesse de l'animation générale du sprite. )
Maintenant il faut réussir à créer un "objet" sprite avec ses caractéristiques ... Les variables de TYPE .... END TYPE sont excellentes en ce sens ... Elles permettent, par la suite, à créer des variables génériques qui hériteront de leurs attributs :
TYPE Sprite
CoordX as INTEGER
CoordY as INTEGER
FORCE as INTEGER
TILE as LONG
TILEDroite as LONG
etc ...
END TYPE
DIM SPRITETABLEAU(100) as Sprite 'La variable SPRITETABLEAU est un tableau de 100 unités qui héritent des attributs de Sprite
DIM Projectile(50) as Sprite 'La variable Projectile est un tableau de 50 unités qui héritent aussi des attributs de Sprite
etc ...
Bon courage l'ami !!
Invité- Invité
Re: un petit essai sous QB64
pour les anim il y a un truc simple :
dans ta boucle 60img/sec tu crées un compteur qui tourne en boucle
anim=anim+1:if anim=60 then anim=1
et si ton sprite a trois frames par seconde tu divises anim par 20 (car 60/3=20)
_putimage x,y,dessinsprite(int(anim/20))+1)
C'est tout :) En 2 lignes c'est reglé. On emballe, on passe à autre chose
(il faut bien sur avant tout creer dessinsprite(1 à 3)
dans ta boucle 60img/sec tu crées un compteur qui tourne en boucle
anim=anim+1:if anim=60 then anim=1
et si ton sprite a trois frames par seconde tu divises anim par 20 (car 60/3=20)
_putimage x,y,dessinsprite(int(anim/20))+1)
C'est tout :) En 2 lignes c'est reglé. On emballe, on passe à autre chose
(il faut bien sur avant tout creer dessinsprite(1 à 3)
Dernière édition par drfloyd le Mer 22 Jan 2014 - 7:30, édité 1 fois
_______________________________________________________
Re: un petit essai sous QB64
Vetea a écrit:Alors ça avance un peu ???
Hélas pas des masses, je ne vais pas raconter ma vie, mais c'est un peu dur de trouver du vrai temps libre pour moi en ce moment, surtout que Touko et moi on doit finir Chuck...
Merci le Doc pour ton astuce, je n'ai pas trop le temps de m'y pencher de suite, là il faut que j'aille bosser, mais dès que j'ai un peu de temps, je regarderais ça de plus près.
Re: un petit essai sous QB64
Ahahaha merde dire que j'ai raté ça
félicitations pour ton premier essai en prog
félicitations pour ton premier essai en prog
Invité- Invité
Re: un petit essai sous QB64
TOUKO a écrit:félicitations pour ton premier essai en prog
Merci Touko, mais bon ne sois pas triste, tu n'as pas loupé grand chose non plus lol. Et comme dit plus haut, pour l'instant c'est en pause...
Re: un petit essai sous QB64
cool un noob comme moi
je suis très honoré que tu ais utilisé un de mes codes sources pour ton inspiration !! Mais je fais comme vetea a dit, j'essaie de trouver par moi-même en m'aidant de codes sources deja établis (d'ailleurs Vetea j'ai toujours rien compris à tes tableaux de frame ! ni à leur création ni à leur déclaration... pour mémoire quand j'ai laissé ma GRANDE pause commencé je planchais dessus, il faut que je m'y remette)
En tout cas bravo grostonton pour tes débuts et persévère (quitte à laisser du temps passer avant de trouver le temps de programmer)
je suis très honoré que tu ais utilisé un de mes codes sources pour ton inspiration !! Mais je fais comme vetea a dit, j'essaie de trouver par moi-même en m'aidant de codes sources deja établis (d'ailleurs Vetea j'ai toujours rien compris à tes tableaux de frame ! ni à leur création ni à leur déclaration... pour mémoire quand j'ai laissé ma GRANDE pause commencé je planchais dessus, il faut que je m'y remette)
En tout cas bravo grostonton pour tes débuts et persévère (quitte à laisser du temps passer avant de trouver le temps de programmer)
kevryu- Patient en incubation
- Nombre de messages : 85
Age : 42
Localisation : valenciennes
Date d'inscription : 18/09/2011
Re: un petit essai sous QB64
kevryu a écrit:cool un noob comme moi
Ha oui ça je peux dire que je suis un grand débutant lol.
Ben écoute, ton code source était assez court, et il traitait exactement de ce que j'avais envie de faire, déplacement de sprite etc... donc c'est moi qui te remercie de l'avoir partagé avec nous !
Je fais au mieux pour trouver par moi même, mais au bout d'un moment, quand ça ne veut pas marcher, ça me gonfle sévère, donc je zieute un peu partout et j'essaie d'adapter.
En tout cas bravo grostonton pour tes débuts et persévère (quitte à laisser du temps passer avant de trouver le temps de programmer)
Merci, ben contrairement au doc ou à d'autres, pour moi programmer ce n'est pas une seconde nature, je suis plus à l'aise dans tous ce qui est dessin. Donc c'est pour ça que je ne peux pas me faire des sessions de 20/30 minutes de prog, c'est juste le temps qu'il me faut pour me remémorer où j'en étais du code lol
Sujets similaires
» Débuts en prog... Un petit casse-tête en QB64
» [ QB64 ] - Les Tutos de Papi Commando ! ( Compilé sous Windows )
» Fin du QB64 ?
» Arret retro / vente collection sega petit à petit, Pak MD II, access
» QB64 is... BACK !!!!
» [ QB64 ] - Les Tutos de Papi Commando ! ( Compilé sous Windows )
» Fin du QB64 ?
» Arret retro / vente collection sega petit à petit, Pak MD II, access
» QB64 is... BACK !!!!
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum