我正在为一个学校项目制作一个记忆游戏,它运行得很好,所以一切都按照应有的方式运作,但是有一个问题。我不知道如何让卡片的颜色,每次玩游戏时矩形随机化。
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.shape.Rectangle;
import javafx.scene.paint.Color;
import javafx.scene.control.Button;
var rectangle1: Rectangle;
var rectangle2: Rectangle;
var rectangle3: Rectangle;
var rectangle4: Rectangle;
var rectangle5: Rectangle;
var rectangle6: Rectangle;
var rectangle7: Rectangle;
var rectangle8: Rectangle;
var rectangle9: Rectangle;
var rectangle10: Rectangle;
var rectangle11: Rectangle;
var rectangle12: Rectangle;
var rectangle13: Rectangle;
var rectangle14: Rectangle;
var rectangle15: Rectangle;
var rectangle16: Rectangle;
var kaarten = ["","red","red","red","red","red","red","red","red","red","red","red","red","red","red","red","red",];
var kaartzichtbaar = [true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true];
var gekozenkaart = [0,0,0];
var tekst = "beginnen maar";
var aantalclicks = 0;
var kaartkeuze = ["",""];
var scene: Scene;
var button: Button;
var score = 0;
function KaartControle (){
if (aantalclicks == 2){
if(kaartkeuze [0] == kaartkeuze[1]){
tekst = "goed bezig!";
kaartzichtbaar[gekozenkaart[0]]=false;
kaartzichtbaar[gekozenkaart[1]]=false;
aantalclicks = 0;
score++;
}
}
else if (aantalclicks == 3) {
tekst = "jammer!";
kaarten[gekozenkaart[0]]="red";
kaarten[gekozenkaart[1]]="red";
kaarten[gekozenkaart[2]]="red";
aantalclicks = 0;
score--;
}
if (score==8) {
tekst="Hoera!! Het spel is voltooid";
}
}
Stage {
title: "Memory"
scene: Scene {
width: 500
height: 300
content: [
Text {
font: Font {
size: 16
}
x: 10
y: 30
content: bind tekst;
}
Text {
font: Font {
size: 16
}
x: 250
y: 30
content: bind score.toString();
}
button = Button {
translateX: 300
translateY: 150
text: "reset"
visible: true
action: function() {
kaartzichtbaar = [true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true];
kaarten = ["","red","red","red","red","red","red","red","red","red","red","red","red","red","red","red","red",];
aantalclicks = 0;
score = 0;
tekst = "beginnen maar"
}
}
//Kaart 1
rectangle1 = Rectangle {
visible: bind kaartzichtbaar[1]
width: 50
height: 50
x: 10
y: 50
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[1])
onMouseClicked: function(event) {
if (kaarten[1] == "red"){
kaarten[1] = "green";
kaartkeuze[aantalclicks]="1";
gekozenkaart[aantalclicks]= 1;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 2
rectangle2 = Rectangle {
visible: bind kaartzichtbaar[2]
width: 50
height: 50
x: 10
y: 110
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[2])
onMouseClicked: function(event) {
if (kaarten[2] == "red"){
kaarten[2] = "green";
kaartkeuze[aantalclicks]="1";
gekozenkaart[aantalclicks]= 2;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 3
rectangle3 = Rectangle {
visible: bind kaartzichtbaar[3]
width: 50
height: 50
x: 10
y: 170
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[3])
onMouseClicked: function(event) {
if (kaarten[3] == "red"){
kaarten[3] = "cyan";
kaartkeuze[aantalclicks]="2";
gekozenkaart[aantalclicks]= 3;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 4
rectangle4 = Rectangle {
visible: bind kaartzichtbaar[4]
width: 50
height: 50
x: 10
y: 230
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[4])
onMouseClicked: function(event) {
if (kaarten[4] == "red"){
kaarten[4] = "cyan";
kaartkeuze[aantalclicks]="2";
gekozenkaart[aantalclicks]= 4;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 5
rectangle5 = Rectangle {
visible: bind kaartzichtbaar[5]
width: 50
height: 50
x: 70
y: 50
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[5])
onMouseClicked: function(event) {
if (kaarten[5] == "red"){
kaarten[5] = "yellow";
kaartkeuze[aantalclicks]="3";
gekozenkaart[aantalclicks]= 5;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 6
rectangle6 = Rectangle {
visible: bind kaartzichtbaar[6]
width: 50
height: 50
x: 70
y: 110
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[6])
onMouseClicked: function(event) {
if (kaarten[6] == "red"){
kaarten[6] = "yellow";
kaartkeuze[aantalclicks]="3";
gekozenkaart[aantalclicks]= 6;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 7
rectangle7 = Rectangle {
visible: bind kaartzichtbaar[7]
width: 50
height: 50
x: 70
y: 170
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[7])
onMouseClicked: function(event) {
if (kaarten[7] == "red"){
kaarten[7] = "purple";
kaartkeuze[aantalclicks]="4";
gekozenkaart[aantalclicks]= 7;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 8
rectangle8 = Rectangle {
visible: bind kaartzichtbaar[8]
width: 50
height: 50
x: 70
y: 230
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[8])
onMouseClicked: function(event) {
if (kaarten[8] == "red"){
kaarten[8] = "purple";
kaartkeuze[aantalclicks]="4";
gekozenkaart[aantalclicks]= 8;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 9
rectangle9 = Rectangle {
visible: bind kaartzichtbaar[9]
width: 50
height: 50
x: 130
y: 50
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[9])
onMouseClicked: function(event) {
if (kaarten[9] == "red"){
kaarten[9] = "grey";
kaartkeuze[aantalclicks]="5";
gekozenkaart[aantalclicks]= 9;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 10
rectangle10 = Rectangle {
visible: bind kaartzichtbaar[10]
width: 50
height: 50
x: 130
y: 110
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[10])
onMouseClicked: function(event) {
if (kaarten[10] == "red"){
kaarten[10] = "grey";
kaartkeuze[aantalclicks]="5";
gekozenkaart[aantalclicks]= 10;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 11
rectangle11 = Rectangle {
visible: bind kaartzichtbaar[11]
width: 50
height: 50
x: 130
y: 170
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[11])
onMouseClicked: function(event) {
if (kaarten[11] == "red"){
kaarten[11] = "magenta";
kaartkeuze[aantalclicks]="6";
gekozenkaart[aantalclicks]= 11;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 12
rectangle12 = Rectangle {
visible: bind kaartzichtbaar[12]
width: 50
height: 50
x: 130
y: 230
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[12])
onMouseClicked: function(event) {
if (kaarten[12] == "red"){
kaarten[12] = "magenta";
kaartkeuze[aantalclicks]="6";
gekozenkaart[aantalclicks]= 12;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 13
rectangle13 = Rectangle {
visible: bind kaartzichtbaar[13]
width: 50
height: 50
x: 190
y: 50
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[13])
onMouseClicked: function(event) {
if (kaarten[13] == "red"){
kaarten[13] = "orange";
kaartkeuze[aantalclicks]="7";
gekozenkaart[aantalclicks]= 13;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 14
rectangle14 = Rectangle {
visible: bind kaartzichtbaar[14]
width: 50
height: 50
x: 190
y: 110
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[14])
onMouseClicked: function(event) {
if (kaarten[14] == "red"){
kaarten[14] = "orange";
kaartkeuze[aantalclicks]="7";
gekozenkaart[aantalclicks]= 14;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 15
rectangle15 = Rectangle {
visible: bind kaartzichtbaar[15]
width: 50
height: 50
x: 190
y: 170
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[15])
onMouseClicked: function(event) {
if (kaarten[15] == "red"){
kaarten[15] = "blue";
kaartkeuze[aantalclicks]="8";
gekozenkaart[aantalclicks]= 15;
aantalclicks ++;
KaartControle()
}
}
}
//Kaart 16
rectangle16 = Rectangle {
visible: bind kaartzichtbaar[16]
width: 50
height: 50
x: 190
y: 230
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[16])
onMouseClicked: function(event) {
if (kaarten[16] == "red"){
kaarten[16] = "blue";
kaartkeuze[aantalclicks]="8";
gekozenkaart[aantalclicks]= 16;
aantalclicks ++;
KaartControle()
}
}
}
]
}
}
答案 0 :(得分:0)
试试这个。
import java.util.Random;
def colors = [
Color.web("#d02020"),
Color.web("#ff8010"),
Color.web("#d0e000"),
Color.web("#10c010"),
Color.web("#3030f0"),
Color.web("#d050ff"),
];
def rand = new Random();
function randColor():Color {
colors[rand.nextInt(sizeof colors)]
}
来源材料:http://www.smarks.org/svjugfx20100414/flood.html
-Update -
随机颜色:
function getColor(): Integer
{
var c:java.awt.Color = new java.awt.Color(
Math.random() * 255,
Math.random() * 255,
Math.random() * 255);
return
c.getRGB();
}
此函数获取一个随机的rgb值,您可以在填充中使用该值。这意味着如果您不想要,则不需要颜色数组。
来源材料:http://codersimperative.blogspot.com/2009/01/creating-custom-fill-in-javafx.html
答案 1 :(得分:0)
Okey,导入确实有效,但是它们一直变黑,而不是随机颜色,我仍然不知道如何用一张卡保存随机颜色,我的代码,因为它们都是相同的,除了卡号enz是:
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.shape.Rectangle;
import javafx.scene.paint.Color;
import javafx.scene.control.Button;
import java.util.Random;
def colors = [
Color.web("#d0e000"),
Color.web("#d02020"),
Color.web("#ff8010"),
Color.web("#10c010"),
Color.web("#3030f0"),
Color.web("#d050ff"),
];
def rand = new Random();
function randColor():Color {
colors[rand.nextInt(sizeof colors)]
}
var rectangle1: Rectangle;
var rectangle2: Rectangle;
var rectangle3: Rectangle;
var rectangle4: Rectangle;
var rectangle5: Rectangle;
var rectangle6: Rectangle;
var rectangle7: Rectangle;
var rectangle8: Rectangle;
var rectangle9: Rectangle;
var rectangle10: Rectangle;
var rectangle11: Rectangle;
var rectangle12: Rectangle;
var rectangle13: Rectangle;
var rectangle14: Rectangle;
var rectangle15: Rectangle;
var rectangle16: Rectangle;
var kaarten = ["", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red",];
var kaartzichtbaar = [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true];
var gekozenkaart = [0, 0, 0];
var tekst = "beginnen maar";
var aantalclicks = 0;
var kaartkeuze = ["", ""];
var scene: Scene;
var button: Button;
var score = 0;
function KaartControle() { if (aantalclicks == 2) { if (kaartkeuze[0] == kaartkeuze[1]) { tekst = "goed bezig!"; kaartzichtbaar[gekozenkaart[0]] = false; kaartzichtbaar[gekozenkaart[1]] = false; aantalclicks = 0; score++; } } else if (aantalclicks == 3) { tekst = "jammer!"; kaarten[gekozenkaart[0]] = "red"; kaarten[gekozenkaart[1]] = "red"; kaarten[gekozenkaart[2]] = "red"; aantalclicks = 0; score--; } if (score == 8) { tekst = "Hoera!! Het spel is voltooid"; } }
Stage {
title: "Memory"
scene: Scene {
width: 500
height: 300
content: [
Text {
font: Font {
size: 16
}
x: 10
y: 30
content: bind tekst;
}
Text {
font: Font {
size: 16
}
x: 250
y: 30
content: bind score.toString();
}
button = Button {
translateX: 300
translateY: 150
text: "reset"
visible: true
action: function() {
kaartzichtbaar = [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true];
kaarten = ["", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red",];
aantalclicks = 0;
score = 0;
}
}
//Kaart 1
rectangle1 = Rectangle {
visible: bind kaartzichtbaar[1]
width: 50
height: 50
x: 10
y: 50
arcWidth: 10
arcHeight: 10
fill: bind Color.web(kaarten[1])
onMouseClicked: function(event) {
if (kaarten[1] == "red") {
kaarten[1] = "randColor()";
kaartkeuze[aantalclicks] = "1";
gekozenkaart[aantalclicks] = 1;
aantalclicks++;
KaartControle()
}
}
}