' ***** Déplacement de 2 cercles SCREEN 12: WINDOW SCREEN (1, 1)-(640, 480) CLS : L.Ecr% = 640: H.Ecr% = 480 LINE (9, 9)-(631, 471), 11, B PAINT (5, 5), 10, 11 ' ***** Départ du cercle n° 1 R1% = 30: D.X1% = 1: D.Y1% = 1 X.C1% = 150: Y.C1% = 150 Xold1% = X.C1%: Yold1% = Y.C1% CIRCLE (X.C1%, Y.C1%), R1%, 14 CIRCLE (X.C1%, Y.C1%), R1% - 2, 14 K1% = 1 ' ***** Départ du cercle n° 2 R2% = 50: D.X2% = 1: D.Y2% = 1 X.C2% = 330: Y.C2% = 330 Xold2% = X.C2%: Yold2% = Y.C2% CIRCLE (X.C2%, Y.C2%), R2%, 12 CIRCLE (X.C2%, Y.C2%), R2% - 2, 12 K2% = 1 DO Debut! = TIMER ' ***** Cercle N° 1 X.C1% = X.C1% + D.X1% * K1%: Y.C1% = Y.C1% + D.Y1% * K1% CIRCLE (Xold1%, Yold1%), R1%, 0 CIRCLE (Xold1%, Yold1%), R1% - 1, 0 CIRCLE (Xold1%, Yold1%), R1% - 2, 0 IF (X.C1% >= L.Ecr% - R1% - 11) OR (X.C1% <= R1% + 11) THEN D.X1% = -D.X1% END IF IF (Y.C1% >= H.Ecr% - R1% - 11) OR (Y.C1% <= R1% + 11) THEN D.Y1% = -D.Y1% END IF CIRCLE (X.C1%, Y.C1%), R1%, 14 CIRCLE (X.C1%, Y.C1%), R1% - 1, 14 CIRCLE (X.C1%, Y.C1%), R1% - 2, 14 Xold1% = X.C1%: Yold1% = Y.C1% ' ***** Cercle N° 2 X.C2% = X.C2% + D.X2% * K2%: Y.C2% = Y.C2% + D.Y2% * K2% CIRCLE (Xold2%, Yold2%), R2%, 0 CIRCLE (Xold2%, Yold2%), R2% - 1, 0 CIRCLE (Xold2%, Yold2%), R2% - 2, 0 IF (X.C2% >= L.Ecr% - R2% - 11) OR (X.C2% <= R2% + 11) THEN D.X2% = -D.X2% END IF IF (Y.C2% >= H.Ecr% - R2% - 11) OR (Y.C2% <= R2% + 11) THEN D.Y2% = -D.Y2% END IF CIRCLE (X.C2%, Y.C2%), R2%, 12 CIRCLE (X.C2%, Y.C2%), R2% - 1, 12 CIRCLE (X.C2%, Y.C2%), R2% - 2, 12 Xold2% = X.C2%: Yold2% = Y.C2% ' ***** Test de rencontre IF (R1% + R2%) ^ 2 >= (Y.C1% - Y.C2%) ^ 2 + (X.C1% - X.C2%) ^ 2 THEN BEEP CEPABON: ' **** Changement des sens de déplacement RANDOMIZE TIMER * 100 Cas% = INT(RND * 19) + 1 SELECT CASE Cas% CASE 1: D.X1% = -D.X1%: D.Y1% = -D.Y1% ') D.X2% = -D.X2%: D.Y2% = -D.Y2% ') Inversions de toutes directions CASE 2: D.X1% = -D.X1%: D.X2% = -D.X2% ' Inversions de direction horizontale CASE 3: D.Y1% = -D.Y1%: D.Y2% = -D.Y2% ' Inversions de direction verticale CASE 4: D.X1% = -D.X1% ' Inversion de direction horizontale Cercle 1 CASE 5: D.Y1% = -D.Y1% ' etc CASE 6: D.X2% = -D.X2% CASE 7: D.Y2% = -D.Y2% CASE 8: D.X1% = 0: K1% = 1 CASE 9: D.Y1% = 0: K1% = 1 CASE 10: D.X2% = 0: K2% = 1 CASE 11: D.Y2% = 0: K2% = 1 CASE 12: D.X1% = 1 CASE 13: D.X1% = -1 CASE 14: D.Y1% = 1 CASE 15: D.Y1% = -1 CASE 16: D.X2% = 1 CASE 17: D.X2% = -1 CASE 18: D.Y2% = 1 CASE 19: D.Y2% = -1 CASE 20: K1% = RND(99) + 1 ' **** Modif de la vitesse de d‚placement CASE 21: K2% = RND(99) + 1 ' ***** D'autres possibilités pourraient être envisagées .... END SELECT Niou.C1% = X.C1% + D.X1% Niou.Y1% = Y.C1% + D.Y1% Niou.C2% = X.C2% + D.X2% Niou.Y2% = Y.C2% + D.Y2% IF (R1% + R2%) ^ 2 >= (Niou.Y1% - Niou.Y2%) ^ 2 + (Niou.C1% - Niou.C2%) ^ 2 THEN GOTO CEPABON END IF END IF 'DO 'LOOP UNTIL TIMER >= Debut! + .000001 'OR TIMER < Debut! ' !!!!! Ce temporisateur ne MARCHE PAS !!!!! POURQUOI ????? ' ***** Je le supprime car il ralentit trop ..... LOOP UNTIL INKEY$ = CHR$(27)