Petit jeu avec javafx

Description

Jetez un coup d'oeuil dans la source et vous comprendrez de quoi il s'agit... Pas trop de commentaire !!!!

Source / Exemple :


/*

  • Main.fx
*
  • Created on Dec 8, 2009, 4:33:04 PM
  • /
package jeux; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.text.Text; import javafx.scene.text.Font; import javafx.scene.shape.Circle; import javafx.scene.paint.Color; import javafx.scene.Group; import javafx.util.Math; import javafx.animation.Timeline; import javafx.animation.KeyFrame; import javafx.animation.Interpolator; import javafx.scene.input.MouseEvent; import javafx.scene.effect.GaussianBlur; import javafx.scene.media.Media; import javafx.scene.media.MediaPlayer; import java.lang.Void; import javafx.scene.Node; import javafx.util.Sequences.indexOf; var ui = Escobar_GameUI{}; var opacite = 1.0; ui.jouezbar.visible = true; ui.joueztxt.visible = true; ui.gameovbar.visible = false; ui.gameovtxt.visible = false; ui.acme.visible = false; def WIDTH = 455; def HEIGHT = 370; def RADIUS = 20; var gunLeft = false; var gunRight = false; var scene: Scene; var circles : Circle [] = []; var timelines : Timeline[]; var level = bind score / 10; var levelTimes = [1s, 0.9s, 0.7s, 0.6s, 0.5s, 0.4s]; var circ : Circle; var score : Integer; var lives : Integer = 5 on replace { if (lives == 0) { for (t in timelines){ t.stop(); ui.jouezbar.visible = false; ui.joueztxt.visible = false; ui.gameovbar.visible = true; ui.gameovtxt.visible = true; player.stop(); }; } }; var stage:Stage = Stage { resizable: false scene: scene = Scene { content: Group { content: [ui, Text { font : Font { size : 16 } fill:Color.WHITE x: 10 y: 35 content: bind "{score}" }, Text { font : Font { size : 16 } fill:Color.WHITE x: 329 y: 35 content: bind "{level}" }, Text { font : Font { size : 16 } fill:Color.WHITE x: 162 y: 35 content: bind "{lives}" }, Group { content: bind circles effect: bind if (lives == 0) GaussianBlur { radius: 10 } else null; }, ] } } } function createCircle() : Void { def x = Math.random() * 300; var circ : Circle = Circle { centerX: x, centerY: 0 radius: RADIUS fill: Color.BLACK stroke:Color.WHITE strokeWidth:2 onMousePressed: function (evt: MouseEvent) : Void { if (lives > 0) { delete circ from circles; score++; createSmashAnimation(circ.centerX, circ.centerY); } } } insert circ into circles; var move = Timeline { repeatCount: 1 keyFrames : [ KeyFrame { time: 10s values: [ circ.centerY => scene.height tween Interpolator.EASEOUT ] action: function () { if (indexOf(circles, circ) != -1) { delete circ from circles; lives--; } } } ] }; move.play(); insert move into timelines; } function createSmashAnimation(x: Number, y : Number) : Void { var particles = for (i in [0 .. 10]) Circle { centerX: x, centerY: y radius: 4 fill:Color.WHITE } insert particles into circles; for (particle in particles) { def xTarget = x + (Math.random() - .5) * scene.width/4; def yTarget = y + (Math.random() - .5) * scene.height/4; Timeline { repeatCount: 1 keyFrames : [ KeyFrame { time: 1s values: [ particle.centerX => xTarget, particle.centerY => yTarget ] action: function() { delete particle from circles; } } ] }.play(); } } var createCircleTimeLine = Timeline { repeatCount: Timeline.INDEFINITE keyFrames : [ KeyFrame { time :bind if (level < sizeof levelTimes) levelTimes[level] else levelTimes[sizeof levelTimes - 1] canSkip : true action: createCircle } ] }; createCircleTimeLine.play(); insert createCircleTimeLine into timelines; var player = MediaPlayer { repeatCount: javafx.scene.media.MediaPlayer.REPEAT_FOREVER media : Media { source: "{__DIR__}clip.mp3" } volume:0.2 }player.play();

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (puccino1er)