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

Quelques questions java pour jeu 2D

Dam979
Dam979
Niveau 7
15 septembre 2013 à 01:04:11

Bonjours à tous,

je suis actuellement en train de créer un jeu en java pour le fun et pour en apprendre un peu plus sur ce langage.
Il m'a semblé bon de commencer par un jeu en 2D. Un petit shooter vu du haut.
C'est la première fois que je me lance dans un projet de ce genre et j'ai donc quelques questions "de novice".

Tout d'abord, j'ai un problème de collisions.
Pour le moment, j'ai fait des hit-box via la classe "Rectangle".
Le problème est que j'aimerai faire un vaisseau rond pour commencer (les formes plus complexes viendront peut être plus tard).
Y-a-t'il des méthodes plus simples pour les collisions ou d'autres classes plus adaptées ?

Mon second problème est l'utilisation de la souris.
Pour le moment, mes tirs se déclenchent grâce aux touches directionnelles (utilisation de keypressed keyReleased).
J'aimerai changer cela et faire que mon vaisseau tire là ou je clique avec ma souris.
J'arrive à obtenir les coordonnées du clic de la souris mais pour calculer la trajectoire, c'est une autres histoire.
Je me demandais donc si je devais trouver une formule utilisant les coordonnées de mon clic et celles de mon vaisseau ou si il y avait une méthode plus simple.

Tant que j'y suis, je vais quand même poser une autre question même si je pense que la réponse est trouvable sur le net plus facilement qu'en postant sur un forum (on ne sait jamais).
Je me demandais comment faire pour créer une sorte de monde autour de mon vaisseau et que mon vaisseau reste donc au centre de l’écran.
Pour le moment, j'ai mis une résolution fixe et pour faire bouger mon vaisseau, je joue avec les coordonnées.
Je me dis que pour régler le problème, il faut jouer sur les coordonnées de l'arrière plan et non plus sur celle de mon personnage mais ça me semble assez fastidieux.

Enfin, je vais juste demander des conseils pour les images.
Je n'ai pas envie de prendre du tout fait, j'aimerai créer tout moi même (de toute façon, je serai surement le seul à tester le jeu donc même si c'est moche, je m'en fou, chacun ses goûts).
Je compte utiliser GIMP.
Est-ce une bonne idée ? Y-a-t'il des tutos pour créer des sprites et fond d'écran ? Y-a-t'il un autre programme pour créer tout cela de manière plus intuitive ?

Merci d'avoir lu mon pavé et merci aussi pour vos futures réponses (s'il y en a).

caelacanthe
caelacanthe
Niveau 10
15 septembre 2013 à 01:11:30

"Le problème est que j'aimerai faire un vaisseau rond pour commencer (les formes plus complexes viendront peut être plus tard).
Y-a-t'il des méthodes plus simples pour les collisions ou d'autres classes plus adaptées ? "

:d) A la limite, déterminer une collision avec un cercle est plus simple qu'une boîte englobante... Mais généralement, on se contente d'assembler des rectangles, des cercles, des polygones convexes et des bien-nommées capsules pour reproduire vaguement la forme de l'objet :hap:

"Je me demandais donc si je devais trouver une formule utilisant les coordonnées de mon clic et celles de mon vaisseau ou si il y avait une méthode plus simple."

:d) Oui, genre, coordonnées du clic moins les coordonnées du vaisseau pour obtenir le vecteur directeur du tir :pf:

"Je me dis que pour régler le problème, il faut jouer sur les coordonnées de l'arrière plan et non plus sur celle de mon personnage mais ça me semble assez fastidieux."

:d) Il suffit en théorie (pour faire simple et pas vraiment optimisé :hap: ) d'appliquer la direction inverse de celle, supposée, du vaisseau, au paysage. :doute:

LECROU
LECROU
Niveau 10
15 septembre 2013 à 02:12:28

Salut,
je suppose que tu utilises libGdx ?

Pour la collision avec un cercle je crois qu'il y a une fonction overlap ou quelque chose comme ça pour checker les collisions dans la lib. Regarde la doc.

Pour le tir de ton vaisseau, le mieux serait de créer un vecteur avec les coordonnées que tu récupères au clic de la souris.
Sinon tu peux aussi faire avancer le tir en x et y jusqu'à ce qu'il atteigne la position récupérée lors du clic de la souris. C'est quand même moins opti, mais ça fonctionne. Genre :

