Faire un decompte

dievx Messages postés 13 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 27 décembre 2004 - 19 déc. 2004 à 19:00
John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006 - 27 déc. 2004 à 23:15
salut

je fais un casse brique et je voudrais que ma brique disparaisse lorsqu' elle est touché 2 fois par la bille.

Merci

17 réponses

John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006
19 déc. 2004 à 23:20
ben tu associes une variable à ta brique et tu la décrémentes quand tu la touches. Si c ça le problème. Sinon tâche d'être plus explicite
0
dievx Messages postés 13 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 27 décembre 2004
20 déc. 2004 à 18:33
Le nom de ma brique est : RECTANGLE.
Ma variable est: VAR RECTANGLE.
Pourquois ca ne marche pas!!!

voici mon script:

var rectangle =3;
if (_root.bille.hitTest(_root.square)) {
while (rectangle =0){
rectangle--;
root.square._visible =false;
if(_root.square=2){
gotoAndStop(2)
}
}
}
0
John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006
20 déc. 2004 à 23:25
C vrai tu as mis ce code tel quel ? Parce que la ça peut vraiment pas marcher ça veut rien dire.
En gros si g bien compris ce script est executé quand la balle touche la brique. Remplace le par le mien :
if (_root.bille.hitTest(_root.square)) {
if (rectangle != 0) {
   rectangle--;
   if (rectangle == 2) { // pour le gotoAndStop je ne suis pas sur d'avoir bien compris ce que tu voulais faire en fait 
      gotoAndStop(2);
   }
}
else {
   _root.square._visible =false;
}


Pour initialiser ta variable rectangle, il ne faut pas le faire ici parce que sinon elle sera réinitialisée à 3 à chaque fois que la balle touche la brique. Mets son initialisation dans un scénario qui ne sera lu qu'une fois, comme le scénario principal.

Mais franchement lis des bouquins sur ActionScript parce que ça m'étonnerait vraiment que tu ait compris ton code...
0
dievx Messages postés 13 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 27 décembre 2004
21 déc. 2004 à 23:40
J'ai mis ton code et sa marche presque sauf que la bille passe à travers le rectangle la premeire fois et quand elle le touche la deuxieme fois il disparait.

J'ai mis var rectangle dans onClipEvent (load), c bon?

Meme en enlevant gotoAndStop c pareil.

Quel bouquins peux tu me conseiller?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dievx Messages postés 13 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 27 décembre 2004
21 déc. 2004 à 23:54
tu ne sais pas ou je pourais trouver le code sourse d'un casse brique pour que je puisse comprendre.Votre texte ICI
0
John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006
22 déc. 2004 à 14:00
var rectangle dans onClipEvent (load) -> oui c bon.

Sinon dis moi a quoi sert ton gotoAndStop(2), pour que je puisse te refaire le code. Et _root.square c bien ta brique ?

Comme bouquins je sais pas trop en fait moi g suivi des cours sur Flash donc je n'ai pas eu à lire les bases de l'ActionScript. La g un ebook "Macromedia Flash MX 2004 Français - Guide de références Acti" qui me paraît pas mal, mais tout dépend si tu as déjà des notions de programmation.

Il y a une source d'un casse-brique sur ce site : http://www.flashkod.com/code.aspx?ID=13752.
0
dievx Messages postés 13 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 27 décembre 2004
22 déc. 2004 à 18:36
j'ai enlevé gotoAndStop et sa fait pareil ,j'en deduis qu'il me sert à rien.
_root.square est bien ta brique

Pourais tu m'envoyer t cours sur flash?G quelques notions en basic

G regardé le code source et il y a des passage que je ne comprend pas.Pour faire disparaitre la brique il on crmis sur la1ere image la brique et sur la 2eme rien.Je suppose que le script ci-dessus permet de donnéer 1 angle different à la balle.

function degre() {
if (_root.boulle._rotation == i) {
if (i<0) {
return (i+180)*-1;
}
if (i>0) {
return (180-i);
}
if (i == 0) {
return (180);
}
}
}
}
VOICI MON SCRIPT

