CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème de logique (résonnement)

Quintoff
Quintoff
Niveau 10
06 avril 2005 à 12:01:42

Salut,

Voila je cale un peux sur Mon Rpg 2D ( fait en java). Pour que vous comprinniez au mieux, voici quelques informations :

Je fais enffet un moteur de jeux pour les RPG 2D, je le résalise de sorte que n´importe qui, sans notions de programmtion, puisse l´utiliser et créer son jeu. Pour cela, aucune information ne se trouve dans le programme, mais uniquement dans des documents qui servent de resources ( base de données, et fichiers texte ) ...

Je suis aux niveau de la gestion des collisions, mais malheureusment cela ne fonctionne pas.

Voici comment je m´y prend :

Il faut que vous imaginiez la zone de jeu comme une grille ( donc composée de cases ) . Quand le joueur appuye sur une flèche, le personneage se déplace d´une case dans la direction indiquée.

Le principe est donc simple : vérifier si le personnage peux aller das la case voulue :
-si oui => déplacement et animation
-si non => aucune action

J´ai fait de la sorte :

Dans un fichier texte, j´ai 45 lignes ( correspondant aux 45 cases de hauteur de ma map dans l´expemple) et par ligne, 60 valeur ( soit 0, soit 1) séparée par des " ; " qui correspondantes au cases en largeur.

Je met ses information dans un tableau à deux entrées ( tableau à deux entrées ( x et y ) contenant des valeurs de type booleen , true le perso passe, false il ne passe pas ) .

Par exemple, la position du perso dans le repere ( x et y commencant en haut à gauche ) est de 400 pour x et 200 pour y ( il faut savoir qu´une case fait 40X40 ) . Si le joueur appuye sur la fleche gauche, je vérie de cette facon :
-si tableau[x-40][y] == true : okay
-si tableau[x-40][y] == false : passe pas.

Voila le résonnement me parait logique ( mais il y a peut être une erreur) mais ca me donne une erreur, les case ou les perso ne peux pas alle sont légerement décallée et ce n´est pas le nombre exact ( pourant le tableau est bien remplit j´en suis sure).

Merci d´avoir lu ce message et pour votre future réponse :) .

chickendaddy
chickendaddy
Niveau 5
06 avril 2005 à 13:12:49

as tu programmé tout ca dans un même code ou tu as utiliser une formule ( alégorithme)

sinon j´opterais plus pour un truc du genre :

if($x > 0 or $x < 40){ . .. }

car tu semble définir uniquement le point de rencontre de ton objet ( en occurance ton perso). donc selon s´que je comprend que tu as fais c qu´il existe un point de rencontre OUI pour x=40 mais pas x=39, x=38, etc...

à voir...

LGV
LGV
Niveau 28
06 avril 2005 à 14:00:59

comme je le comprends, il parle en tiles, pas en pixels.

l´idee devrait marcher, attaque le truc au debugger pour voir ou ca foire

Ruffi
Ruffi
Niveau 9
06 avril 2005 à 14:19:31

Si tu parle en tile, pourquoi fait tu ableau[x-40][y] ? car si 40 est la taille de tes tiles, dans le tableau a mon avis tu aurai juste a enlever 1

A mon avis c´est pas le principe qui est faux, c´est 2-3 erreure de prog toutes connes ( les plus chiantes a trouver)

Lapintade
Lapintade
Niveau 30
06 avril 2005 à 14:21:34

Si ton tableau correspond a des tiles, c´est x-1 qu´il faut tester ( et non x-40)

Lapintade
Lapintade
Niveau 30
06 avril 2005 à 14:22:02

Ruffi > Ah ben voila t´avais deja repondu :)

dnob700
dnob700
Niveau 10
06 avril 2005 à 17:52:25

j´aurais dit x/40 et y/40

car si ton tableau fait une case par tile il fait [60][40] alors que x peut aller de 0 jusqu´a 2400 donc tu fait tableau[x/40]pour te ramener à uen valeur entre 0 et 60.

bon, je sais pas si j´ai bien compris ce que tu a dit et même si c´est le cas tout ce que ´jai dit est un peu aproximatif, mais l´idée est là.

dnob700
dnob700
Niveau 10
06 avril 2005 à 17:53:23

ah j´ai compris ce que disait les autres, dans ce cas là, tu fait x/40-1 ou ( x-40)/40 c´est pareil bien sur.

Quintoff
Quintoff
Niveau 10
06 avril 2005 à 19:20:18

Merci mais je me suis trompetter dans mon explication :

c´est tableau[(x-40)/60][y/45]

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment