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
master
Zocker1999NET 9 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.
*
* @author GruenerWal
* @version 0.0.1
* @version 0.0.2
*/
public class Province extends Actor
{
@ -14,6 +14,9 @@ public class Province extends Actor
private int owner;
private boolean[] nextProvinces;
private int continentID;
private int xPos;
private int yPos;
private int eCount;
/**
* leere Act-Methode
@ -24,70 +27,120 @@ public class Province extends Actor
// GruenerWal war hier :3
}
// Konstruktor, benötigt Sterne
public Province(int i1, int i2, int i3, String s1, int[] ia1)
// Haupt-Konstruktor
public Province(int pID, int cID, int x, int y, int st, String s1, int[] ia1)
{
provinceID = i1;
continentID = i2;
stars = i3;
provinceID = pID;
continentID = cID;
xPos = x;
yPos = y;
if(st > 0) {
stars = st;
}
displayName = s1;
// Der Teil, der sich um die Konvertierung des int-Array in ein boolean-Array kümmert.
int maxNum = 0;
for(int i = 0; i < ia1.length(); i++) {
for(int i = 0; i >= ia1.length(); i++) {
if(maxNum < ia1[i]) {
maxNum = ia1[i];
}
}
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) {
nextProvinces = ia1[i];
}
}
}
// Liefert die Sterne als Integer
public int getStars()
// Zweiter Konstruktor, um auch das boolean-Array gegebenenfalls verwenden zu könnnen.
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
public int getProvinceID()
public int getID()
{
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
public String getDisplayName()
{
return displayName;
}
// Liefert die Sterne als Integer
public int getStars()
{
return stars;
}
// Liefert den Owner als String
public int getOwner()
{
return owner;
}
// Fragt ab, ob die angegebene Provinz in der Nähe von dieser liegt.
public boolean isProvinceNear(int i) {
if(i >= nextProvinces.length()) {
return false;
// Setzt den Owner, benötigt String
public void setOwner(int o)
{
if(o < -1) {
o = -1;
}
return nearProvinces[i];
owner = o;
}
// Liefert die Kontinent-ID als Integer
public int getContinentID()
{
return continentID;
public int getEntityCount() {
return eCount;
}
// Setzt den Owner, benötigt String
public void setOwner(int o)
{
owner = o;
private void checkEntityCount() {
if(eCount < 0) {
eCount = 0;
}
}
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();
}
- 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 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
Noch keine geplant.
- *Utils*
---
@ -180,30 +182,24 @@ Speichert Informationen zu den einzelnen Provinzen ab und stellt diese später a
### Explizite Eigenschaften
- Provinznummer (über Konstruktor festgelegt, **int**)
- Kontinentnummer (über Konstruktor festgelegt, **int**)
- X/Y-Position auf der Karte (über Konstruktor festgelegt; **int**,**int**)
- Angrenzende Provinzen (über Konstruktor festgelegt, **boolean[]**)
- Anzeigename (über Konstruktor festgelegt, **String**)
- Sterne (über Konstruktor festgelegt, **int**)
- Angrenzende Provinzen (über Konstruktor als **int[]** festgelegt, als **boolean[]** gespeichert)
- Besitzer
- 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
Diese zwei Werte legen fest, wo die sichtbaren Eigenschaften der Provinz angezeigt werden sollen.
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
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.
#### 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
Ü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
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(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 getContinentID()**
- **boolean isProvinceNear(int)**
- **String getDisplayName()**
- **int getStars()**

Loading…
Cancel
Save