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

Java multiple aléatoire

Elmohe
Elmohe
Niveau 9
14 décembre 2013 à 15:06:08

Désolé si ce message existe déjà, j'ai pourtant cherché.

Bonjour ! Je programme un petit jeu en Java et je veux que quand je "randomize un nombre" (int xapple = (int) (Math.random()*250);), je veux qu'il soit un multiple exact de la variable entière "speed". Si quelqu'un a une solution, qu'il me la donne !!!

:merci: d'avance !

MounchMan
MounchMan
Niveau 10
14 décembre 2013 à 15:12:41

int x = speed * (int)(Math.random()*n);

Elmohe
Elmohe
Niveau 9
14 décembre 2013 à 15:40:45

merci !!!
mais maintenant, selon mes variables, c'est

int xapple = speed*(int)(Math.random()*250); ???

Mais là, si je n'ai qu'une zone de 250 pixels, ça marche quand même ou ça le randomize entre 0 et 750 ???

:merci: quand même !

Pseudo supprimé
Pseudo supprimé 14 décembre 2013 à 15:49:42

tu veux un multiple de speed entre 0 et 250 ? retire le modulo.

NPlay
NPlay
Niveau 12
14 décembre 2013 à 15:54:15

Quel modulo ? :noel:

Sinon :

int xapple = speed * (int) (Math.random * (int) (250 / speed));

devrait marcher. :oui:

Elmohe
Elmohe
Niveau 9
14 décembre 2013 à 16:08:06

Oui, ç'aurait été une bonne idée (tu as oublié le () après Math.random), mais ça ne marche que si speed est à 1 (logique) ou 2. Pas 3. Ni 4. J'ai essayé d'enlever le second (int), mais ren à faire. Il faut alors trouver autre chose...

PS : elite_2009, tu parles de quel modulo ?

NPlay
NPlay
Niveau 12
14 décembre 2013 à 16:14:08

En effet pour les parenthèses, j'ai jamais fait de Java de ma vie donc c'est bien possible. :noel:

J'ai testé avec 12, ça marche sans aucun souci.

Ignore le message de elite_2009, il a parlé de modulo dans un autre topic sans que ça n'ait de sens non plus. :noel:

Elmohe
Elmohe
Niveau 9
14 décembre 2013 à 16:21:27

Oui, ça génère ma pomme, mais en fait, mon jeu, c'est un perso qui doit manger les pommes, et sa vitesse, c'est le nombre de pixels dont il se déplace, je veux que ce soit un multiple pour pouvoir prendre la pomme, mais si par contre qqn a une idée de comment faire une action quand il y a une collision (j'ai fait la faute de débutant de mettre if ((xplayer == xapple) && (yplayer == yapple)){
actions
}
, ce qui veut dire que quand le pixel du joueur est exactement sur le pixel de la pomme, ça fait les actions...

Par contre, je n'ai essayé qu'avec 1, 2, 3, et 4.
Seuls 1 et 2 marchaient.

NPlay
NPlay
Niveau 12
14 décembre 2013 à 16:22:14

Par contre tu obtiens pas la dernière valeur valide avec cette fonction. Et tu as le 0.

En supposant que tu as 2 dans speed, si tu veux avoir 0 et 250 comme résultats possibles, tu dois plutôt choisir :
int xapple = speed * (int) (Math.random() * (int) (1 + 250 / speed));

Si tu veux avoir 0, mais pas 250 :
int xapple = speed * (int) (Math.random() * (int) (250 / speed));

Si tu veux avoir 250, mais pas 0 :
int xapple = speed * (int) (1 + Math.random() * (int) (250 / speed));

Si tu ne veux aucun des deux :
int xapple = speed * (int) (1 + Math.random() * (int) (250 / speed - 1));

Pseudo supprimé
Pseudo supprimé 14 décembre 2013 à 16:23:45

si tu soustrais le modulo de xapple avec speed a xapple, la différence est automatiquement un multiple (vers le bas) de speed.

xapple = (int)(Math.random()*250);
xapple = xapple - (xapple % speed);

Elmohe
Elmohe
Niveau 9
14 décembre 2013 à 16:43:50

Pas bête, merci je vais essayer. Je te dis ça tout de suite...

:nonnon: ça marche pas non plus je vais finir par abandonner
:snif: :snif2:

NPlay
NPlay
Niveau 12
14 décembre 2013 à 16:56:26

Pourtant les codes donnés sont bons. :(
Essaie d'afficher xapple, yapple, xplayer et yplayer à l'écran pour voir ce qui cloche ?

Elmohe
Elmohe
Niveau 9
14 décembre 2013 à 17:00:42

J'arrive même pas à afficher score, faut-il que je fasse System.out.println("Texte");, ou
g.drawString("Texte", x, y); ?

Parce que drawString ne marche pas, et si je fais System.out.println, ça ne l'affiche pas sur la fenêtre mais sur Eclipse...

Elmohe
Elmohe
Niveau 9
14 décembre 2013 à 17:02:58

Ah, en fait avec System.out.println, ça marche très bien, mais s j'en met plusieurs, vu que c'est chaque tic, ce sera illisible... Tant pis j'essaye quand même

Elmohe
Elmohe
Niveau 9
14 décembre 2013 à 17:06:44

Si si, je vois les coordonnées de mon perso et de la pomme...
Coordonnées de la pomme (1ère génération) :
x : 207
y : 25
Coordonnées du joueur :
x : 132
y : 40

La vitesse est sur 3.

A ce que je sache, 207 est multiple de 3 (69 * 3), mais 25 n'est est pas un (8.333333333333333333333333333333 * 3)...

Elmohe
Elmohe
Niveau 9
14 décembre 2013 à 17:09:17

Ah, EpicEdit, j'ai réussi a attraper la pomme !
Etrange...

Quelqu'un a une idée de pourquoi ?
Maintenant, est-ce que ça marche la seconde pomme ? Non !
X marchait bien (aligné à 183), mais Y était entre l'intervalle...

:help:

NPlay
NPlay
Niveau 12
14 décembre 2013 à 17:09:27

Ton écran de jeu fait 250 * 250 pixels ? Où est placé le joueur à la première génération ?

yapple n'est pas multiple de 3, mais yplayer non plus. Ceci dit, ce n'est pas gênant, vu qu'ils sont tous les deux congrus (égaux) à 1 modulo 3.

NPlay
NPlay
Niveau 12
14 décembre 2013 à 17:11:09

Normal que tu aies réussi à la chopper, vu que tu as pu te déplacer sans aucun souci jusqu'à l'exacte position de la pomme. :noel:

Elmohe
Elmohe
Niveau 9
14 décembre 2013 à 17:16:25

Ouais, mon écran fait bien 250 px.
Le joueur est à 0,0, mais je peux changer ça.
En fait, mon problème, c'est seulement une question de vitesse.
La vitesse 1 est la plus précise (dans tous les cas on chope la mepo), sauf qu'elle est trop lente.
La vitesse 2 a moins de précision, donc on est pas sûrs de pouvoir attrapper la pomme. etc avec les autres vitesse.

La seule chose qui me gêne c'est que je préférerais que quand le joueur entre en collision avec la pomme, ça la téléporte, mais j'ai pas envie de changer de langage...

NPlay
NPlay
Niveau 12
14 décembre 2013 à 17:21:07

Pourquoi tu ne déplaces pas pixel par pixel, mais en faisant deux fois plus de vérifications par seconde ?

Inutile de changer de langage pour ça. :non:

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