Files
basic-computer-games/87_3-D_Plot/java/Plot3D.java
Martin Thoma e64fb6795c MAINT: Apply pre-commit
Remove byte-order-marker pre-commit check as there would be
many adjustments necessary
2022-03-05 09:29:23 +01:00

98 lines
2.0 KiB
Java

import java.lang.Math;
/**
* Game of 3-D Plot
* <p>
* Based on the BASIC game of 3-D Plot here
* https://github.com/coding-horror/basic-computer-games/blob/main/87%203-D%20Plot/3dplot.bas
* <p>
* Note: The idea was to create a version of the 1970's BASIC game in Java, without introducing
* new features - no additional text, error checking, etc has been added.
*
* Converted from BASIC to Java by Darren Cardenas.
*/
// Java class names cannot begin with a letter, so class name 3dplot cannot be used
public class Plot3D {
public void play() {
showIntro();
startGame();
} // End of method play
private void showIntro() {
System.out.println(" ".repeat(31) + "3D PLOT");
System.out.println(" ".repeat(14) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY");
System.out.println("\n\n\n");
} // End of method showIntro
private void startGame() {
float row = 0;
int column = 0;
int limit = 0;
int plotVal = 0;
int root = 0;
String lineContent = "";
// Begin loop through all rows
for (row = -30; row <= 30; row += 1.5) {
limit = 0;
root = 5 * (int) Math.floor((Math.sqrt(900 - row * row) / 5));
// Begin loop through all columns
for (column = root; column >= -root; column += -5) {
plotVal = 25 + (int) Math.floor(func(Math.sqrt(row * row + column * column)) - 0.7 * column);
if (plotVal > limit) {
limit = plotVal;
// Add whitespace
while (lineContent.length() < (plotVal-1)) {
lineContent += " ";
}
lineContent += "*";
}
} // End loop through all columns
System.out.println(lineContent);
lineContent = "";
} // End loop through all rows
} // End of method startGame
// Function to be plotted
public double func(double inputVal) {
return (30 * Math.exp(-inputVal * inputVal / 100));
}
public static void main(String[] args) {
Plot3D plot = new Plot3D();
plot.play();
} // End of method main
} // End of class Plot3D