Skip to content

Commit

Permalink
completed java mooc ii
Browse files Browse the repository at this point in the history
  • Loading branch information
awstn committed Jan 24, 2024
1 parent 4a09d9c commit b5af80e
Show file tree
Hide file tree
Showing 10 changed files with 760 additions and 107 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,68 +28,75 @@ public static void main(String[] args) {

@Override
public void start(Stage window){
BorderPane layout = new BorderPane();

VBox topHeading = new VBox();
topHeading.setPadding(new Insets(25));
BorderPane layout = new BorderPane();

BorderPane monthlySavings = new BorderPane();
//monthly sum slider
Slider monthlySlider = new Slider(25, 250 ,4);
monthlySlider.setShowTickMarks(true);
monthlySlider.setShowTickLabels(true);
Label sliderValue = new Label(String.valueOf(monthlySlider.getValue()));
monthlySlider.setSnapToTicks(true);

BorderPane interestRate = new BorderPane();
//interest slider
Slider interestSlider = new Slider(0, 10, 0);
interestSlider.setShowTickMarks(false);
interestSlider.setShowTickLabels(true);
interestSlider.setSnapToTicks(true);

//slider labels
Label sliderValue = new Label(String.valueOf(monthlySlider.getValue()));
Label interestValue = new Label(String.valueOf(interestSlider.getValue()));


//setting borderPane object for monthly sum slider
BorderPane monthlySavings = new BorderPane();
monthlySavings.setLeft(new Label("Monthly savings"));
monthlySavings.setCenter(monthlySlider);
monthlySavings.setRight(sliderValue);

//setting borderPane object for interest slider
BorderPane interestRate = new BorderPane();
interestRate.setLeft(new Label("Yearly interest rate"));
interestRate.setCenter(interestSlider);
interestRate.setRight(interestValue);


//creating VBox object and adding the borderPane objects (interestRate and monthlySavings) to it
VBox topHeading = new VBox();
topHeading.setPadding(new Insets(25));
topHeading.getChildren().addAll(monthlySavings, interestRate);


//setting numberAxis objects for LineChart
NumberAxis xAxis = new NumberAxis(0, 30, 1);
NumberAxis yAxis = new NumberAxis();


//setting up LineChart and two XYCharts.Series objects that will display the savings and interest on the LineChart.
LineChart<Number, Number> lineChart = new LineChart<>(xAxis, yAxis);
lineChart.setAnimated(false);
lineChart.setLegendVisible(false);
XYChart.Series savingsChart = new XYChart.Series();
XYChart.Series interestChart = new XYChart.Series();



//setting up title of LineChart and adding the XYCharts to the lineChart
lineChart.setTitle("Savings Counter");

lineChart.getData().addAll(savingsChart, interestChart);


DecimalFormat df = new DecimalFormat("#.00");


//Adding a event listener to the monthly slider where it will update savingsChart according to the new value
monthlySlider.valueProperty().addListener((observable, oldValue, newValue) -> {
sliderValue.setText(String.format("%.2f", newValue.doubleValue()));

sliderValue.setText(String.format("%.2f", newValue.doubleValue()));
updateChart(monthlySlider.getValue(), interestSlider.getValue(), savingsChart, interestChart);

});

//Adding a event listener to the interest slider where it will update savingsChart according to the new value
interestSlider.valueProperty().addListener((observable, oldValue, newValue) -> {
interestValue.setText(String.format("%.2f", newValue.doubleValue()));

updateChart(monthlySlider.getValue(),interestSlider.getValue(), savingsChart, interestChart);

});

//adding this so the graph will display the values on start of the program
updateChart(monthlySlider.getValue(),interestSlider.getValue(), savingsChart, interestChart);


layout.setCenter(lineChart);
layout.setTop(topHeading);

Expand All @@ -99,9 +106,12 @@ public void start(Stage window){
}

public void updateChart(double savings, double interest, XYChart.Series savingsSeries, XYChart.Series withInterestSeries){

//clears the chart
savingsSeries.getData().clear();
withInterestSeries.getData().clear();

//updates it with new values
savingsSeries.getData().add(new XYChart.Data(0, 0));
withInterestSeries.getData().add(new XYChart.Data(0, 0));

Expand All @@ -128,151 +138,83 @@ public void start(Stage ikkuna) {
BorderPane display = new BorderPane();
Slider monthlySum = new Slider();
monthlySum.setMin(25);
monthlySum.setMax(250);
monthlySum.setSnapToTicks(true);
monthlySum.setBlockIncrement(500);
monthlySum.setShowTickLabels(true);
monthlySum.setShowTickMarks(true);
Slider interestRate = new Slider();
interestRate.setMin(0);
interestRate.setMax(10);
interestRate.setMinorTickCount(10);
interestRate.setShowTickLabels(true);
interestRate.setShowTickMarks(true);
Label savingsText = new Label("25");
Label interestRateText = new Label("0");
BorderPane monthlySumDisplay = new BorderPane();
monthlySumDisplay.setLeft(new Label("Monthly savings"));
monthlySumDisplay.setCenter(monthlySum);
monthlySumDisplay.setRight(savingsText);
monthlySumDisplay.setPadding(new Insets(10));
BorderPane interestRateDisplay = new BorderPane();
interestRateDisplay.setLeft(new Label("Yearly interest rate"));
interestRateDisplay.setCenter(interestRate);
interestRateDisplay.setRight(interestRateText);
interestRateDisplay.setPadding(new Insets(10));
VBox sliderDisplay = new VBox();
sliderDisplay.getChildren().add(monthlySumDisplay);
sliderDisplay.getChildren().add(interestRateDisplay);
sliderDisplay.setPadding(new Insets(10));
sliderDisplay.setSpacing(10);
display.setTop(sliderDisplay);
NumberAxis xAxis = new NumberAxis(0, 30, 1);
NumberAxis yAxis = new NumberAxis();
LineChart<Number, Number> savingsLineChart = new LineChart<>(xAxis, yAxis);
savingsLineChart.setAnimated(false);
savingsLineChart.setLegendVisible(false);
savingsLineChart.setTitle("Savings calculator");
display.setCenter(savingsLineChart);
XYChart.Series savings = new XYChart.Series();
XYChart.Series savingsWithInterest = new XYChart.Series();
savingsLineChart.getData().add(savings);
savingsLineChart.getData().add(savingsWithInterest);
monthlySum.setOnMouseReleased(e -> {
savingsText.setText("" + monthlySum.getValue());
updateChart(monthlySum.getValue(), interestRate.getValue(), savings, savingsWithInterest);
});
interestRate.setOnMouseReleased(e -> {
String interestString = "" + interestRate.getValue();
if (interestString.length() > 4) {
interestString = interestString.substring(0, 4);
}
interestRateText.setText(interestString);
updateChart(monthlySum.getValue(), interestRate.getValue(), savings, savingsWithInterest);
});
Scene view = new Scene(display, 640, 480);
ikkuna.setScene(view);
ikkuna.show();
}
Expand All @@ -282,33 +224,18 @@ public void start(Stage ikkuna) {
private void updateChart(double monthlySavings, double interestRate, XYChart.Series savings, XYChart.Series savingsWithInterest) {
savings.getData().clear();
savingsWithInterest.getData().clear();
savings.getData().add(new XYChart.Data(0, 0));
savingsWithInterest.getData().add(new XYChart.Data(0, 0));
double previous = 0;
for (int i = 1; i <= 30; i++) {
savings.getData().add(new XYChart.Data(i, i * monthlySavings * 12));
previous += monthlySavings * 12;
previous *= (1 + interestRate / 100.0);
savingsWithInterest.getData().add(new XYChart.Data(i, previous));
}
Expand Down
34 changes: 34 additions & 0 deletions part14-Part14_09.Asteroids/src/main/java/asteroids/Asteroid.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package asteroids;

import java.util.Random;
import javafx.scene.shape.Polygon;



public class Asteroid extends Character{

private double rotationalMovement;

public Asteroid(int x, int y){
super(new PolygonFactory().createPolygon(), x, y);

Random rnd = new Random();

super.getCharacter().setRotate(rnd.nextInt(360));

int accelerationAmount = 1 + rnd.nextInt(10);
for (int i = 0; i < accelerationAmount; i++){
accelerate();
}

this.rotationalMovement = 0.5 - rnd.nextDouble();
}

@Override
public void move(){
super.move();
super.getCharacter().setRotate(super.getCharacter().getRotate() + rotationalMovement);
}


}
Loading

0 comments on commit b5af80e

Please sign in to comment.