Skriver den lige på siden her i stedet:
/* Opgave 1.2
* Af Martin Hastrup og Theis F. Hinz*/
import java.util.*;
import java.awt.*;
public class Opgave2 {
public static void main(String[] args) {
// Kald af opgave 1.2 stykke a.
// Chase();
// Kald af opgave 1.2 stykke b.
// Chase2();
// Kald af opgave 1.2 stykke c.
//VisualChase();
// Kald af opgave 1.2 stykke d.
VisualChase2();
}
// OPGAVE 1.2 STYKKE A.
public static void Chase() {
// Printer og scanner.
Scanner console = new Scanner(System.in);
System.out.println("/////////////////////////////////////////////");
System.out.println("Dette er Chase fra opgave 1.2, stykke a.");
System.out.println("/////////////////////////////////////////////");
System.out.println("");
System.out.println("Giv n en værdi:");
int n = console.nextInt();
System.out.println("Giv s en værdi:");
int s = console.nextInt();
System.out.println("Hvor mange træk ønskes der:");
int traek = console.nextInt();
Turn(n, s, traek);
}
public static void Turn(int n, int s, int traek) {
Random r = new Random(); // Initialisere
Point b = new Point(r.nextInt(n) + 1, r.nextInt(n) + 1); // Finder en
// startposition
// for
// byttet
// Udstiver startinformationer
System.out.println();
System.out.println("///////////////////////////////");
System.out.println("Tak. Her er resultatet:");
System.out.println();
System.out.println("Start: \t \tPosition: (" + b.x + "," + b.y + ")");
// Så starter turene
for (int i = 1; i <= traek; i++) {
b.translate(r.nextInt(2 * s + 1) - s, r.nextInt(2 * s + 1) - s);
// Sørger for at dyret ikke kommer ud fra gitteret.
if (b.x < 1) {
b.x = 1;
} else if (b.x > n) {
b.x = n;
}
if (b.y < 1) {
b.y = 1;
} else if (b.y > n) {
b.y = n;
}
// Printer ny position
System.out.println("Træk " + i + ": \tPosition: (" + b.x + ","
+ b.y + ")");
}
}
// OPGAVE 1.2 STYKKE B.
public static void Chase2() {
// Printer og scanner.
Scanner console = new Scanner(System.in);
System.out.println("/////////////////////////////////////////////");
System.out.println("Dette er Chase2 fra opgave 1.2, stykke b.");
System.out.println("/////////////////////////////////////////////");
System.out.println("");
System.out.println("Giv n en værdi:");
int n = console.nextInt();
System.out.println("Giv s en værdi:");
int s = console.nextInt();
System.out.println("Giv alpha en værdi mellem 0 og 1:");
double alpha = console.nextDouble();
System.out.println("Giv d_0 en værdi:");
int d = console.nextInt();
System.out.println("Hvor mange træk ønskes der:");
int traek = console.nextInt();
Turn2(n, s, traek, alpha, d);
}
public static void Turn2(int n, int s, int traek, double alpha, int d) {
// Finder startposition for bytte og rovdyr.
Random r = new Random();
Point b = new Point(r.nextInt(n) + 1, r.nextInt(n) + 1);
Point rov = new Point(r.nextInt(n) + 1, r.nextInt(n) + 1);
double afstand = BeregnAfstand(b, rov); // Beregner afstanden
// Skriver startinformationer
System.out.println();
System.out.println("///////////////////////////////");
System.out.println("Tak. Her er resultatet:");
System.out.println();
System.out.println("Start: \t \tByttets position: (" + b.x + "," + b.y
+ ")\t\tRovdyrets position: (" + rov.x + "," + rov.y
+ ")\tAfstand: " + afstand);
// Her starter turene
for (int i = 1; i <= traek; i++) {
if (afstand >= d) { // Så længe afstanden d_n ikke er nået.
b.translate(r.nextInt(2 * s + 1) - s, r.nextInt(2 * s + 1) - s); // Dyret
// får
// ny
// position.
// Vi sørger for byttet ikke kommer ud fra gitteret
if (b.x < 1) {
b.x = 1;
} else if (b.x > n) {
b.x = n;
}
if (b.y < 1) {
b.y = 1;
} else if (b.y > n) {
b.y = n;
}
// Rovdyrets nye position beregnes
double movex = (b.x - rov.x) * alpha;
double movey = (b.y - rov.y) * alpha;
// Sørger for at rovdyret altid bevæger sig.
if (movex < 1 && movex > 0) {
movex = 1;
} else if (movex > -1 && movex < 0) {
movex = -1;
}
if (movey < 1 && movey > 0) {
movey = 1;
} else if (movey > -1 && movey < 0) {
movey = -1;
}
// Rovdyrets position gives:
rov.translate((int) movex, (int) movey);
afstand = BeregnAfstand(b, rov); // Afstand beregnes
System.out.println("Træk " + i + ": \tByttets position: ("
+ b.x + "," + b.y + ")\t\tRovdyrets position: ("
+ rov.x + "," + rov.y + ")\tAfstand: " + afstand);
}
}
if (afstand < d) {
System.out.println("Byttet er blevet faget af rovdyret.");
System.out.println("Jagten var en succes.");
} else {
System.out.println("Byttet blev ikke fanget af rovdyret.");
System.out.println("Jagten var en fiasko.");
}
}
public static double BeregnAfstand(Point b, Point rov) {
int x;
if (b.x <= rov.x) {
x = rov.x - b.x;
} else {
x = b.x - rov.x;
}
int y;
if (b.y <= rov.y) {
y = rov.y - b.y;
} else {
y = b.y - rov.y;
}
double afstand = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
return afstand;
}
// OPGAVE 1.2 STYKKE C.
public static void VisualChase() {
// Printer og scanner.
Scanner console = new Scanner(System.in);
System.out.println("/////////////////////////////////////////////");
System.out.println("Dette er VisualChase fra opgave 1.2, stykke C.");
System.out.println("/////////////////////////////////////////////");
System.out.println("");
System.out.println("Giv n en værdi:");
int n = console.nextInt();
System.out.println("Giv s en værdi:");
int s = console.nextInt();
System.out.println("Giv alpha en værdi mellem 0 og 1:");
double alpha = console.nextDouble();
System.out.println("Giv d_0 en værdi:");
int d = console.nextInt();
System.out.println("Hvor mange træk ønskes der:");
int traek = console.nextInt();
Turn3(n, s, traek, alpha, d);
}
public static void Turn3(int n, int s, int traek, double alpha, int d) {
// Finder startposition for bytte og rovdyr.
Random r = new Random();
Point b = new Point(r.nextInt(n) + 1, r.nextInt(n) + 1);
Point rov = new Point(r.nextInt(n) + 1, r.nextInt(n) + 1);
double afstand = BeregnAfstand(b, rov); // Beregner afstanden
//Initialisere grafik
StdDraw . setXscale ( 1 ,n);
StdDraw . setYscale ( 1 ,n);
StdDraw . setPenRadius (0.01);
//Tegner startpunkter
StdDraw.setPenColor(StdDraw.BLACK);
StdDraw . point (b.x, b.y);
StdDraw.setPenColor(StdDraw.RED);
StdDraw . point (rov.x, rov.y);
// Skriver startinformationer
System.out.println();
System.out.println("///////////////////////////////");
System.out.println("Tak. Her er resultatet:");
System.out.println("Bytte er sort, rovdyr er rød:");
System.out.println();
System.out.println("Start: \t \tByttets position: (" + b.x + "," + b.y
+ ")\t\tRovdyrets position: (" + rov.x + "," + rov.y
+ ")\tAfstand: " + afstand);
// Her starter turene
for (int i = 1; i <= traek; i++) {
if (afstand >= d) { // Så længe afstanden d_n ikke er nået.
b.translate(r.nextInt(2 * s + 1) - s, r.nextInt(2 * s + 1) - s); // Dyret får ny position.
// Vi sørger for byttet ikke kommer ud fra gitteret
if (b.x < 1) {
b.x = 1;
} else if (b.x > n) {
b.x = n;
}
if (b.y < 1) {
b.y = 1;
} else if (b.y > n) {
b.y = n;
}
// Rovdyrets nye position beregnes
double movex = (b.x - rov.x) * alpha;
double movey = (b.y - rov.y) * alpha;
// Sørger for at rovdyret altid bevæger sig.
if (movex < 1 && movex > 0) {
movex = 1;
} else if (movex > -1 && movex < 0) {
movex = -1;
}
if (movey < 1 && movey > 0) {
movey = 1;
} else if (movey > -1 && movey < 0) {
movey = -1;
}
// Rovdyrets position gives:
rov.translate((int) movex, (int) movey);
afstand = BeregnAfstand(b, rov); // Afstand beregnes
System.out.println("Træk " + i + ": \tByttets position: ("
+ b.x + "," + b.y + ")\t\tRovdyrets position: ("
+ rov.x + "," + rov.y + ")\tAfstand: " + afstand);
//Tegner position
StdDraw.setPenColor(StdDraw.BLACK);
StdDraw . point (b.x, b.y);
StdDraw.setPenColor(StdDraw.RED);
StdDraw . point (rov.x, rov.y);
}
}
if (afstand < d) {
System.out.println("Byttet er blevet faget af rovdyret.");
System.out.println("Jagten var en succes.");
} else {
System.out.println("Byttet blev ikke fanget af rovdyret.");
System.out.println("Jagten var en fiasko.");
}
}
// OPGAVE 1.2 STYKKE D.
public static void VisualChase2() {
// Printer og scanner.
Scanner console = new Scanner(System.in);
System.out.println("/////////////////////////////////////////////");
System.out.println("Dette er VisualChase2 fra opgave 1.2, stykke D.");
System.out.println("/////////////////////////////////////////////");
System.out.println("");
System.out.println("Giv n en værdi:");
int n = console.nextInt();
System.out.println("Giv s en værdi:");
int s = console.nextInt();
System.out.println("Giv alpha en værdi mellem 0 og 1:");
double alpha = console.nextDouble();
System.out.println("Giv d_0 en værdi:");
int d = console.nextInt();
Turn4(n, s, alpha, d);
}
public static void Turn4(int n, int s, double alpha, int d) {
// Finder startposition for bytte og rovdyr.
Random r = new Random();
Point b = new Point(r.nextInt(n) + 1, r.nextInt(n) + 1);
Point rov = new Point(r.nextInt(n) + 1, r.nextInt(n) + 1);
double afstand = BeregnAfstand(b, rov); // Beregner afstanden
//Initialisere grafik
StdDraw . setXscale ( 1 ,n);
StdDraw . setYscale ( 1 ,n);
StdDraw . setPenRadius (0.01);
//Tegner startpunkter
StdDraw.setPenColor(StdDraw.BLACK);
StdDraw.text(20, n, "Sort: Bytte, Rød: Rovdyr");
StdDraw . point (b.x, b.y);
StdDraw.setPenColor(StdDraw.RED);
StdDraw . point (rov.x, rov.y);
// Skriver startinformationer
System.out.println();
System.out.println("///////////////////////////////");
System.out.println("Tak. Her er resultatet:");
System.out.println("Bytte er sort, rovdyr er rød:");
System.out.println();
System.out.println("Start: \t \tByttets position: (" + b.x + "," + b.y
+ ")\t\tRovdyrets position: (" + rov.x + "," + rov.y
+ ")\tAfstand: " + afstand);
// Her starter turene
int u=1;
int traek = 0;
while(afstand > d){
Scanner console = new Scanner(System.in);
System.out.println("Hvor mange træk ønsker du at se frem?");
traek = console.nextInt();
for (int i = u; i <= u+traek-1; i++) {
if (afstand >= d) { // Så længe afstanden d_n ikke er nået.
b.translate(r.nextInt(2 * s + 1) - s, r.nextInt(2 * s + 1) - s); // Dyret får ny position.
// Vi sørger for byttet ikke kommer ud fra gitteret
if (b.x < 1) {
b.x = 1;
} else if (b.x > n) {
b.x = n;
}
if (b.y < 1) {
b.y = 1;
} else if (b.y > n) {
b.y = n;
}
// Rovdyrets nye position beregnes
double movex = (b.x - rov.x) * alpha;
double movey = (b.y - rov.y) * alpha;
// Sørger for at rovdyret altid bevæger sig.
if (movex < 1 && movex > 0) {
movex = 1;
} else if (movex > -1 && movex < 0) {
movex = -1;
}
if (movey < 1 && movey > 0) {
movey = 1;
} else if (movey > -1 && movey < 0) {
movey = -1;
}
// Rovdyrets position gives:
rov.translate((int) movex, (int) movey);
afstand = BeregnAfstand(b, rov); // Afstand beregnes
System.out.println("Træk " + i + ": \tByttets position: ("
+ b.x + "," + b.y + ")\t\tRovdyrets position: ("
+ rov.x + "," + rov.y + ")\tAfstand: " + afstand);
//Tegner position
StdDraw.setPenColor(StdDraw.BLACK);
StdDraw . point (b.x, b.y);
StdDraw.setPenColor(StdDraw.RED);
StdDraw . point (rov.x, rov.y);
}
}
u += traek;
}
if (afstand < d) {
System.out.println("Byttet er blevet faget af rovdyret.");
System.out.println("Jagten var en succes.");
} else {
System.out.println("Byttet blev ikke fanget af rovdyret.");
System.out.println("Jagten var en fiasko.");
}
}
}