while(xTir < xPos) xTir += vitesseTir * delta
Pareil pour y.

Sinon au niveau du graphisme y'a énormément de tutos sur internet sur tout et n'importe quoi et si t'es motivé tu peux apprendre assez rapidement. Le mieux ça reste photoshop (surtout si tu ne comptes pas vendre ton jeu) mais Gimp est très bien aussi.

Bonne chance :hap:

caelacanthe
caelacanthe
Niveau 10
15 septembre 2013 à 02:44:54

"Pour la collision avec un cercle je crois qu'il y a une fonction overlap ou quelque chose comme ça pour checker les collisions dans la lib. Regarde la doc."

:d) Chaud, vous ne savez rien faire sans appeler une fonction toute prête? surtout pour un truc simple comme ça ~ :hap: ~

Dam979
Dam979
Niveau 7
15 septembre 2013 à 02:50:43

Je sais pas trop ce que c'est libGdx (merde.. je passe pour un gros noob). Tout ce que je peux dire c'est que j'utilise eclipse et les librairies awt et swing.

Ou sinon, merci pour les réponses. J'essayerai ça tanto, il est un peu tard là. Je reviendrai poser des questions sur ce topic si j'ai encore des problèmes.

Alistesios
Alistesios
Niveau 7
15 septembre 2013 à 22:51:58

Wow, tu veux dire que tu programmes "from scratch" ? Càd avec un tableau d'int représentant les pixels? Si c'est le cas et que ton projet n'est pas encore tres avancé, il est encore temps de faire machine arrière et d'utiliser une librairie graphique déjà toute faite, comme par exemple Slick2D ou LibGDX. Enfin c'est mon avis, c'est beucoup plus simple.

Ensuite pour les collisions, il existe un excellent tutoriel. Cherche "theorie des collisions" sur Google.

Enfin pour l'histoire du vaisseau, je te propose de chercher "oyyou sprite look at mouse" sur youtube, c'est du C# soit, mais dedans tu trouveras les formules qui te permettent de faire en sorte d'avoir un angle de rotation qui dirige vers ta souris. C'est en anglais mais concentre toi sur le code et tu comprendras.

Bonne soirée :hap:

[-ArK-]
[-ArK-]
Niveau 30
16 septembre 2013 à 09:06:57

Pas besoin de tableau d'int représentant les pixels avec awt et swing quand même, tu peux très bien charger des images et tout c'est pas le moyen âge non plus :noel:

Mais pour l'avoir fait c'est clair que c'est infiniment plus confortable d'utiliser une librairie pour (qui donnent aussi des métodes toute faite pour les collisions comme ça no prise de tête) :hap:

O876-Ralphy
O876-Ralphy
Niveau 3
18 septembre 2013 à 17:32:23

Salut !

Si tu fais un jeu "from scratch" tu seras amener a faire un peu de math.

Pour des trajectoires de projectile allant d'un point A à un point B (de ton vaisseau jusqu'au point cliqué) tu dois maîtriser les notions de base de la trigonométrie.

tu dois savoir à quoi sert l'arc-tangente, trouver l'équivalent en java de la fonction atan2 (dx, dy) : une fonction qui te donne un angle en fonction de la différence de coordonnées de deux points (vaisseau, et clic). C'est une fonction très utile dans un jeu ou les déplacement ne sont pas forcément parallèle aux bord de l'écran.

En ayant l'angle, et la vitesse du projectile, tu dois créer une trajectoire en faisant varier le x, y de ton projectile avec le sinus, cosinus de cet angle.
x = x + vitesse * sinus(angle)
y = y + vitesse * cosinus(angle)

Je t'ai donné une piste, mais tu trouvera plein de tutoriels sur les forums spécialisés dans la création de jeux.

Bon courage.

N_I_C_S
N_I_C_S
Niveau 5
18 septembre 2013 à 17:56:48

Euh, désolé Raphy, mais tu lui dis de transformer un vecteur en angle pour le re-transformer en vecteur :peur: ...
Il peut suivre son vecteur direction directement :rire2: !

O876-Ralphy
O876-Ralphy
Niveau 3
18 septembre 2013 à 22:08:50

C'est pas faux.

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