Disclaimer: from now on I will occasionally post in English too.
A first release of an Wheel of Fortune made with JavaFX. There’s still has a lot of bugs but is already usable. Let’s say that version is 0.8. 🙂
import javafx.ui.*;
import javafx.ui.canvas.*;
import javafx.ui.filter.*;
import java.util.Random;
import java.lang.System;
class Wheel extends CompositeNode{
attribute n: Integer;
attribute radius: Integer;
attribute cx: Integer;
attribute cy: Integer;
attribute colors: Color*;
private attribute angle: Number;
private attribute rotAngle: Number;
private attribute extraTurns: Integer;
operation run();
}
attribute Wheel.n = 32;
attribute Wheel.radius = 100;
attribute Wheel.cx = radius;
attribute Wheel.cy = radius;
attribute Wheel.rotAngle = 0;
attribute Wheel.angle = bind 360/n;
attribute Wheel.extraTurns = 2;
attribute Wheel.colors = [
red:Color,
lime:Color,
blue:Color,
yellow:Color,
orange:Color,
cyan:Color
];
function Wheel.composeNode(){
var selector = Rect {
x: radius*2 - 10
y: radius
width: 30
height: 10
fill:black
};
var disc = foreach(j in [1..n]) Arc{
transform: translate(-radius, -radius)
width: radius * 2
height: radius * 2
startAngle: j*angle
length: angle
fill:colors[j%(sizeof colors)]
closure: PIE
};
var border = Circle{
radius:radius
stroke:gray
strokeWidth: 2
};
var glass = Circle{
radius:radius - 25
fill: white
opacity: 0.3
};
var star = Star {
rin: radius/4
rout: radius/2
points: 5
startAngle: 18
fill: yellow
};
var numbers = foreach(i in [1..n]) Text {
transform: [rotate(i*angle, 0, 0), translate(radius - 20,0)]
content: i.toString()
};
var base = Group{
transform: bind [rotate(rotAngle,cx,cy),translate(cx,cy),]
content: [disc, border, glass, numbers, star]
};
return Group {
content: [selector, base]
};
}
operation Wheel.run() {
var fortune = new Random(System.currentTimeMillis());
var chosen = fortune.nextInt(n);
System.out.println(chosen);
rotAngle = [1.. extraTurns*360+ chosen*angle] dur 200 * n;
}
var wheel = Wheel{};
Frame{
visible: true
content: Canvas {
content: [
wheel,
View {
content:Button {
text: "Go"
action: operation() {
wheel.run();
}
}
}
]
}
}
The JavaFX Wheel of Fortune in use:

- ps: this code was actualized. Now it’s using colors constants and time as random seed.
- ps2: this code and video has figured out in the front page of the Project OpenJFX! Thank you guys.
- ps3: In 03/15/2008 I modified this code. Now you can put an arbitrary number for Wheel.n and the wheel should render good.
[…] used the JavaFX Whell of Fortune for give […]
[…] Do you remember our Wheel of Fortune in JavaFX? […]
After some changes in the code, it works very well in NB6.5 and it is just cool! thanks.
Hello,
I am at present in 1st year in computing. To make a success of the year I have to program a game as the wheel of fortune. I have already made everything, but I still have the wheel to be made and I do not manage to find a method to make it. Your code corresponds exactly to the fact that I look but as I do not know the language JavaFx then I wanted to know if you also have it in Javascripte, please ?
Thanks.
Hi Bao Long Ngo Vuong, unfortunately this code posted in this post is deprecated.
You can use the idea showed here but need to rewrite it on compliance with a newer JavaFX version. In this moment I’m writing the latest version is the 1.1
No, I don’t have a JavaScript version, sorry.