Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Aide jeu de plateforme
Kev_dfocrew Hors ligne Membre Points: 21 Défis: 0 Message

Aide jeu de plateforme

Posté le 01/05/2014 17:34

Salut à tous je programme sur 35+ j'aimerais discuter de plusieurs points. J'ai fait quelques jeux (d'une qualité médiocre je précise) et je voudrais savoir tout d'abord comment faire des animations simples, par exemple un personnages ou les jambes bougent lorsqu'on le déplace.
Ensuite, je voudrais faire un jeu de plateformes classique ou le but est de sauter au dessus de trous sans tomber, je n'ai pas commencé a le programmer. Mon personnage sera un Ɵ mais comment faire des plateformes "solides" ? Je n'arrive pas a faire sauter mon personnage car avec une boucle for on ne peut pas partir d'un nombre jusqua un nombre plus petit
merci de m'aider



1, 2, 3 Suivante
Lephenixnoir En ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 01/05/2014 17:47 | #


Pour la boucle For, soit tu mets "Step -1" au bout, ce qui te permet de diminuer ton nombre, soit tu mets
For 0->I To 20
20-I
Next

Ce qui te permet d'obtenir le résultat voulu.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 01/05/2014 17:49 | #


Tu peut faire des boucles for qui enlèvent:
For 10->A To 0 Step -1
// blabla
Next

Les jambes du personnage qui bougent en Basic tu vas avoir un peu de mal par contre pour ce qui est de faire un jeu de plateforme ca se tente
Pour les plateformes solides j'ai pas trop compris. Tu veux faire en sorte que ça traverse pas en gros ?
Kev_dfocrew Hors ligne Membre Points: 21 Défis: 0 Message

Citer : Posté le 02/05/2014 12:37 | #


Merci a vous (je ne savais pas pour Step -1 ), ce probleme etant reglé il me reste celui des plateformes.
Theprog a écrit :
Pour les plateformes solides j'ai pas trop compris. Tu veux faire en sorte que ça traverse pas en gros ?
C'est ca j'ai essayé avec des PxlTest mais c'est nul ca ne marche pas, mon perso ne peut sauter que sur une ligne de meme hauteur.
Lephenixnoir En ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 02/05/2014 12:39 | #


En fait il faut stocker des données dans la mémoire.
Par exemple, si il y a un sol, il est à 0.
Donc, un moment de dessiner ton personnage:
Y>1=>Y-1->Y

De manière plus générale, tu peux utiliser des matrices.
En revanche, tu ne feras pas une grille de 127*63 (si tu le fais en mode graphique), ça ne servira à rien et prendra beaucoup de mémoire.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kev_dfocrew Hors ligne Membre Points: 21 Défis: 0 Message

Citer : Posté le 02/05/2014 13:17 | #


Ah c'est pas mal ! (J'ai mit du temps a comprendre ) Par exemple
If X>50
Then Y>1=>Y-1->Y
IfEnd

Dautre part est il possible de faire un encadrement type "If 10<A<20" ? ca m'aiderait bien
Lephenixnoir En ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 02/05/2014 13:19 | #


Non, tu dois mettre
A>10 And A<20

Ce sont les opérateurs logiques (bon, ne t'embête pas avec ça, utilise juste Or et And ). Tu peux les trouver dans [OPTN]->[LOGIC].
Dans ton exemple, il y a du sol jusqu'à X=50.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Remiweb Hors ligne Membre de CreativeCalc Points: 1040 Défis: 32 Message

Citer : Posté le 02/05/2014 13:19 | #


Pour l’encadrement fait le en deux conditions :
If A>10 and A<20
Then ...

Edit : grillé
Tweaks : ||||| ||||
Kev_dfocrew Hors ligne Membre Points: 21 Défis: 0 Message

Citer : Posté le 02/05/2014 13:22 | #


Oui je connais ca (enfin ceux dont tu parles)
Et bien il y en a de 50 a 127 (nb max de pixels) non ? Car X représente l'abscisse.
Remiweb Hors ligne Membre de CreativeCalc Points: 1040 Défis: 32 Message

Citer : Posté le 02/05/2014 13:25 | #


C'est 127*63 (utilisables, l'écran fait 128*64)
Tweaks : ||||| ||||
Lephenixnoir En ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 02/05/2014 13:25 | #


C'était juste pour préciser, histoire qu'on se mette d'accord sur la manière dont ça fonctionne.
En revanche tu ne pourras pas faire un niveau intéressant avec juste des conditions.
Utilise plutôt des matrices pour coder le niveau.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kev_dfocrew Hors ligne Membre Points: 21 Défis: 0 Message

Citer : Posté le 02/05/2014 13:29 | #


Remiweb a écrit :
C'est 127*63 (utilisables, l'écran fait 128*64)

Oui ca revient au meme
Je ne suis pas opérationnel avec (j'ai les bases), enfin je ne vois pas exactement comment les utiliser là.. peux tu m'expliquer quelles valeurs sont a entrer dans les matrices pour ce jeu précis ?
Lephenixnoir En ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 02/05/2014 13:32 | #


Un exemple.
[b]Matrice[/b]
0 0 0 0 0 0 0 0 0 0 0 0
0 0 2 2 2 2 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 3 0 0
0 0 1 1 1 1 0 0 0 3 0 0
0 0 0 0 0 0 0 0 0 3 0 0
1 1 1 1 1 0 0 1 1 1 1 1

Avec, par exemple, 1 pour une plateforme (un bloc), 2 pour un bloc avec un point d'interrogation, 3 pour un tuyau, etc...
Je pense que tu vois ce que ça représente. Après, ça c'est pour un niveau de 12*6, à toi de voir quelle taille tu vas lui donner (en hauteur surtout).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kev_dfocrew Hors ligne Membre Points: 21 Défis: 0 Message

Citer : Posté le 02/05/2014 13:33 | #


Et Lephenixnoir j'ai regardé ton space invaders comment puis je faire des graphismes comme les tiens (les planetes) ? Sur 35+ c'est possible ?

Ajouté le 02/05/2014 à 13:35 :
Merci mais chaque case ne représente pas un pixel ? Je n'arrive pas a me représenter ca exactement.
Lephenixnoir En ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 02/05/2014 13:35 | #


Alors, non.
Il faut programmer en C, et sur une 35+ ce n'est pas possible. Par contre tu peux la transformer.
Sinon oui, ce n'est pas du Basic, mais du C.

Ajouté le 02/05/2014 à 13:37 :
Disons que la matrice que je t'ai montrée représente l'écran. Donc une case représente 64/6 (ou 128/12) = 10.6667 pixels.
Mauvaise idée

De manière générale, je te conseille de prendre dans l'autre sens, c'est-à-dire de choisir le nombre de pixels de chaque case. Dans mon jeu, j'en ai mis 8, ce qui donne un écran de 16*8.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kev_dfocrew Hors ligne Membre Points: 21 Défis: 0 Message

Citer : Posté le 02/05/2014 16:04 | #


Mais a part la création de la matrice, quand est ce que tu l'utilise ? C'est flou
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 02/05/2014 16:21 | #


Il faut l'utiliser lorsque le personnage se déplace. Avant de "valider" son mouvement, il faut vérifier que l'endroit où il souhaite se déplacer soit vide, donc que la case de la matrice correspondante soit égale à 0.
Lephenixnoir En ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 02/05/2014 16:42 | #


Supposons pourl l'instant que ton personnage a toujours des coordonnées entières (il n'est jamais à cheval sur deux cases), sinon on ne va jamais s'en sortir. Ses coordonnées dans la matrice sont [Y,X] représentées comme suit.

[b]Matrice[/b]
[b]+------------------------- X[/b]
[b]| [/b]
[b]| [/b]    2 2 2 2
[b]| [/b]      X           3
[b]| [/b]    1 1 1 1       3
[b]| [/b]                  3
[b]Y [/b]1 1 1 1 1     1 1 1 1 1

Disons que ton personnage, c'est le X. Ici, ses coordonées sont [4,3].
Si tu veux aller à droite, tu vas augmenter sa coordonée en X de 1, donc tu obtiendras [Y,X+1], soit [4,4].
Donc
Getkey=27 And Mat A[Y,X+1]=>X+1->X

27 correspond à la direction droite. L'expression "Mat A[Y,X+1]", puisqu'elle ne contient pas d'opérateur comparatif, singnifie simplement "Si Mat A[Y,X+1] existe".
On dit qu'une valeu existe si elle est non nulle. Ici, c'est le cas de toutes les cases vides.



Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kev_dfocrew Hors ligne Membre Points: 21 Défis: 0 Message

Citer : Posté le 02/05/2014 16:53 | #


Ah merci positon je comprends mieux ! Par contre je n'ai pas comprit ceci : "Disons que la matrice que je t'ai montrée représente l'écran. Donc une case représente 64/6 (ou 128/12) = 10.6667 pixels.
Mauvaise idée 
De manière générale, je te conseille de prendre dans l'autre sens, c'est-à-dire de choisir le nombre de pixels de chaque case. Dans mon jeu, j'en ai mis 8, ce qui donne un écran de 16*8."
Cela veut il dire que quand je déplacerai mon perso, il bougera case par case (et non pixel par pixel comme a présent) ? Mais si je dois "valider" comme tu dis a chaque case, ca ne risque pas d'être long et de ralentir ?
Lephenixnoir En ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 02/05/2014 16:58 | #


En fait, j'ai fait pour aller vite une grille de 6*12. Or si elle remplit tout ton écran, ça fait 10.6667 pixels par case de la grille... ce qui est impossible.
Prenons plutôt du 8*8.

Écran
+---+---+---+---+---+---+---+---+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ... jusqu'à 16
+---+---+---+---+---+---+---+---+
... 8 fois

Est-ce que tu vois ce que je veux dire ? La case 1 occupe les pixels 1 à 8, la case 2 les pixels 9 à 16, la 3 les 17 à 24, etc...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kev_dfocrew Hors ligne Membre Points: 21 Défis: 0 Message

Citer : Posté le 02/05/2014 17:32 | #


"La case 1 occupe les pixels 1 à 8"
Une "case" ce n'est pas qu'une ligne de pixel ? Il y a une hauteur non ?
1, 2, 3 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 233 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