onClipEvent(load) {
vitx = 9;
vity = 9;

}
onClipEvent (enterFrame){
(_root.bille._x += vitx);
(_root.bille._y += vity);

//Collision avec les murs
if (_root.bille.hitTest(_root.bas)) {
_root.vie._visible= false
_root.vie1._visible= false
_root.gameover._visible= true
vitx=0
}else {
_root.gameover._visible= false;

}
if (_root.bille.hitTest(_root.haut)) {
vity = -vity;
}
if (_root.bille.hitTest(_root.droite)) {
vitx = -vitx;
}
if (_root.bille.hitTest(_root.gauche)) {
vitx = -vitx;
}

//limite de la posion de la bille dans l'aire de jeu
if(_x<30){
_x=30;
}
if(_x>285){
_x=285;
}
if(_y<-45){
_y=-45;
}
if(_y>215){
_y=215;
}

//Collision avec la barre
if (_root.bille.hitTest(_root.barre)) {
vity = -vity;

}

//Collision avec le rectangle
if (_root.bille.hitTest(_root.square)) {
vitx = -vitx;
vity = -vity;

_root.square._visible =false;
if(_root.square=2){

}
}
0
John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006
22 déc. 2004 à 19:16
On se disperse un peu la ... Ca fait beaucoup de questions.

Mes cours de flash -> désolé mais ils sont en version papier et incomplets donc c pas possible de te les passer. Le plus simple c de telecharger des ebooks.

Tu supposes bien pour la fonction degre.
Pour ton code :
if(_root.square=2){ ca ca veut dire :
-> d'abord le prgm fait _root.square = 2 //ce qui ne veut rien dire, un clip ne peut pas prendre une valeur
-> ensuite test de cette valeur, càd 2, qui sera toujours vraie

Sinon il faut que tu fasse 2 types de briques, un qui se détruit en une fois, et un autre qui se détruit en plusieurs.
0
dievx Messages postés 13 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 27 décembre 2004
22 déc. 2004 à 21:20
J'ai fais 3sortes de briques:
-les briques qui ne disparaissent pas
-les briques qui disparaissent lorsqu'elles sont touchées 1fois
- les briques qui disparaissent lorsqu'elles sont touchées 2fois
et je n'arrive pas a faire la 3eme

quand j'ai enlevé =2 du (if(_root.square=2){ ) et if(_root.square=2){ j'ai ma brique qui disparait lorsqu'elle est touchée et apres ma balle rebondit sur le meme enplacement comme si la brique était tjs la, pourtant il n'y a rien.
0
John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006
23 déc. 2004 à 13:59
Pour les briques touchées 2 fois :
if (_root.bille.hitTest(_root.square)) {
if (rectangle != 0) {
rectangle--;
vitx = -vitx;
vity = -vity;
}
else {
_root.square._visible =false;
}


Pour ta variable rectangle, il faudrait mieux la mettre dans ta brique (je suppose que c un clip, donc sur la première image tu mets var rectangle = 2;). C plus logique, comme ça il y a une variable par brique. Après pour y accéder depuis le scénario principal, tu fais : _root.square.rectangle.
Aussi si ta balle rebondit toujours sur le même emplacement parce que tu n'as fait que rendre ta brique invisible (_visible = false). Je te conseille de construire tes briques avec actionScript en dynamique avec attachmovie. Après tu pourras les supprimer totalement avec unloadMovie. En plus ça te permettra de programmer tes niveaux plus facilement (il te suffit de décrire ton niveau sous la forme d'un tableau, et de "construire" chaque brique avec attachMovie en fonction de la valeur contenue dans le tableau).

Avec ces modifs, le code ci-dessus deviendrait :
if (_root.bille.hitTest(_root.square)) {
if ((_root.square.rectangle != 0) {
(_root.square.rectangle--;
vitx = -vitx;
vity = -vity;
}
else {
_root.square.unloadMovie();
}


Note : dans l'état actuel de ton programme tu ne peux pas utiliser unloadMovie parce qu'il faut que les éléments que tu unload aient été mis sur la scène avec ActionScript (attachMovie, duplicateMovieClip).
0
dievx Messages postés 13 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 27 décembre 2004
23 déc. 2004 à 22:14
Merci pour ton aide car tes codes codes fonctionnent.

Je veux donner un angle et une vitesse differente à ma bille lorsquelle touche ma barre mais ca ne marche pas.Pourquoi??

J'ai mis le scrip ci-dessous dans le movieClip de la bille dans onClipEvent(load) {

function degre() {
if (_root.bille._rotation == i) {
if (i<0) {
return (i+180)*-1;
}
if (i>0) {
return (180-i);
}
if (i == 0) {
return (180);
}
}
}
0
John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006
24 déc. 2004 à 14:06
Ben la c juste une fonction donc il faut l'appeler pour qu'elle soit executée. Aussi il faut que i ait une valeur (ce qui n'a pas l'air le cas).
Cependant il ne suffit pas de recopier le script pour que ça marche. Surtout que toi tu ne fonctionnes pas pareil (tu ne changes pas la rotation de la bille, surtout que ça ne sert à rien parce que ta bille est ronde, et faire une rotation sur un truc rond ça revient à ne rien faire).
Donc tu devrais le mettre au même endroit que le reste de ton script. Ca donnerait un truc de ce style :
if (_root.bille.hitTest(_root.barre)) {
vitx = -2*vitx;
vity = -2*vity;
}

J'ai mis 2 comme ça pour l'exemple, mais à toi de trouver une fonction qui trouve la nouvelle vitesse. Je peux pas trop t'aider pour ca c des maths...
0
John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006
24 déc. 2004 à 14:11
G peut etre pas été assez explicite : dans ton cas ton angle et ta vitesse sont représentés par vitx et vity. Il suffit de faire varier ces 2 paramètres, inutile d'en rajouter d'autres.
Tes nouvelles vitx et vity seront calculées en fonction d'elles-mêmes, et si tu veux faire ça bien aussi en fonction de l'endroit ou la bille touche la barre. Donc c juste une fonction mathématique à trouver (cela dit je sais pas ou la trouver).
0
dievx Messages postés 13 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 27 décembre 2004
26 déc. 2004 à 22:40
Pourrais tu me donner un code simplifié pour les briques qui disparaissent lorsqu'elles sont touchées 1fois
0
John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006
26 déc. 2004 à 23:45
Simplifié ??
N'empeche que j'aime pas trop sortir des codes tout faits direct. Donc stp essaie d'écrire ton code et demande moi juste des conseils je peux pas faire tout a ta place.
0
dievx Messages postés 13 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 27 décembre 2004
27 déc. 2004 à 22:48
Pour les briques qui doivent disparaitres lorsqu'elles sont touchées 1 fois ne marche pas correctement.

j'ai ma brique qui disparait lorsqu'elle est touchée et apres ma balle rebondit sur le meme enplacement comme si la brique était tjs la, pourtant il n'y a rien.

//Collision avec le rectangle
if (_root.bille.hitTest(_root.square)) {
vitx = -vitx;
vity = -vity;

_root.square._visible =false;
}
0
John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006
27 déc. 2004 à 23:15
C ce que je te disais plus haut : ta brique est invisible, mais elle est toujours la. Donc 2 solutions :
soit tu continue comme ça et il te suffit de rajouter une condition :
if ((_root.bille.hitTest(_root.square)) && (_root.square._visible == true)) {
vitx = -vitx;
vity = -vity;

_root.square._visible =false;
} 


soit tu change ton code : tu n'utilise plus _visible et tu construis tes briques dynamiquement en ActionScript (fonctions attachMovie pour les créer et unloadMovie pour les supprimer).

La premiere solution est bien sur beaucoup plus simple, bien qu'elle soit moins bonne.
0
Rejoignez-nous