# Übungsaufgabe java programmieren



## esiesi89 (19. Jan 2017)

Hallo zusammen,

ich habe eine Aufgabe für die Uni zu erledigen wo ich einen Tannenbaum-Kegeln programmieren soll. Ich bin bei einer Aufgabe stecken geblieben:

Mein jetziger Code

```
public class Player {

    String name;
    int id;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
   
    public Player(String name, int id){
   
    }
   
}
```


```
package tannen;

public interface IGame {

    Player addPlayer(String name);

    Player getActivePlayer();

    int getActivePlayerCount();

    int getMaxPlayerCount();

    String getName();

    int getPinCount();

    int getPinsLeft();

    Player getPlayer(int id);

    int getRound();

    int getRoundCount();

    int[] getScore(Player player);

    int getThrow();

    Player getWinner();

    boolean hasFinished();

    boolean hasStarted();

    boolean startGame();

    boolean throwBall(int count);
}
```


```
package tannen;


public abstract class Game implements IGame{

    int maxNumPlayers;
    int playerCount;
    Player currentPlayer;
    Player [] allPlayers;
    int round;
    boolean gameIsRunning;
   
    /**
     * Constructs an instance of the class </code>Game</code> initializes all the necessary date.
     * @param maxNumPlayer the maximum amount of players for this specific game
     */
   
    Game (int maxPlayers) {
       
        maxNumPlayers =maxPlayers;
        playerCount =0;
        Player [] allPlayers = new Player [maxPlayers];
        round =1;
        gameIsRunning = false;
    }
   
    public Player addPlayer (String name) {
        if (playerCount > maxNumPlayers) {
            System.out.println("no player capacity left.");
        }
        if (gameIsRunning) {
            System.out.println("game has already started");
        }
        allPlayers [playerCount] = new Player (name, playerCount);
        playerCount++;
       
        return allPlayers [playerCount-1];
    }
   
    public Player getActivePlayer () {
        return currentPlayer;
    }
   
   
    public int getActivePlayerCount () {
        return playerCount;
    }
   
   
    public int getMaxPlayerCount () {
        return maxNumPlayers;
    }
   
   
    public Player getPlayer (int id) {
        if (id >= playerCount) return null;
        else return allPlayers [id];
    }
   

    public int getRound() {
        return round;
    }
   

    public boolean hasStarted () {
    if (gameIsRunning) return true;
    else return false;
    }
   

    public boolean startGame () {
        if (playerCount < 2) {
            System.out.println("zu wenige Spieler");
            return false;
        }
        if (hasStarted()) {
            System.out.println("Spiel läuft bereits.");
            return false;
        }
       
        gameIsRunning = true;
        return true;
    }
}
```


```
package tannen;
public class TannenbaumKegeln extends Game{

    int pinCount;
    int pinsHit;
    TannenbaumKegeln (int maxPlayers) {
        super(maxPlayers);
        pinCount = 9;
        pinsHit = 0;
    }
   
    @Override
    public String getName() {
        return "Tannenbaum Kegeln";
    }
   
   
    @Override
    public int getPinCount() {
        return pinCount;
    }
   
    @Override
    public int getPinsLeft() {
        return pinCount-pinsHit;
    }
    @Override
    public int getRoundCount() {
        return 100;
    }
   
    @Override
    public int [] getScore (Player player) {
   
    }
   
    @Override
    public int getThrow() {
        if () return 1;
        else () return 2;
    }
   
    @Override
    public Player getWinner() {
        for (Player aPlayer: allPlayers){
            for (int i = 0; i < 9; i++){
               
                if (i == 8 && getScore(aPlayer)[i] == 0) return aPlayer;
                //int remainingPins: getScore(aPlayer){
           
            if (getScore(aPlayer)[i] == 0) continue;
            else break;
        }
    }
        for (Player aPlayer: allPlayers){
            for (int remainingPins: getScore(aPlayer)) {
               
            }
        }
    }
   
    @Override
    public boolean throwBall (int count) {
        if(!gameIsRunning) {
            System.out.println("Das Spiel läuft noch nicht oder hat bereits geendet.");
            return false;
        }
        if (count > getPinsLeft() || count < 0) {
            System.out.println("ungültige Pineingabe");
            return false;
        }
    }
   
}
```
 Die Aufgabe lautet:

Es gibt 9 Kegel (Pins), welche von einer Bowlingkugel umgeworfen werden müssen.
• Jede_r Spieler_in hat zwei Würfe pro Runde. Nach diesen zwei Würfen ist der_ie nächste Spieler_in an der Reihe.
• Schafft es ein_e Spieler_in, mit nur einem Wurf alle Pins abzuräumen (ein sogenannter
”Strike“), dann wird bereits nach einem Wurf der_ie Spieler_in gewechselt.
• Nachdem alle Spieler_innen in einer Runde dran waren, fängt eine neue Runde an.
Das Ziel des Spiels ist es, alle angezeigten Punkte des Tannenbaums (siehe unten) wegzustreichen .Explizit heißt das, dass in jeder Runde die erreichte Pin-Zahl weggestrichen werden kann, sofern sie noch vorhanden ist.
Erreicht ein_e Spieler_in 9 Punkte in einer Runde, so kann er/sie die 9 wegstreichen, sofernsie noch vorhanden ist. Erreicht er/sie 4 Punkte, kann er/sie eine 4 wegstreichen, usw. Wer als erstes alle Ziffern weggestrichen hat, hat gewonnen.
• Sollte nach 100 Runden immer noch kein_e Sieger_in feststehen, hat der_ie Spieler_in mit den wenigsten verbleibenden Ziffern gewonnen.
Implementieren Sie die Klasse TannenbaumKegeln als Erbe der abstrakten Klasse Game.
Der Konstruktor der Klasse soll die maximale Anzahl von Spielern_innen die dem Spiel beitreten können als Argument nehmen und alle Attribute passend initialisieren.

Ich hoffe ihr könnt mir helfe. vielen dank


----------

