Gioco di carte "Scopa"

di il
9 risposte

Gioco di carte "Scopa"

Buonasera a tutti,
sto progettando, come da titolo, il gioco "Scopa" in Java.
Mi servirebbe un aiuto riguardo alla progettazione del gioco. Vorrei capire come potrei distribuire l'applicazione e gestire da lato server tutti i client. Che thread dovrei creare per gestire il tutto dal server?
Grazie in anticipo.. attendo risposte dato che non è completa come domanda e ho parecchie indecisioni.

9 Risposte

  • Re: Gioco di carte "Scopa"

    Che livello di conoscenza hai di java?

    la distribuzione non è la progettazione, sono due cose distinte.
    Penso che stai cercando di fare qualcosa che è ben lontano dalle conoscenze che hai acquisito.
    Aiutarti nella progettazione è come chiedere a qualcuno di aiutarlo a progettare e costruire un auto dal nulla.

    Vorrei progettare un auto che cammina e vorrei distribuirla sul territorio nazionale, potete aiutarmi? hehehe da dove iniziamo?
  • Re: Gioco di carte "Scopa"

    Mi sento in colpa per la risposta troppo vaga.

    Facciamo così, direi che per prima cosa ti servono i Socket come requisito, quindi ServerSocket e client.
    Poi devi descrivere tutte le operazioni del gioco da cima a fondo, quindi le regole e le azioni dei singoli giocatori.
    Da qui puoi prendere i nomi per le classi che saranno responsabili... etc...
  • Re: Gioco di carte "Scopa"

    MarkRider ha scritto:


    Che livello di conoscenza hai di java?

    la distribuzione non è la progettazione, sono due cose distinte.
    Penso che stai cercando di fare qualcosa che è ben lontano dalle conoscenze che hai acquisito.
    Aiutarti nella progettazione è come chiedere a qualcuno di aiutarlo a progettare e costruire un auto dal nulla.

    Vorrei progettare un auto che cammina e vorrei distribuirla sul territorio nazionale, potete aiutarmi? hehehe da dove iniziamo?
    Per distribuzione intendo distribuire l'applicazione su più client e gestirla con multithreading dal server.

    MarkRider ha scritto:


    Mi sento in colpa per la risposta troppo vaga.

    Facciamo così, direi che per prima cosa ti servono i Socket come requisito, quindi ServerSocket e client.
    Poi devi descrivere tutte le operazioni del gioco da cima a fondo, quindi le regole e le azioni dei singoli giocatori.
    Da qui puoi prendere i nomi per le classi che saranno responsabili... etc...
    Comunque ho conoscenze di quello che dici, volevo sapere come gestire correttamente da server le varie richieste di tanti client che intendono giocare.
  • Re: Gioco di carte "Scopa"

    1) Crei dei tavoli ovvero degli insiemi di utenti aggiunti per una specifica partita o torneo
    2) Gestisci i turni e i punteggi e le carte di ogni partita, aggiorni la mossa del giocatore di turno per ogni altro giocatore.

    Esempio:
    Il client aggiunto al tavolo 25, durante la fine del suo turno invia al server il dato della mossa:
    Tavolo = 25, TurnoGiocatore = 3, CartaGiocata = 39, mossa 1, ora 11:11':11'.
    Di ritorno si aggiornano tutti i client del tavolo con l'effetto causato da quella mossa:
    (carta 39 cavallo di denari) (carta 29 cavallo di fiori)
    G1.Punti = 0; G2.Punti =0; G3.Punti=2,G4.punti=0; CombinazioneVincente = true, CartaDiDenariAccumulate=1, CartaAccoppiata = 29;
    G1.carte in mano() = {12,24}; G2()...={2,7}; G3()..={10,9}; ecc..

    Il server dovrebbe quindi:
    - ricevere dai client le iscrizioni o le prenotazioni ai tavoli, iniziare l'evento partita alla pressione del tasto [Io Gioco] di almeno 2 iscritti entro un limite di tempo.
    - gestire le partite e aggiornare le carte e i punteggi ad ogni mossa, e visualizzare gli esiti del gioco.
    - gestire le presenze/assenze prolungate e gli abbandoni dal gioco

    Per gestire al meglio ti occorre un timer per liberare l'utente assente dalla partita in corso o al momento di conferma per l'inizio della partita, e una lista di utenti in attesa che lo rimpiazzino e inizino a giocare. Un timer anche per il tempo massimo per effettuare la mossa.
    In caso di abbandono di un giocatore e se il numero dei giocatori rimasti è superiore al minimo consentito, potresti far continuare la partita in modo tale che sia il programma a giocare con un IA di vario livello contro i giocatori rimasti presenti e attivi.

    Usi web service api o altro?
  • Re: Gioco di carte "Scopa"

    Veramente ottima risposta, grazie!
    Per adesso lo sto facendo utilizzabile all'interno della stessa rete..
    Ho un problema con i thread adesso: come posso gestire i messaggi multipli da più utenti ricevuti dal server? Metto in esecuzione un thread che legge i messaggi? thx
  • Re: Gioco di carte "Scopa"

    Di questo dovrebbe occuparsene il codice della partita dell'utente che dovrebbe disabilitare un eventuale pulsante [iscriviti a questo tavolo] se non si è già iscritto ad un altro, oppure riabilitarlo se il giocatore ha annullato l'iscrizione o abbandonato una partita.
    Lato server si leggono gli eventi pervenuti in maniera tale che coincidano i passi incrementali delle mosse nel gioco in corso.
    Un esempio di messaggi multipli?
  • Re: Gioco di carte "Scopa"

    Per esempio, contemporaneamente dei client inviano dei messaggi al server. Mi servirebbe, creo una classe che deriva da thread in ascolto dei messaggi sempre?
  • Re: Gioco di carte "Scopa"

    Io non ho molta esperienza lato server, ho fatto un Poker in 3D desktop e non lato server, se dovessi gestire dei tavoli a livello teorico creerei una lista cronologica degli eventi, smisterei gli eventi per numero dell'evento, numero del tavolo, numero del turno, numero della mossa.
    Se ad esempio al tempo 14:00:00 ci sono 2 o più eventi di 2 o più utenti diversi che si vogliono iscrivere al tavolo 12 ma risultano già 3 posti aggiudicati su 4 allora aggiudichi il posto al primo-prossimo nella lista, filtrando il tipo di richiesta, in questo caso [iscritto]:
    [NRichiesta] - [NGiocatore] - [TipoMessaggio] - [... Altri dati]
    NRichiesta 192838 - Giocatore291990 - Entra - al tavolo 10 - alle 11:00:00
    NRichiesta 192838 - Giocatore291990 - Abbandona - alle 11:00:00
    NRichiesta 192839 - Giocatore201920 - iscritto - al tavolo 12 - alle ore 14:00:00 << Questo in considerazione
    NRichiesta 192840 - Giocatore201919 - iscritto - al tavolo 12 - alle ore 14:00:00 << Questi andranno in coda di attesa
    NRichiesta 192841 - Giocatore103929 - iscritto - al tavolo 12 - alle ore 14:00:00 << Questi andranno in coda di attesa
    NRichiesta 194842 - Giocatore182821 - scarta - 39 - al tavolo 9 - NTurno 3 - NMossa 9 - Punti 4 - alle ore 14:00:00

    Nota che in questo esempio i giocatori al tavolo 9, non possono inviare richieste di azioni di gioco, fin quando è il loro turno, ma possono solo inviare messaggi tipo , abbandona, o essere eliminati per inattività per il tempo max per la mossa.
  • Re: Gioco di carte "Scopa"

    Grazie mille!
Devi accedere o registrarti per scrivere nel forum
9 risposte