Posté le 27/09/2016 18:20
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 210 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 27/09/2016 18:31 | #
Je t'invite à lire le tutoriel sur le multi drawstat, plus rapide que le drawstat normal : http://www.planet-casio.com/Fr/forums/topic14097-1-Tutoriel-Le-Multi-DrawStat.html
Ensuite pour faire un moteur de déplacement ben suffit d'avoir deux variables A et B (utilise pas X et Y, c'est déconseillé dans les fonctions graphiques) que tu incrémentes ou décrémentes suivant la flèche pressée.
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 27/09/2016 19:17 | #
Regarde d'abord le Super DrawStat plutôt. Pour un moteur de déplacement, il suffit d'afficher san arrêt une image à certaines coordonnées (il ne faut pas utiliser les variables X et Y, Zezombye à raison) et de modifier ces coordonnées quand tu appuies sur des touches. En toute logique ton image va se déplacer. Voilà dans les grandes lignes
Citer : Posté le 27/09/2016 19:59 | #
Ok merci pour vos réponses
Citer : Posté le 28/09/2016 11:19 | #
J'avais également réalisé deux vidéos tutoriels sur les bases d'un moteur de déplacements :
- en mode texte
- en mode graphique
Par contre, je n'aborde pas le DrawStat dans le mode graphique. En espérant néanmoins que les réponses apportées t'aideront dans ton projet
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 16/07/2017 19:49 | #
Mise à jour :
Bonsoir,
pour la création de mon petit jeu, j'utilise le super drawstat afin d'afficher le sprite du joueur et PNJ.
Mais mes 2 problèmes sont :
-Mon sprite est confondu avec le background, donc y a-t-il un moyen d'éteindre les pixels à l'intérieur du sprite ?
-Je sais que le super drawstat est rapide, mais niveau moteur de déplacement, je galère un peu. J'ai géré ma fenêtre pour faire en sorte qu'il y ai 4x7 cases de 16x16pixels chacune, donc j'agrémente et décrémente les listes (contenant les coordonnées de chaque pixels) de 16 à chaque. Le problème étant que l'image se redessine à chaque mouvement et le mécanisme de déplacement et détection des touches est également aussi lent.
Merci d'avance pour vos réponses.
Citer : Posté le 16/07/2017 20:16 | #
Effacer les pixels blancs du personnage... non. À moins de le faire à coup de PxlOff, ce que je ne te souhaite pas.
Quand à la vitesse du programme, encore une fois, pas de magie. Il faut optimiser chaque ligne consciencieusement, ce qui est un travail long et pas toujours gratifiant. On atteint vite les limites du Basic ; encore que les programmeurs assez malins arrivent bien à les contourner pour obtenir des résultats bluffants (#Ne0tux). Un travail rigoureux est de mise pour ça.
Citer : Posté le 16/07/2017 20:17 | #
1: nope, la seule manière d'éteindre un pixel est avec PxlOff qui est assez lent (ou alors faut genre 5 pixels à éteindre). Une solution serait d'utiliser Text pour afficher des caractères qui simulent un sprite.
2: poste ton code, sinon on ne pourra pas t'aider
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 17/07/2017 11:26 | # | Fichier joint
Voici le dossier du projet, il contient le programme (utilisant la liste 1 et 2) et le background (PICT1).
Citer : Posté le 17/07/2017 12:34 | # | Fichier joint
Voila le .zip
Up
Citer : Posté le 21/07/2017 21:01 | # | Fichier joint
Bonsoir,
j'ai une erreur de dimension, savez-vous pourquoi ?
Merci d'avance
Citer : Posté le 21/07/2017 23:31 | #
Tu peux être un poil plus précis sur le contexte ?
Lancement, suite à une action, etc
Citer : Posté le 21/07/2017 23:33 | #
Problème au niveau de la génération du sprite.
Prog "~SPRITE"
ViewWindow 1,127,0,1,63,0,1,132,1
BG-None
S-WindMan
Do:Do:GetKey→G
G-Plot
Graph(X,Y)=(List 1[T],List 2[T])
LpWhile Not G
LpWhile G!=47
Citer : Posté le 22/07/2017 07:40 | #
Elle est marrante ta boucle, t'as deux conditions incluses l'une dans l'autre. (Not G ⇒ G = 0 ⇒ G ≠ 47)
T'as pas l'impression que « si Not G ou G≠47, je reviens au début de la boucle » se simplifie du coup ?
Citer : Posté le 22/07/2017 11:42 | #
Erreur résolu : ViewWindow 1,127,0,1,63,0,1,45,1
Au lieu de ViewWindow 1,127,0,1,63,0,1,132,1
Ajouté le 27/07/2017 à 12:02 :
Bonjour,
mon projet avance bien pas à pas, mais me revoilà coincé : j'ai un problème avec les collisions. Pour commencer, sachant que l'écran a une taille de 63x127pixels, j'ai divisé cet écran en 6x12 cases de 10x10 pixels. Pour l'instant j'ai créé le sprite du joueur et généré un PNJ.
Pour la collision, ma première idée était de créer une matrice regroupant les coordonnées d'un point se trouvant au milieu de chaques cases :
{72,2→Dim Mat M
Do:-5→X:Y+10→Y
Do:D+1→D:X+10→X
X→Mat M[D,1
Y→Mat M[D,2
LpWhile X≠115
LpWhile D≠72
Puis de dire au programme que les listes regroupant les coordonnées du sprite du joueur ne doivent pas renter en contact avec un point dans la matrice, exemple :
Mais ça ne marche pas.
Ensuite j'avais testé en utilisant les coordonnées, les coordonnées du joueur ne doivent pas interféré avec celles du PNJ, ça ne fonctionne toujours pas.
Quel technique utilisez-vous ?
Merci d'avance
Citer : Posté le 27/07/2017 12:31 | #
La technique la plus commune consiste à représenter l'espace dans la matrice :
Ensuite, on place dans chaque case une valeur qui indique si la zone est accessible ou non, et parfois même le sprite qu'il faut y dessiner. Au moment de se déplacer, on calcule les coordonnées d'arrivée et on annule le mouvement si la case correspondante dans la matrice de l'espace est occupée.
Citer : Posté le 27/07/2017 13:49 | #
{6,12→Dim Mat M
Lbl 1:GetKey→G
C→Mat M[Y,X
G=27⇒X+1→X
G=28⇒Y-1→Y
G=38⇒X-1→X
G=37⇒Y+1→Y
X→V:Y→W
X=V Or Y=W⇒0→Mat M[W,V
Goto 1
Je sais que j'y suis presque mais qu'est-ce qui cloche ?
Citer : Posté le 27/07/2017 13:55 | #
T'as pas compris tout à fait le principe. La matrice M doit être préremplie avec les données de la map et surtout pas modifiée ensuite. Et tu dois tester ensuite la valeur à chaque déplacement, pour vérifier avant de te déplacer que tu ne rentres pas dans une case occupée.
Citer : Posté le 27/07/2017 14:02 | #
X=V Or Y=W⇒0→Mat M[W,V
Il y a un problème ici en plus. Tu donnes la valeur de X et Y dans V et W. Donc X=V Or Y=W est inutile puisque toujours vrai
Citer : Posté le 27/07/2017 19:54 | #
Je ne comprend pas quels données je doit mettre dans ma matrice. Les données de la map, ok, mais comment je doit procéder ?
Citer : Posté le 27/07/2017 20:08 | #
Tu définis un nombre pour chaque cas, par exemple 0 = vide, 1 = mur simple, 2 = pnj, 3 = case où est le joueur.
Dans ce cas, quand tu déplaces le sprite, il te suffit de regarder si le point de la matrice est à 0, si ce n'est pas le cas tu ne déplaces pas le joueur.
Ecrivez vos programmes basic sur PC avec BIDE