Progettazione orientata agli oggetti di un piccolo gioco Java

0

Questo è il problema con cui mi sto occupando. Devo fare un semplice gioco di NIM. Sto imparando java usando un libro fino ad ora ho solo programmi codificati che si occupano di 2 classi. Questo programma avrebbe circa 4 classi, suppongo che includa la classe principale. Il mio problema è che ho difficoltà a progettare le classi come interagiranno tra loro. Voglio davvero pensare e utilizzare un approccio orientato agli oggetti. Quindi la prima cosa che ho fatto è stata la progettazione della Pile CLASS in quanto sembrava la più semplice e più sensata per me in termini di metodi utilizzati.

Ecco cosa ho ottenuto finora per la Pile Class.

package Nim;

import java.util.Random;

public class Pile {

    private int initialSize;


    public Pile(){

    }

    Random rand = new Random();

    public void setPile(){

        initialSize = (rand.nextInt(100-10)+10);
    }


    public void reducePile(int x){

        initialSize = initialSize - x;
    }


    public int getPile(){

        return initialSize;
    }


    public boolean hasStick(){

        if(initialSize>0){

            return true;
        }

        else
        {
            return false;
        }
    }

}

Ora ho bisogno di aiuto per progettare la Player Class. Con ciò intendo che non sto chiedendo a nessuno di scrivere codice per me in quanto ciò sconfigge lo scopo dell'apprendimento, mi stavo chiedendo come avrei progettato la classe del giocatore e cosa avrebbe fatto. La mia ipotesi è che la classe del giocatore conterrebbe il metodo per scegliere la mossa per il computer e anche per ricevere la mossa che l'utente umano fa. Infine, sto indovinando nella classe di gioco che sto supponendo che i turni sarebbero stati effettuati. In questo momento mi sto davvero perdendo, quindi mi chiedevo se qualcuno potesse aiutarmi a pensare a questo problema sarebbe fantastico. Iniziando con la classe del giocatore sarebbe apprezzato.

So che ci sono alcune soluzioni per questo problema online, ma mi rifiuto di guardare perché voglio sviluppare il mio approccio a tali problemi e sono certo che se riuscirò a risolvere questo problema posso risolvere altri problemi.

Mi scuso se questa domanda è un po 'scarsa, ma in particolare ho bisogno di aiuto per progettare la classe Player.

    
posta user2733436 11.06.2014 - 18:24
fonte

1 risposta

2

Un giocatore:

  • Stupid, Smart, or Human

  • Player is an interface and Stupid, Smart, or Human are concrete classes OR

  • Player is an Abstract Class and Stupid, Smart, or Human are concrete classes

L'interfaccia o classe astratta Player dovrebbe contenere tutto ciò che un giocatore dovrebbe fare. I calcoli implementeranno il comportamento del giocatore e lo estenderanno a Stupid, Smart o Human.

L'uomo dovrebbe richiedere l'input e attività stupide, intelligenti o umane per la descrizione del problema.

Questo è un possibile inizio per organizzare l'evidente gerarchia e per aiutarti a separare nella tua mente ciò che ogni parte del Giocatore farà.

Un esempio di come il codice Java potrebbe apparire quando si inizia utilizzando un'interfaccia e un metodo astratto:

public interface Player
{
    abstract void grabMarbles();
    abstract int howManyMarbles();

}

public abstract class GamePlayer implements Player
{

     // Give definitions to all Player classes
     // Add more as abstract
}

public class Stupid extends GamePlayer { // What is Stupid gonna do? }

public class Smart extends GamePlayer { // What is Smart gonna do? }

public class Human extends GamePlayer { // What is Human gonna do? }
    
risposta data 11.06.2014 - 18:39
fonte

Leggi altre domande sui tag