first commit

This commit is contained in:
2020-06-12 23:49:11 +02:00
commit ea19e5ad2a
214 changed files with 43291 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@@ -0,0 +1,27 @@
import basis.TextFeld;
import java.awt.*;
import java.text.DecimalFormat;
public class Distance {
TextFeld textFeld;
Player player;
Player target;
DecimalFormat dc;
public Distance(Player player, Player target, int frameWidth, Color framColor) {
this.player = player;
this.target = target;
textFeld = new TextFeld();
textFeld.setzeGroesse(200,50);
textFeld.setzeHintergrundFarbe(framColor);
textFeld.setzeSchriftFarbe(player.getColor());
textFeld.setzePosition(frameWidth/2-textFeld.breite()/2,textFeld.hoehe());
textFeld.setzeSchriftGroesse(25);
textFeld.entferneRand();
dc = new DecimalFormat("0");
}
public void getValue(){
textFeld.setzeText("Distance: " + dc.format(player.getPlayerPos().distance(target.getPlayerPos())));
}
}

View File

@@ -0,0 +1,18 @@
public class Hitdetection implements Runnable {
Player player;
Player target;
public Hitdetection(Player player1, Player player2) {
player = player1;
target = player2;
}
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()){
if (player.getPlayerPos().distance(target.getPlayerPos())<50){
Thread.currentThread().interrupt();
}
}
System.exit(0);
}
}

View File

@@ -0,0 +1,46 @@
import basis.Hilfe;
import java.awt.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Operator {
private Output out;
private Player player;
private Player target;
private Render playerRender;
private Hitdetection hitdetection;
private Distance distance;
private Runnable[] runnables;
private ExecutorService executor = Executors.newCachedThreadPool();
public Operator() {
out = new Output();
player = new Player(Hilfe.zufall(50, 1870), Hilfe.zufall(50, 1030), Color.GREEN);
target = new Player(Hilfe.zufall(50, 1870), Hilfe.zufall(50, 1030), Color.BLACK);
playerRender = new Render(player);
hitdetection = new Hitdetection(player,target);
distance = new Distance(player,target,out.getFrame().breite(),
out.getFrame().hintergrundFarbe());
runnables = new Runnable[]{playerRender, hitdetection};
}
private void operate() {
player.move();
for (Runnable r : runnables
) {
executor.execute(r);
}
while (true){
player.move();
distance.getValue();
}
}
public static void main(String[] args) {
Operator op = new Operator();
op.operate();
}
}

View File

@@ -0,0 +1,16 @@
import basis.Farbe;
import basis.Fenster;
import basis.Hilfe;
public class Output {
private Fenster frame;
public Output() {
frame = new Fenster(Hilfe.monitorBreite(), Hilfe.monitorHoehe());
frame.setzeHintergrundFarbe(Farbe.rgb(40, 40, 40));
}
public Fenster getFrame() {
return frame;
}
}

View File

@@ -0,0 +1,83 @@
import basis.Hilfe;
import basis.Maus;
import basis.Stift;
import java.awt.*;
public class Player {
private Point playerPos;
private Maus mouse;
private Stift pen;
private Color c;
private Point[] positions;
private double[] angles;
private int times;
private boolean updated;
public Player(int x, int y, Color color) {
playerPos = new Point(x, y);
mouse = new Maus();
pen = new Stift();
pen.bewegeAuf(playerPos.getX(),playerPos.getY());
c = color;
times = 0;
updated = false;
positions = new Point[200];
angles = new double[positions.length];
}
public void move(){
pen.dreheInRichtung(mouse.hPosition(),mouse.vPosition());
pen.bewegeUm(1);
playerPos.setLocation(pen.hPosition(),pen.vPosition());
updated = false;
Point temp = new Point(playerPos);
if (positions[positions.length-1] == null){
positions[times] = temp;
angles[times] = penOrientation();
} else {
System.arraycopy(positions,1,positions,0,positions.length-1);
positions[positions.length-1] = temp;
System.arraycopy(angles,1,angles,0,angles.length-1);
angles[angles.length-1] = penOrientation();
}
times++;
Hilfe.warte(1);
}
public double[] getAngles() {
return angles;
}
public double penOrientation(){
return pen.winkel()+90;
}
public boolean isUpdated() {
return updated;
}
public Point[] getPositions() {
return positions;
}
public void setUpdated(boolean updated) {
this.updated = updated;
}
public Color getColor() {
return c;
}
public Point getPlayerPos() {
return playerPos;
}
public void setPlayerPos(Point playerPos) {
this.playerPos = playerPos;
}
}

View File

@@ -0,0 +1,48 @@
import basis.Hilfe;
import basis.Muster;
import basis.Stift;
public class Render implements Runnable {
private Stift pen;
private Player posPlayer;
private int times;
public Render(Player player) {
pen = new Stift();
pen.setzeFarbe(player.getColor());
pen.setzeFuellMuster(Muster.GEFUELLT);
posPlayer = player;
times = 0;
}
public void draw() {
pen.kreis(posPlayer.getPlayerPos().getX(), posPlayer.getPlayerPos().getY(), 20);
pen.setzeTransparenzGrad(0.05);
pen.kreis(posPlayer.getPlayerPos().getX(), posPlayer.getPlayerPos().getY(), 30);
}
private void erase(){
pen.radiere();
pen.setzeFuellMuster(Muster.DURCHSICHTIG);
pen.kreisBogen(posPlayer.getPositions()[0].getX(),posPlayer.getPositions()[0].getY(),30,posPlayer.getAngles()[0],180);
pen.setzeFuellMuster(Muster.GEFUELLT);
pen.normal();
}
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()){
if (!posPlayer.isUpdated()) {
draw();
posPlayer.setUpdated(true);
if (posPlayer.getPositions()[posPlayer.getPositions().length-1] != null) {
this.erase();
}
times++;
}
}
}
}