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

Jeu AS3

SuckMyPoney
SuckMyPoney
Niveau 6
13 janvier 2014 à 13:54:29

Bonjour,

je réalise un jeu en AS3 (plus précisément un bubble shooter), et j'ai réussi à placer aléatoirement les boules sur un nombre défini de colonnes et de lignes, de plus, j'ai réussi à faire apparaitre une boule aléatoirement qui pourra être tirée en fonction de la direction de la souris.

Celle-ci s'accroche bien sur les boules (même si la première bug un peu...), mais en fait, je ne vois pas du tout comment réaliser le test de collision qui pourra faire exploser les boules de même couleurs.

Voici mon code de scène principal (là où j'ai un symbole boule avec cinq images clés pour les couleurs):

var xjeu:Number=75;
var yjeu:Number=50;
var largjeu:Number=400;
var hautjeu:Number=300;
var r:Rectangle=new Rectangle(xjeu,yjeu,largjeu,hautjeu);
r.dessiner(this);
var boule:Boule=null;

var boules:Array=new Array();
var nbBoules:Number=0;

function creerBoule() {
boule=new Boule();
boule.calculerLimites(xjeu,yjeu,largjeu,hautjeu);

this.addChild(boule);
boule.x=xjeu+largjeu/2;
boule.y=boule.ymax-20;
boule.scene=this;
var r:Number=Math.random();
if (r<0.2) boule.gotoAndPlay(1);
else if (r<=0.4) boule.gotoAndPlay(2);
else if (r<=0.6) boule.gotoAndPlay(3);
else if (r<=0.8) boule.gotoAndPlay(4);
else if (r<1) boule.gotoAndPlay(5);
boule.bouge=false;
boule.timer=setInterval(boule.bouger,500/50);
stage.addEventListener(MouseEvent.CLICK,boule.dep
art);

}

creerBoule()

var fleche : Fleche = new Fleche();
fleche.x=xjeu+largjeu/2;
fleche.y=boule.ymax-30;
this.addChild(fleche);

stage.addEventListener(MouseEvent.MOUSE_MOVE,flech
e.bouger);

//Boules

var nl:Number=8;
var nc:Number=18;
var qx:Number=largjeu/(nc+1);
var qy:Number=(hautjeu/2)/(nl+1);
for (var i:Number=0; i<nl; i++) {
for (var j:Number=0; j<nc; j++) {
boule = new Boule();
this.addChild(boule);
boule.x=xjeu+qx*(j+1);
boule.y=yjeu+qy*(i+1);
var p:Number=Math.random();
if (p<0.2) boule.gotoAndPlay(1);
else if (p<=0.4) boule.gotoAndPlay(2);
else if (p<=0.6) boule.gotoAndPlay(3);
else if (p<=0.8) boule.gotoAndPlay(4);
else if (p<1) boule.gotoAndPlay(5);
boules[nbBoules]=boule;
nbBoules++;

}
}

Et voici mon code du fichier boule.as:

package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class Boule extends MovieClip {
public var xmin:Number;
public var ymin:Number;
public var xmax:Number;
public var ymax:Number;
public var scene:MovieClip;

public function calculerLimites(xjeu:Number,yjeu:Number,largjeu:Nu
mber,hautjeu:Number)
{
var r=this.getRect(null);
this.xmin=xjeu-r.x;
this.ymin=yjeu-r.y;
this.xmax = xjeu + largjeu - (r.width+r.x);
this.ymax = yjeu + hautjeu - (r.height+r.y);
}
public var vx:Number;
public var vy:Number;
public var bouge:Boolean=false;
public var timer:Number;
public function bouger() {
if (bouge==true) {

this.x=this.x+this.vx;
this.y=this.y+this.vy;

if (this.y<=this.ymin) {
this.vy=- this.vy;
this.y=this.ymin;
}
if (this.x>=this.xmax) {
this.vx=- this.vx;
this.x=this.xmax;
}
if (this.x<=this.xmin) {
this.vx=- this.vx;
this.x=this.xmin;
}
if (this.y>=this.ymax) {
this.parent.removeChild(this);
clearInterval(timer);
scene.stage.removeEventListener(MouseEvent.CL
ICK,this.depart);

scene.creerBoule();
}

var memeCouleur:Number=0;
var touche:Boolean=false;
for (var i:Number=0; i<scene.boules.length&&!touche; i++) {
if (scene.boules[i]!=null&&this.hitTestObject(scene.b
oules[i]))
{

touche=true;
bouge=false;
scene.boules[scene.nbBoules]=scene.boule;
scene.nbBoules++;

clearInterval(timer);
scene.stage.removeEventListener(MouseEvent.
CLICK,this.depart);

scene.creerBoule();
}}}

}
public function depart(e:MouseEvent) {
this.bouge=true;
var dx:Number=this.parent.mouseX-scene.fleche.x;
var dy:Number=this.parent.mouseY-scene.fleche.y;
var l :Number= Math.sqrt(dx*dx+dy*dy);
this.vx=(dx/l)*5;
this.vy=(dy/l)*5;

}
}
}

Merci d'avance. (vivement un editeur de code dans JVC).

Thunder-King
Thunder-King
Niveau 7
13 janvier 2014 à 17:35:17

Mets ton truc dans un pastebin parce que là ça pique.

dark_drow
dark_drow
Niveau 15
13 janvier 2014 à 19:33:04

la fonction de collision native en AS3 n'est pas bien ?
Sinon la "classique" c'est de mettre tout tes éléments "collisionable" dans des tableaux et a chaque tour de boucle tu applique une fonction de collision grâce à ton x et ton y de chaque objets.

si c'est des bulles c'est assez simple, tu leurs affecte un rayon :

isColapsing(a,b)
maxdist = a.rayon + b.rayon
distSqrt = (a.x - b.x)² + (a.y - b.y)²
si(distSqrt < maxdist²)
return (Math.sqrt(distSqrt)<=maxdist)
else
return false

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