Hallo, ich habe einen Code vom Prof bekommen.
Und bei den import Anweisungen und den dazugehörigen Methoden bekomme ich diese Fehlermeldung:
Access restriction: The type 'Application' is not API (restriction on required library 'C:\Program Files\Java\jre1.8.0_162\lib\ext\jfxrt.jar')
Aber dies ist doch in der API oder täusch ich mich da.
Andere Frage:
Ich soll mit der Vorlage von oben einen Zellularautomaten programmieren.
Einmal als binäre Ausgabe und einmal graphisch. Die binäre Ausgabe habe ich bereits.
Da ich noch nie mit JavaFX gearbeitet habe, ist es möglich das wie ein Array aufzubauen und dann die Felder mit 1 in einer Farbe zu bemalen und die mit einer 0 in einer anderen? (siehe Bild)
Bin mir ziemlich sicher das es geht, nur ich wäre über Tipps der Vorgehensweise interessiert.
Danke.
mfg werdas34
Java:
// Given a Wolfram Code (eg WC 90, 0 <= WC <= 255) of a 1-d cellular automaton and the number of generations,
// generate and display the resulting configurations.
// Use JavaFX to graphically display the configurations.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
public class CA extends Application // class CA MUST NOT have a constructor (else java.lang.reflect.InvocationTargetException)
{
public static final int WC = 30; // Wolfram Code for 1-d cellular automata
public static final int GENS = 10; // number of generations
public static final int SF = 20; // scale factor: 1 cell = SF*SF pixels
static byte[][] configs; // global variable for communication with start(stage) method
//*****************************************************************************************
public static void main(String[] args)
{
System.out.println("WC-" + WC + ", gens = " + GENS);
// derive the rules of the CA from the given WC
// fill the configs array according to the rules
// print configs[][]
Application.launch(); // start graphics
}
//*****************************************************************************************
// method required by JavaFX Application to draw graphics
// cp. https://docs.oracle.com/javafx/2/canvas/jfxpub-canvas.htm
@Override
public void start(Stage myStage)
{
String myTitle = "1-d CA: WC-" + WC + "; " + GENS + " Generations";
myStage.setTitle(myTitle);
Group root = new Group();
int canSize = (2*GENS+1)*SF;
Canvas canvas = new Canvas(canSize, canSize);
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setStroke(Color.GREY);
gc.setFill(Color.BLUE); // color of living cell
gc.setLineWidth(1);
// draw horizontal lines: two per generation
for (int row=1; row<=GENS; row++)
{
gc.strokeLine(0, (2*row-1)*SF, canSize, (2*row-1)*SF);
gc.strokeLine(0, (2*row )*SF, canSize, (2*row )*SF);
}
// draw vertical line segments: one for each generation
for (int col=0; col<2*GENS+1; col++)
{
for (int row=1; row<=GENS; row++)
gc.strokeLine(col*SF, (2*row-1)*SF, col*SF, (2*row)*SF);
}
// draw configs[][]
// gc.fillRect() draws rectangles
root.getChildren().add(canvas);
myStage.setScene(new Scene(root));
myStage.show();
}
}
Und bei den import Anweisungen und den dazugehörigen Methoden bekomme ich diese Fehlermeldung:
Access restriction: The type 'Application' is not API (restriction on required library 'C:\Program Files\Java\jre1.8.0_162\lib\ext\jfxrt.jar')
Aber dies ist doch in der API oder täusch ich mich da.
Andere Frage:
Ich soll mit der Vorlage von oben einen Zellularautomaten programmieren.
Einmal als binäre Ausgabe und einmal graphisch. Die binäre Ausgabe habe ich bereits.
Da ich noch nie mit JavaFX gearbeitet habe, ist es möglich das wie ein Array aufzubauen und dann die Felder mit 1 in einer Farbe zu bemalen und die mit einer 0 in einer anderen? (siehe Bild)
Bin mir ziemlich sicher das es geht, nur ich wäre über Tipps der Vorgehensweise interessiert.
Danke.
mfg werdas34