Posté le 21/02/2016 11:58
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 198 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 21/02/2016 11:59 | #
Tu peux coder ta map dans une matrice de 21 par 7, donner à chaque bloc un id et faire correspondre un événement à cet id
Par exemple tu codes ton mur 1 et quand tu veux te déplacer, tu regardes si la case ou tu vas aller n'est pas un mur. Si oui tu ne bouges pas, si non tu bouges.
Un beat them all pour les CPC 19
Un jeu de Tank multijoueur en version graphique
Un jeu de boxe rigolo
Le moteur de combat épique d'un RPG
soccer physics : Un jeu de foot totalement wtf !
Survie 1 & 2 te laisseras-tu attraper par la méchante IA ?
Séquestrez les tous avec Catch'em all !
Joué à la calcultarice et pécher ? Facile !
Battle un système de combat dément !!
Débombe pas tout à fait un démineur
Mon mario pour le concours des 10 ans de PC
Casio jump un doodle jump pas comme les autres !
Rush four your life : tu cours ou tu meurs
Cookie clicker ! More cookies MOOORE !
Move et esquive : bouge pour esquiver les ennemis !
Guitar Hero !! Let's rock !
INVASION : Au secours on se fait envahir !
Un devine nombre entièrement customisable (mon 1er jeu)
Un outil pour dessiner des sprites en super drawstat et qui vous le compile pour vous donner un code utilisable dans vos programmes
Un super programme de dessin bourré de trucs funcs
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
Citer : Posté le 21/02/2016 12:01 | #
Voilà au passage une vidéo de Totoyo
Citer : Posté le 21/02/2016 12:02 | #
Ah j'avais pas vu que c'était en mode graphique merci Lephe
Un beat them all pour les CPC 19
Un jeu de Tank multijoueur en version graphique
Un jeu de boxe rigolo
Le moteur de combat épique d'un RPG
soccer physics : Un jeu de foot totalement wtf !
Survie 1 & 2 te laisseras-tu attraper par la méchante IA ?
Séquestrez les tous avec Catch'em all !
Joué à la calcultarice et pécher ? Facile !
Battle un système de combat dément !!
Débombe pas tout à fait un démineur
Mon mario pour le concours des 10 ans de PC
Casio jump un doodle jump pas comme les autres !
Rush four your life : tu cours ou tu meurs
Cookie clicker ! More cookies MOOORE !
Move et esquive : bouge pour esquiver les ennemis !
Guitar Hero !! Let's rock !
INVASION : Au secours on se fait envahir !
Un devine nombre entièrement customisable (mon 1er jeu)
Un outil pour dessiner des sprites en super drawstat et qui vous le compile pour vous donner un code utilisable dans vos programmes
Un super programme de dessin bourré de trucs funcs
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
Citer : Posté le 21/02/2016 12:02 | #
Juste au passage vu que personne n'a l'air de l'avoir fait remarquer, on appelle ça des "collisions", ce mot t'aidera sûrement à trouver plus d'informations
Citer : Posté le 21/02/2016 12:12 | #
Merci beaucoup pour votre aide, je vous tiens au courant
Ajouté le 21/02/2016 à 13:44 :
Donc voilà, j'ai bien compris le fonctionnement de la matrice, mais voilà le problème :
1->Mat A[2,7
Locate 7,2,"#"
If Mat A[Y,X]=1
Then 7->X:2->Y
IfEnd
Cela marche avec des variables comme A,X... Mais pas avec des valeurs comme 2 ou 7.
Citer : Posté le 21/02/2016 13:49 | #
Je ne comprends pas le code.
A quoi correspond le dièse # ? Un mur ?
Si le joueur tombe sur le #, tu lui assignes les coordonnées de ce mur. Donc, le joueur se retrouve sur le mur, et la collision n'est pas gérée.
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 21/02/2016 13:55 | #
Le # correspond à un mur et j'aimerais que la collision soit géré.
Citer : Posté le 21/02/2016 13:56 | #
Est-ce qu'il ne serait pas envisageable de créer un programme de base pour les moteurs de collisions des débutants, comme un sous-programme qui affiche une map et un autre qui teste les collisions ? En mode Locate et Graphique ?
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".
Citer : Posté le 21/02/2016 13:58 | #
Je n'utilise que le mode texte, je ne suis pas très doué avec le mode graphique.
Citer : Posté le 21/02/2016 13:59 | #
Ce que tu dois faire doit ressembler plutôt à ceci :
Calculer les coordonnées de la nouvelle position (ajouter ou retirer 1 en x ou y)
Récupérer la valeur dans la matrice pour cette position
Si la valeur est 0
Effectuer le déplacement
Le tout dans une grand boucle
Citer : Posté le 21/02/2016 14:08 | #
C'est plus long non ?
Citer : Posté le 21/02/2016 14:17 | #
C'est la manière normale de le faire : de toute façon il faut bien permettre à l'utilisateur de se déplacer case par case
Citer : Posté le 21/02/2016 14:55 | #
Il n'y aurai pas une méthode plus simple ?
Citer : Posté le 21/02/2016 14:58 | #
Il y a
Then
//Déplacer
IfEnd
C'est comme ça que je fais
Les guerriers sombres: Venez tuer des monstres pour déjouer un très gros complot dans un jeu en basic mais très puissant
The Legend Of Link un add-in où on contrôlera des monstres....
Si vous avez des sprites 12*16 de monstres de zelda, vous êtes les bienvenus (Par MP )
Citer : Posté le 21/02/2016 14:59 | #
La proposition de Lephenixnoir est la plus simple et reprend celle dans ma vidéo. Tu as tous les outils en main pour concevoir ton moteur de déplacements.
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 21/02/2016 15:01 | #
Tu sauvegardes les coordonnés de ton perso dans 2 autres variables.
Tu fais le déplacement comme tu veux.
Tu regardes si la case ou tu es est un mur. Si oui les coordonnés de ton perso redeviennent celle sauvegardée. Si non tu passes à la suite.
Un beat them all pour les CPC 19
Un jeu de Tank multijoueur en version graphique
Un jeu de boxe rigolo
Le moteur de combat épique d'un RPG
soccer physics : Un jeu de foot totalement wtf !
Survie 1 & 2 te laisseras-tu attraper par la méchante IA ?
Séquestrez les tous avec Catch'em all !
Joué à la calcultarice et pécher ? Facile !
Battle un système de combat dément !!
Débombe pas tout à fait un démineur
Mon mario pour le concours des 10 ans de PC
Casio jump un doodle jump pas comme les autres !
Rush four your life : tu cours ou tu meurs
Cookie clicker ! More cookies MOOORE !
Move et esquive : bouge pour esquiver les ennemis !
Guitar Hero !! Let's rock !
INVASION : Au secours on se fait envahir !
Un devine nombre entièrement customisable (mon 1er jeu)
Un outil pour dessiner des sprites en super drawstat et qui vous le compile pour vous donner un code utilisable dans vos programmes
Un super programme de dessin bourré de trucs funcs
Sortir une version finale de Tankasio
Bien m'améliorer en C parce que pour l'instant c'est pas jojo
Une ou plusieurs idées qui mûrissent petit à petit
Citer : Posté le 21/02/2016 15:37 | #
En reprenant ton bout de code et en le complétant par ce qu'on te dit de faire ça donnerait ça :
{7,21->Dim Mat A
1->Mat A[2,7
Locate 7,2,"#"
1→X:1→Y //Coordonnées initiales du joueur
Locate 1,1,"θ" //θ représente le joueur à l'écran
//Boucle principale :
Do
//On attend que le joueur presse une touche
Do
Getkey→G
LpWhile G=0
//On sauvegarde les anciennes coordonnées du joueur :
X→A:Y→B
//On effectue le déplacement selon la touche pressée :
G=27⇒X+1→X
G=38⇒X-1→X
G=28⇒Y-1→Y
G=37⇒Y+1→Y
//On regarde alors, après déplacement, si le joueur s'est retrouvé dans un mur :
If Mat A[Y,X]≠0
Then A→X:B→Y //S'il est effectivement dans un mur on annule le déplacement
//Sinon on met à jour l'écran :
Else Locate A,B," " //On efface le personnage aux anciennes coordonnées
Locate X,Y,"θ" //On le réaffiche aux nouvelles
IfEnd
LpWhile //Fin de la boucle principale
Ce code devrait faire ce qu'on t'as expliqué plus haut.
On va sauvegarder les coordonnées du joueur avant tout changement. Puis on le laisse se déplacer librement, sans s'occuper des murs.
Et c'est là qu'intervient la dernière condition. Si après avoir fait ce déplacement le personnage est dans un mur (Mat A[Y,X]≠0), c'est que le mouvement qu'il a essayé de faire n'est pas autorisé.
Donc ont l'annule tout simplement en remettant le joueur là ou il était juste avant, grâce à la sauvegarde qu'on avait fait des coordonnées.
Une autre solution serait de vérifier selon la touche que le joueur presse s'il est face à un mur.
Par exemple pour la droite :
On va simplement vérifier si ce qui se trouve à droite, donc en (X+1,Y), est bien du vide.
Mais comme dit plus haut on utilise la 1ere solution en principe
Citer : Posté le 21/02/2016 15:59 | #
Merci beaucoup, je met ça en pratique tout de suite.
Citer : Posté le 21/02/2016 16:04 | #
Je pense qu'au lieu de mettre ≠ 0 il vaut mieux mettre <1 comme ça on peut mettre un événement-1
Les guerriers sombres: Venez tuer des monstres pour déjouer un très gros complot dans un jeu en basic mais très puissant
The Legend Of Link un add-in où on contrôlera des monstres....
Si vous avez des sprites 12*16 de monstres de zelda, vous êtes les bienvenus (Par MP )
Citer : Posté le 21/02/2016 16:06 | #
Je pense qu'au lieu de mettre ≠ 0 il vaut mieux mettre <1 comme ça on peut mettre un événement-1
Ben c'est pas le but. On va se contenter des événements 2, 3, 4...