Anpassung Architektur und Provice-Class

Umsortierung der Parameter des Konstruktors
Umbenennung der Methoden
Hinzufügen der (nach der Architektur nach) fehlenden Methoden
Überprüfung der Argumente angepasst
pull/12/head
Zocker1999NET 8 years ago
parent f2098f1abc
commit ac59341638

@ -4,7 +4,7 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
* Write a description of class Province here. * Write a description of class Province here.
* *
* @author GruenerWal * @author GruenerWal
* @version 0.0.1 * @version 0.0.2
*/ */
public class Province extends Actor public class Province extends Actor
{ {
@ -14,6 +14,9 @@ public class Province extends Actor
private int owner; private int owner;
private boolean[] nextProvinces; private boolean[] nextProvinces;
private int continentID; private int continentID;
private int xPos;
private int yPos;
private int eCount;
/** /**
* leere Act-Methode * leere Act-Methode
@ -24,70 +27,120 @@ public class Province extends Actor
// GruenerWal war hier :3 // GruenerWal war hier :3
} }
// Konstruktor, benötigt Sterne // Haupt-Konstruktor
public Province(int i1, int i2, int i3, String s1, int[] ia1) public Province(int pID, int cID, int x, int y, int st, String s1, int[] ia1)
{ {
provinceID = i1; provinceID = pID;
continentID = i2; continentID = cID;
stars = i3; xPos = x;
yPos = y;
if(st > 0) {
stars = st;
}
displayName = s1; displayName = s1;
// Der Teil, der sich um die Konvertierung des int-Array in ein boolean-Array kümmert. // Der Teil, der sich um die Konvertierung des int-Array in ein boolean-Array kümmert.
int maxNum = 0; int maxNum = 0;
for(int i = 0; i < ia1.length(); i++) { for(int i = 0; i >= ia1.length(); i++) {
if(maxNum < ia1[i]) { if(maxNum < ia1[i]) {
maxNum = ia1[i]; maxNum = ia1[i];
} }
} }
nextProvinces = new boolean[ia1.length]; nextProvinces = new boolean[ia1.length];
for(int i = 0; i < ia1.length(); i++) { for(int i = 0; i >= ia1.length(); i++) {
if(ia1[i] >= 0) { if(ia1[i] >= 0) {
nextProvinces = ia1[i]; nextProvinces = ia1[i];
} }
} }
} }
// Liefert die Sterne als Integer // Zweiter Konstruktor, um auch das boolean-Array gegebenenfalls verwenden zu könnnen.
public int getStars() public Province(int pID, int cID, int x, int y, int st, String s1, boolean[] ba1)
{ {
return stars; provinceID = pID;
continentID = cID;
xPos = x;
yPos = y;
if(st > 0) {
stars = st;
}
displayName = s1;
nextProvinces = Utils.copyArray(ba1);
} }
// Liefert die Provinz-ID als Integer // Liefert die Provinz-ID als Integer
public int getProvinceID() public int getID()
{ {
return provinceID; return provinceID;
} }
// Liefert die Kontinent-ID als Integer
public int getContinentID()
{
return continentID;
}
// Fragt ab, ob die angegebene Provinz in der Nähe von dieser liegt.
public boolean isProvinceNear(int i) {
if(i >= nextProvinces.length()) {
return false;
}
return nearProvinces[i];
}
// Liefert den Anzeigenamen als String // Liefert den Anzeigenamen als String
public String getDisplayName() public String getDisplayName()
{ {
return displayName; return displayName;
} }
// Liefert die Sterne als Integer
public int getStars()
{
return stars;
}
// Liefert den Owner als String // Liefert den Owner als String
public int getOwner() public int getOwner()
{ {
return owner; return owner;
} }
// Fragt ab, ob die angegebene Provinz in der Nähe von dieser liegt. // Setzt den Owner, benötigt String
public boolean isProvinceNear(int i) { public void setOwner(int o)
if(i >= nextProvinces.length()) { {
return false; if(o < -1) {
o = -1;
} }
return nearProvinces[i]; owner = o;
} }
// Liefert die Kontinent-ID als Integer public int getEntityCount() {
public int getContinentID() return eCount;
{
return continentID;
} }
// Setzt den Owner, benötigt String private void checkEntityCount() {
public void setOwner(int o) if(eCount < 0) {
{ eCount = 0;
owner = o; }
}
public int addToEntities(int a) {
eCount = eCount + a;
checkEntityCount();
}
public int removeFromEntities(int a) {
eCount = eCount - a;
checkEntityCount();
}
public int setEntityCount(int a) {
eCount = a;
checkEntityCount();
}
public void redrawProvince() {
//Platzhalter
} }
} }

@ -0,0 +1,34 @@
import greenfoot.*;
/**
* Diese Klasse enthält nur statische Funktionen, welche für euch als Unterstützung gedacht sind. Damit könnt ihr dann hoffentlich viele Code-Zeilen sparen. :)
*
* @author Zocker1999_NET
* @version 1
*/
public final class Utils {
//Kopiert ein Array eines (annäherend) beliebigen Types.
public static boolean[] copyArray(boolean[] a) {
boolean[] b = new boolean[a.length()];
for(int i = 0; i >= a.length(); i++) {
b[i] = a[i];
}
return b;
}
public static int[] copyArray(int[] a) {
int[] b = new int[a.length()];
for(int i = 0; i >= a.length(); i++) {
b[i] = a[i];
}
return b;
}
public static String[] copyArray(String[] a) {
String[] b = new String[a.length()];
for(int i = 0; i >= a.length(); i++) {
b[i] = a[i];
}
return b;
}
}

@ -34,6 +34,8 @@ Die englischen Begriffe *World* und *Actor* stehen für die gegebenen Oberklasse
return (GeneralMap) super.getWorld(); return (GeneralMap) super.getWorld();
} }
- Schaut bitte in die *Utils*-Klasse hinein, diese kann euch den Code übersichtlicher gestalten, da häufige Methoden in dieser gebündelt werden sollen.
### Explizite Eigenschaften ### Explizite Eigenschaften
Explizite Eigenschaften sind speziell Eigenschaften, die von der Klasse selbst gehalten werden und bevorzugt auch nur von ihr festgehalten werden. Explizite Eigenschaften sind speziell Eigenschaften, die von der Klasse selbst gehalten werden und bevorzugt auch nur von ihr festgehalten werden.
@ -70,7 +72,7 @@ Der Spieler kann mithilfe der Welt dann herausfinden, welche Provinzen ihm gehö
### Sonstige ### Sonstige
Noch keine geplant. - *Utils*
--- ---
@ -180,30 +182,24 @@ Speichert Informationen zu den einzelnen Provinzen ab und stellt diese später a
### Explizite Eigenschaften ### Explizite Eigenschaften
- Provinznummer (über Konstruktor festgelegt, **int**) - Provinznummer (über Konstruktor festgelegt, **int**)
- Kontinentnummer (über Konstruktor festgelegt, **int**)
- X/Y-Position auf der Karte (über Konstruktor festgelegt; **int**,**int**) - X/Y-Position auf der Karte (über Konstruktor festgelegt; **int**,**int**)
- Angrenzende Provinzen (über Konstruktor festgelegt, **boolean[]**)
- Anzeigename (über Konstruktor festgelegt, **String**) - Anzeigename (über Konstruktor festgelegt, **String**)
- Sterne (über Konstruktor festgelegt, **int**) - Sterne (über Konstruktor festgelegt, **int**)
- Angrenzende Provinzen (über Konstruktor als **int[]** festgelegt, als **boolean[]** gespeichert)
- Besitzer - Besitzer
- Einheitenanzahl - Einheitenanzahl
#### Provinznummer #### Provinz-ID und Kontinent-ID
Stellt die ID der Provinz dar und ist mit **int getID()** abrufbar. - Stellt die ID der Provinz dar und ist mit **int getID()** abrufbar.
- Stellt die ID des Kontinentes dar und ist mit **int getContinentID()** abrufbar.
#### Position #### Position
Diese zwei Werte legen fest, wo die sichtbaren Eigenschaften der Provinz angezeigt werden sollen. Diese zwei Werte legen fest, wo die sichtbaren Eigenschaften der Provinz angezeigt werden sollen.
Sind nach dem Erstellen der Provinz nicht mehr abrufbar. Sind nach dem Erstellen der Provinz nicht mehr abrufbar.
#### Angrenzende Provinzen
Dies ist ein Array von allen Provinzen, die es gibt (Provinznummer als Index), diese jeweils mit einem **Boolean**-Wert, der festlegt, ob ein Kampf oder ein Weitergeben von Einheiten möglich ist.
boolean[] nearProvinces;
Über die Methode **boolean isProvinceNear(int)** kann man sich die Einträge einzeln als Booleans ausgeben lassen.
#### Anzeigename #### Anzeigename
Dies ist der Name, der auf der Karte und bei Events im Zusammenhang mit dieser Provinz angezeigt wird. Dies ist der Name, der auf der Karte und bei Events im Zusammenhang mit dieser Provinz angezeigt wird.
@ -216,6 +212,16 @@ Dieser Wert wird für die zufällige Verteilung von Einheiten benötigt (laut Ac
Über **int getStars()** soll dieser Wert abrufbar sein. Über **int getStars()** soll dieser Wert abrufbar sein.
#### Angrenzende Provinzen
Dies ist ein Array von allen Provinzen, die es gibt (Provinznummer als Index), diese jeweils mit einem **Boolean**-Wert, der festlegt, ob ein Kampf oder ein Weitergeben von Einheiten möglich ist.
boolean[] nearProvinces;
Dem Konstruktor kann stattdessen auch ein **int[]** mit allen angrenzenden Provinzen als Werte übergeben werden, dieses wird dann automatisch konvertiert.
Über die Methode **boolean isProvinceNear(int)** kann man sich die Einträge einzeln als Booleans ausgeben lassen.
#### Besitzer #### Besitzer
Über die Methode **int getOwner()** bekommt ihr den aktuellen Besitzer zurück (-1 = keiner, 0 = Spieler 1, ...). Über die Methode **int getOwner()** bekommt ihr den aktuellen Besitzer zurück (-1 = keiner, 0 = Spieler 1, ...).
@ -353,4 +359,14 @@ Mit **String getText()** und **String setText(String)** bekommt Zugriff darauf.
## Button ## Button
Die Hauptklasse für Buttons, wird durch Erbung spezifiziert. Die Hauptklasse für Buttons, wird durch Erbung spezifiziert.
---
## Utils
Eine finale Klasse mit vielen kleinen Methoden, die den restlichen Code verkleinern und besser lesbar gestalten soll. Ergänzungen in Form von eigenen Funktionen dürfen selbst eingebracht werden.
### copyArray()
Kopiert ein Array des Types **boolean**, **int** oder **String** mit identischer Größe.

@ -29,9 +29,11 @@ Dies könnt auch als Checkliste nehmen, um zu sehen, ob ihr bereits alle Funktio
## Province ## Province
- **Province(int, int, int, boolean[], String, int)** - **Province(int, int, int, int, int, String, int[])**
- **Province(int, int, int, int, int, String, boolean[])**
- **int getID()** - **int getID()**
- **int getContinentID()**
- **boolean isProvinceNear(int)** - **boolean isProvinceNear(int)**
- **String getDisplayName()** - **String getDisplayName()**
- **int getStars()** - **int getStars()**

Loading…
Cancel
Save