Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » moteur graphique
Inikiwi Hors ligne Membre Points: 428 Défis: 0 Message

moteur graphique

Posté le 25/01/2023 14:29

Bonjour, ces derniers jours j'ai codé un moteur graphique embarqué à base de tuiles composé de sous-tuiles. il comprend un mode affichage, et un éditeur de niveau. actuellement il manque un moteur physique et je suis nul! . si quelqu'un d’expérimenté en a envie je serai ravi.


Acrocasio En ligne Membre Points: 461 Défis: 0 Message

Citer : Posté le 25/01/2023 16:09 | #


Salut, j'ai lue ton message et...
Si j'ai bien compris, tu peux aussi tout simplement le poster en tant que programme Open-Source et exploitable, comme ça c'est bon.

Non ?
Littéralement démon du chat

Jettez un œil à mon journal sur la FX 92+:Ici ici ici ici clique ici

Je soutient Planète Casio
Mb88 En ligne Labélisateur Points: 537 Défis: 0 Message

Citer : Posté le 26/01/2023 16:47 | #


Pour les physics tu peux faire un truc assez simple qui rend bien. Un exemple en C89 :

#define INCXSPEED 2
#define INCYSPEED 4
#define XSPEEDMAX 6
#define YSPEEDMAX 12
#define TILESIZE 16 /* Je considère que les tuiles sont carrées. */

enum{
TOP = 0,
RIGHT,
BOTTOM,
LEFT,
};

void check_collision(int x, int y, int where); /* La fonction qui vérifie si il y a une collision ou pas */

int x = 0, y = 0; /* La position du joueur */
int xspeed = 0, yspeed = 0; /* La vitesse du joueur */

void move_player(void){
/* Pour x */
if(keydown(KEY_LEFT) && xspeed > -XSPEEDMAX) xspeed-=INCXSPEED;
else if(keydown(KEY_RIGHT) && xspeed < XSPEEDMAX) xspeed+=INCXSPEED;
else if(xspeed != 0) xspeed+= xspeed > 0 ? -(INCXSPEED/2) : (INCXSPEED/2);
x+=xspeed;
if(xspeed != 0){
  if(xspeed > 0 && check_collision(x, y, RIGHT)){
   xspeed = 0;
   x = x/TILESIZE*TILESIZE;
  }
  if(xspeed < 0 && check_collision(x, y, LEFT)){
   xspeed = 0;
   x = x/TILESIZE*TILESIZE;
  }
}
/* Pour y */
if(keydown(KEY_SHIFT) && check_collision(x, y, BOTTOM)) yspeed = -YSPEEDMAX;
if(yspeed < YSPEEDMAX) yspeed += INCYSPEED;
y += yspeed;
if(yspeed != 0){
  if(yspeed > 0 && check_collision(x, y, BOTTOM)){
   yspeed = 0;
   y = y/TILESIZE*TILESIZE;
  }
  if(yspeed < 0 && check_collision(x, y, TOP)){
   yspeed = 0;
   y = y/TILESIZE*TILESIZE;
  }
}
}


Bon je l'ai directement codé dans le message donc je ne sais pas si ça marche, mais comme ça t'as au moins le concept.
Inikiwi Hors ligne Membre Points: 428 Défis: 0 Message

Citer : Posté le 27/01/2023 12:26 | #


j'ai déjà fait des moteurs physiques comme ça mais ils étaient tous nuls. aussi nul que le moteur physique de oriam qui est HORRIBLE.
Slyvtt Hors ligne Community Manager Points: 984 Défis: 0 Message

Citer : Posté le 27/01/2023 13:03 | #


Après si tu veux mieux il faut passer à un modèle qui intègre des éléments physiques (gravité, forces, collisions entre objets…) plus réaliste mais aussi plus lourd à coder.

Il existe des librairies telles que box2D qui font déjà.

C’est ce que j’ai commencé dans mon Pinball mais ce n’est pas terminé et utilisable en l’état. Seule la gravité est implémentée.
------------------------------------------------------------------
Le monde est dangereux à vivre ! Non pas tant à cause de ceux qui font le mal, mais à cause de ceux qui regardent et laissent faire.
-------------------------------------------------------------------
Albert Einstein
Mathématicien, Physicien, Scientifique (1879 - 1955)

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 v42 © créé par Neuronix et Muelsaco 2004 - 2023 | Il y a 77 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