1

我正在为一个学校项目制作一个记忆游戏,它运行得很好,所以一切都按照它应该的方式运行,但是有一个问题。我不知道如何让卡片的颜色,每次玩游戏时矩形随机化。

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()
                    }
                }
            }
        ]
    }
}
4

2 回答 2

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

-更新-

随机颜色:

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

于 2013-03-24T14:05:02.460 回答
0

好的,导入确实有效,但它们总是变黑,而不是随机颜色,我仍然不知道如何用一张卡保存随机颜色,我的代码,因为除了卡号之外它们都是相同的 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()
                            }
                        }
                    }
于 2013-03-26T09:17:23.273 回答