rm fußballmanager
This commit is contained in:
parent
812b2f71c1
commit
02573e866a
|
|
@ -1,29 +0,0 @@
|
||||||
package fußballmanager;
|
|
||||||
|
|
||||||
public class Flugbahn {
|
|
||||||
//Steigung m
|
|
||||||
//Y-Achsen abschnitt b
|
|
||||||
//Definitionsbereich x1 und x2 + y1 und y2
|
|
||||||
|
|
||||||
double m,b;
|
|
||||||
Position p1,p2;
|
|
||||||
|
|
||||||
public Flugbahn(Position p1,Position p2) {
|
|
||||||
m = (p1.y-p2.y)/(p1.x-p2.x);
|
|
||||||
b = p1.y+m*p1.x;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double f(double x){
|
|
||||||
return m*x+b;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isInRange(Position p){
|
|
||||||
if(p1.x<p.x&&p2.x>p.x||p1.x>p.x&&p2.x<p.x){
|
|
||||||
//Punkt liegt im Definitionsbereich
|
|
||||||
if(Math.abs(p.y-f(p.x))<0.5){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
package fußballmanager;
|
|
||||||
|
|
||||||
import fußballmanager.personen.Schiedsrichter;
|
|
||||||
|
|
||||||
public class Main {
|
|
||||||
static Team t1;
|
|
||||||
static Team t2;
|
|
||||||
static Schiedsrichter schiri;
|
|
||||||
static Spiel spiel;
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
t1 = new Team();
|
|
||||||
t2 = new Team();
|
|
||||||
schiri = new Schiedsrichter();
|
|
||||||
spiel = new Spiel(t1,t2,schiri);
|
|
||||||
for(int i = 0; i < 5400; i++){
|
|
||||||
spiel.tick();
|
|
||||||
// try {
|
|
||||||
// Thread.sleep(200);
|
|
||||||
// } catch (InterruptedException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
// e.printStackTrace();
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
package fußballmanager;
|
|
||||||
|
|
||||||
public class Position {
|
|
||||||
|
|
||||||
double x,y;
|
|
||||||
|
|
||||||
public Position(double x,double y){
|
|
||||||
this.x = x;
|
|
||||||
this.y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Berechnung der Distanz zwischen zwei Punkten/Positionen mittels Satz des Pytagoras
|
|
||||||
public double getDistance(Position p){
|
|
||||||
double a,b;
|
|
||||||
a = Math.abs(x-p.x);
|
|
||||||
b = Math.abs(y-p.y);
|
|
||||||
return Math.sqrt(a*a+b*b);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void moveTo(Position t,double d){
|
|
||||||
double cosT = (x - t.x)/getDistance(t);
|
|
||||||
double cosA = (y - t.y)/getDistance(t);
|
|
||||||
double ax = cosT*d;
|
|
||||||
double ay = cosA*d;
|
|
||||||
x += ax;
|
|
||||||
y += ay;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,192 +0,0 @@
|
||||||
package fußballmanager;
|
|
||||||
|
|
||||||
import java.math.RoundingMode;
|
|
||||||
import java.text.DecimalFormat;
|
|
||||||
|
|
||||||
import java.text.NumberFormat;
|
|
||||||
|
|
||||||
import fußballmanager.personen.*;
|
|
||||||
|
|
||||||
public class Spiel {
|
|
||||||
int spielzeit;
|
|
||||||
int verlängerung;
|
|
||||||
Team heimteam;
|
|
||||||
Team auswärtsteam;
|
|
||||||
Schiedsrichter schiri;
|
|
||||||
Ball b;
|
|
||||||
//true = heim | false = auswärts
|
|
||||||
boolean ballBesitz;
|
|
||||||
|
|
||||||
public Spiel(Team heim, Team aus, Schiedsrichter s) {
|
|
||||||
this.heimteam = heim;
|
|
||||||
this.auswärtsteam = aus;
|
|
||||||
this.schiri = s;
|
|
||||||
ballBesitz = ((int) Math.random()) == 0 ? true : false;
|
|
||||||
spielzeit = 0;
|
|
||||||
heimteam.setPositions(true);
|
|
||||||
auswärtsteam.setPositions(false);
|
|
||||||
b = new Ball();
|
|
||||||
if(ballBesitz){
|
|
||||||
b.s = heimteam.spieler[9];
|
|
||||||
}else{
|
|
||||||
b.s = auswärtsteam.spieler[9];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void tick() {
|
|
||||||
spielzeit++;
|
|
||||||
movePhase();
|
|
||||||
attackPhase();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void movePhase(){
|
|
||||||
Team ballteam;
|
|
||||||
Team nichtballteam;
|
|
||||||
if(ballBesitz){
|
|
||||||
ballteam = heimteam;
|
|
||||||
nichtballteam = auswärtsteam;
|
|
||||||
}else{
|
|
||||||
ballteam = auswärtsteam;
|
|
||||||
nichtballteam = heimteam;
|
|
||||||
}
|
|
||||||
for(Spieler s:ballteam.spieler){
|
|
||||||
double d = s.geschwindigkeit;
|
|
||||||
if(s.hasBall()) d-=1;
|
|
||||||
s.p.moveTo(nichtballteam.torwart.p, d);
|
|
||||||
}
|
|
||||||
for(Spieler s:nichtballteam.spieler){
|
|
||||||
s.p.moveTo(b.s.p, s.geschwindigkeit);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void attackPhase() {
|
|
||||||
Team ballteam;
|
|
||||||
Team nichtballteam;
|
|
||||||
if (ballBesitz) {
|
|
||||||
ballteam = heimteam;
|
|
||||||
nichtballteam = auswärtsteam;
|
|
||||||
} else {
|
|
||||||
ballteam = auswärtsteam;
|
|
||||||
nichtballteam = heimteam;
|
|
||||||
}
|
|
||||||
for (Spieler s : ballteam.spieler) {
|
|
||||||
if (s.hasBall()) {
|
|
||||||
boolean weiter = true;
|
|
||||||
for (Spieler g : nichtballteam.spieler) {
|
|
||||||
if (weiter)
|
|
||||||
if (s.p.getDistance(g.p) < 0.5) {
|
|
||||||
if (g.getAttack() > s.getDef()) {
|
|
||||||
int rng = new Random().nextInt(100);
|
|
||||||
if (rng < 89) {
|
|
||||||
// Ball wurde abgenommen
|
|
||||||
g.takeBall(s);
|
|
||||||
s.motivation -= 20;
|
|
||||||
}
|
|
||||||
if (rng < 90) {
|
|
||||||
|
|
||||||
}
|
|
||||||
if (rng < 101) {
|
|
||||||
Spieler t = null;
|
|
||||||
double d = 200;
|
|
||||||
for (Spieler temp : ballteam.spieler) {
|
|
||||||
if (s.p.getDistance(temp.p) < d && !temp.equals(s)) {
|
|
||||||
d = s.p.getDistance(temp.p);
|
|
||||||
t = temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Flugbahn fb = new Flugbahn(s.p, t.p);
|
|
||||||
boolean succes = false;
|
|
||||||
for (Spieler temp : nichtballteam.spieler) {
|
|
||||||
if (fb.isInRange(temp.p)) {
|
|
||||||
// Pass wurde unterbrochen
|
|
||||||
temp.takeBall(s);
|
|
||||||
succes = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!succes) {
|
|
||||||
// Ball wurde weg gepasst
|
|
||||||
t.takeBall(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Spieler t = null;
|
|
||||||
double d = 200;
|
|
||||||
for (Spieler temp : ballteam.spieler) {
|
|
||||||
if (s.p.getDistance(temp.p) < d && !temp.equals(s)) {
|
|
||||||
d = s.p.getDistance(temp.p);
|
|
||||||
t = temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Flugbahn fb = new Flugbahn(s.p, t.p);
|
|
||||||
boolean succes = false;
|
|
||||||
for (Spieler temp : nichtballteam.spieler) {
|
|
||||||
if (fb.isInRange(temp.p)) {
|
|
||||||
// Pass wurde unterbrochen
|
|
||||||
temp.takeBall(s);
|
|
||||||
succes = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!succes) {
|
|
||||||
// Ball wurde weg gepasst
|
|
||||||
t.takeBall(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//
|
|
||||||
weiter = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (weiter) {
|
|
||||||
double tordis = s.p.getDistance(nichtballteam.torwart.p);
|
|
||||||
Spieler t = null;
|
|
||||||
boolean ss = false;
|
|
||||||
for (Spieler m : ballteam.spieler) {
|
|
||||||
|
|
||||||
if (!m.equals(s)) {
|
|
||||||
if (m.p.getDistance(nichtballteam.torwart.p) < tordis) {
|
|
||||||
t = m;
|
|
||||||
ss = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (t != null&&ss) {
|
|
||||||
Flugbahn fb = new Flugbahn(s.p, t.p);
|
|
||||||
boolean succes = false;
|
|
||||||
for (Spieler temp : nichtballteam.spieler) {
|
|
||||||
if (fb.isInRange(temp.p)) {
|
|
||||||
// Pass wurde unterbrochen
|
|
||||||
temp.takeBall(s);
|
|
||||||
succes = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!succes) {
|
|
||||||
// Ball wurde weg gepasst
|
|
||||||
t.takeBall(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public String getSpielzeit() {
|
|
||||||
String r = "";
|
|
||||||
NumberFormat numberFormat = new DecimalFormat("0");
|
|
||||||
numberFormat.setRoundingMode(RoundingMode.DOWN);
|
|
||||||
r += "Spielzeit: " + numberFormat.format(this.spielzeit / 60) + ":";
|
|
||||||
if (spielzeit % 60 < 10){
|
|
||||||
r += "0";
|
|
||||||
}
|
|
||||||
r += spielzeit % 60;
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,85 +0,0 @@
|
||||||
package fußballmanager;
|
|
||||||
|
|
||||||
import fußballmanager.namegen.Datenbank;
|
|
||||||
import fußballmanager.personen.*;
|
|
||||||
|
|
||||||
public class Team {
|
|
||||||
String name;
|
|
||||||
Trainer trainer;
|
|
||||||
Spieler[] spieler = new Spieler[10];
|
|
||||||
Torwart torwart;
|
|
||||||
int siege = 0;
|
|
||||||
|
|
||||||
public Team(String name){
|
|
||||||
this.name = name;
|
|
||||||
fülleTeam();
|
|
||||||
addTrainer();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Team(){
|
|
||||||
this.name = Datenbank.genName()+"'s Team";
|
|
||||||
fülleTeam();
|
|
||||||
addTrainer();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void fülleTeam(){
|
|
||||||
//Fülle Feldspieler
|
|
||||||
for(int i =0; i<10;i++){
|
|
||||||
spieler[i] = new Spieler();
|
|
||||||
}
|
|
||||||
//Fülle Torwart
|
|
||||||
torwart = new Torwart();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addTrainer(){
|
|
||||||
trainer = new Trainer();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPositions(boolean heim){
|
|
||||||
if (heim){
|
|
||||||
torwart.p.x = 5;
|
|
||||||
torwart.p.y = 22.5;
|
|
||||||
for(int i = 0; i < 3; i++){
|
|
||||||
spieler[i].p.x = 20;
|
|
||||||
spieler[i].p.y = 7.5+15*i;
|
|
||||||
}
|
|
||||||
for(int i = 3; i < 7; i++){
|
|
||||||
spieler[i].p.x = 38;
|
|
||||||
spieler[i].p.y =5.625+11.25*i;
|
|
||||||
}
|
|
||||||
for(int i = 7; i < 9; i++){
|
|
||||||
spieler[i].p.x = 52;
|
|
||||||
spieler[i].p.y =11.25+22.5*i;
|
|
||||||
}
|
|
||||||
spieler[9].p.x=44;
|
|
||||||
spieler[9].p.y=45;
|
|
||||||
}else{
|
|
||||||
torwart.p.x = 90-5;
|
|
||||||
torwart.p.y = 22.5;
|
|
||||||
for(int i = 0; i < 3; i++){
|
|
||||||
spieler[i].p.x = 90-20;
|
|
||||||
spieler[i].p.y = 7.5+15*i;
|
|
||||||
}
|
|
||||||
for(int i = 3; i < 7; i++){
|
|
||||||
spieler[i].p.x = 90-38;
|
|
||||||
spieler[i].p.y =5.625+11.25*i;
|
|
||||||
}
|
|
||||||
for(int i = 7; i < 9; i++){
|
|
||||||
spieler[i].p.x = 90-52;
|
|
||||||
spieler[i].p.y =11.25+22.5*i;
|
|
||||||
}
|
|
||||||
spieler[9].p.x=46;
|
|
||||||
spieler[9].p.y=45;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isInTeam(Person p){
|
|
||||||
for(Person pp:spieler){
|
|
||||||
if(p.equals(pp)) return true;
|
|
||||||
}
|
|
||||||
if(torwart.equals(p)) return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
package fußballmanager.namegen;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
public class Datenbank {
|
|
||||||
int n = 100;
|
|
||||||
static int counterName = 0;
|
|
||||||
static int counterVorname = 0;
|
|
||||||
static int counterBeiname = 0;
|
|
||||||
static String[] nameFeld;
|
|
||||||
static ArrayList<String> namen = new ArrayList<String>();//
|
|
||||||
static ArrayList<String> vornamen = new ArrayList<String>();
|
|
||||||
static ArrayList<String> beinamen = new ArrayList<String>();
|
|
||||||
|
|
||||||
public static String genName(){
|
|
||||||
String r = "";
|
|
||||||
namenListeFüllen();
|
|
||||||
r += namen.get((int) (Math.random() * namen.size()));
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String genVorname(){
|
|
||||||
String r = "";
|
|
||||||
vornameFeldFüllen();
|
|
||||||
r += vornamen.get((int) (Math.random() * vornamen.size()));
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void namenListeFüllen(){
|
|
||||||
namen.add("Günter");//
|
|
||||||
namen.add("Diabetes");
|
|
||||||
namen.add("Dextrose");
|
|
||||||
namen.add("Hackschnetzler");
|
|
||||||
namen.add("Rasur");
|
|
||||||
namen.add("Algrim");
|
|
||||||
namen.add("Schmitz");
|
|
||||||
namen.add("Wühl");
|
|
||||||
namen.add("Hommers");
|
|
||||||
namen.add("Dagoba");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void vornameFeldFüllen(){
|
|
||||||
vornamen.add("Günter");//
|
|
||||||
vornamen.add("Gorden");
|
|
||||||
vornamen.add("Dr.");
|
|
||||||
vornamen.add("Profi");
|
|
||||||
vornamen.add("Hommers");
|
|
||||||
vornamen.add("Metti");
|
|
||||||
vornamen.add("Moriz");
|
|
||||||
vornamen.add("Läon");
|
|
||||||
vornamen.add("Hommers");
|
|
||||||
vornamen.add("Willi");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
package fußballmanager.personen;
|
|
||||||
|
|
||||||
public class Ball{
|
|
||||||
public Spieler s;
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
package fußballmanager.personen;
|
|
||||||
|
|
||||||
import fußballmanager.Team;
|
|
||||||
import fußballmanager.namegen.Datenbank;
|
|
||||||
|
|
||||||
public abstract class Person {
|
|
||||||
int alter;
|
|
||||||
Team team;
|
|
||||||
String name,vorname;
|
|
||||||
|
|
||||||
public void setTeam(Team team){
|
|
||||||
this.team = team;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Team getTeam(){
|
|
||||||
return team;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isInTeam(Person p){
|
|
||||||
return team.isInTeam(p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
package fußballmanager.personen;
|
|
||||||
|
|
||||||
import fußballmanager.namegen.Datenbank;
|
|
||||||
|
|
||||||
public class Schiedsrichter extends Person{
|
|
||||||
public Schiedsrichter(){
|
|
||||||
name = Datenbank.genName();
|
|
||||||
vorname = Datenbank.genVorname();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
package fußballmanager.personen;
|
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import fußballmanager.Position;
|
|
||||||
import fußballmanager.namegen.Datenbank;
|
|
||||||
|
|
||||||
public class Spieler extends Person {
|
|
||||||
int stärke;
|
|
||||||
int verteidigung;
|
|
||||||
int tore;
|
|
||||||
public int motivation;
|
|
||||||
public double geschwindigkeit;
|
|
||||||
public Position p;
|
|
||||||
Ball b;
|
|
||||||
int karte = 0;
|
|
||||||
|
|
||||||
public int getAttack() {
|
|
||||||
return (int) (stärke+(0.2*motivation));
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getDef() {
|
|
||||||
return (int) (verteidigung+(0.2*motivation));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void setBall(Ball b){
|
|
||||||
this.b = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void takeBall(Spieler s){
|
|
||||||
b = s.b;
|
|
||||||
b.s = s;
|
|
||||||
s.b = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Spieler(int stärke, int verteidigung, int alter, String vorname,
|
|
||||||
String name) {
|
|
||||||
this.stärke = stärke;
|
|
||||||
this.verteidigung = verteidigung;
|
|
||||||
this.alter = alter;
|
|
||||||
this.vorname = vorname;
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Spieler() {
|
|
||||||
int random = new Random().nextInt(100);
|
|
||||||
this.verteidigung = random;
|
|
||||||
this.stärke = 100-random;
|
|
||||||
this.geschwindigkeit = 4+Math.random()*2;
|
|
||||||
this.vorname = Datenbank.genVorname();
|
|
||||||
this.name = Datenbank.genName();
|
|
||||||
p = new Position(0,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasBall() {
|
|
||||||
if(b!=null) return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
package fußballmanager.personen;
|
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import fußballmanager.namegen.Datenbank;
|
|
||||||
|
|
||||||
public class Torwart extends Spieler{
|
|
||||||
|
|
||||||
public Torwart() {
|
|
||||||
int random = new Random().nextInt(100);
|
|
||||||
this.verteidigung = random;
|
|
||||||
this.stärke = 100-random;
|
|
||||||
this.geschwindigkeit = 4+Math.random()*2;
|
|
||||||
this.vorname = Datenbank.genVorname();
|
|
||||||
this.name = Datenbank.genName();
|
|
||||||
p = new Position(0,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
package fußballmanager.personen;
|
|
||||||
|
|
||||||
import fußballmanager.namegen.Datenbank;
|
|
||||||
|
|
||||||
public class Trainer extends Person{
|
|
||||||
int inspiration;
|
|
||||||
int erfahrung = 0;
|
|
||||||
|
|
||||||
public Trainer(){
|
|
||||||
this.name = Datenbank.genName();
|
|
||||||
this.vorname = Datenbank.genVorname();
|
|
||||||
this.inspiration = (int) (Math.random()*100);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Trainer(String vorname, String name, int inspiration){
|
|
||||||
this.name = name;
|
|
||||||
this.vorname = vorname;
|
|
||||||
this.inspiration = inspiration;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue