Scrivere un motore di gioco usando javascript

1

.. Con questo intendo un gestore logico per un gioco di scacchi. Convalida sostanzialmente una mossa e controlla se qualcuno ha vinto.

Ora ignora la complessità del gioco (se puoi ..) Mi piacerebbe una sorta di codice psuedo su come apparirebbe usando i callback in javascript.

Per ragioni argomentative, immagina che una volta che una mossa è stata completata nel browser, invia un oggetto JSON del pezzo che è stato spostato e in quale spazio è stato spostato. Sul server abbiamo accesso a un oggetto JSON che contiene i dati per la scheda completa. Con queste informazioni mi aspetto di trasmetterlo al mio motore e determinare dall'output se la mossa è valida..e in tal caso è una mossa vincente?

Non sto cercando alcuna logica specifica su come determinare una mossa negli scacchi - > solo una sorta di esempio / template psuedo del flusso del gioco usando il paragrafo precedente come guida per ciò che deve essere fatto.

La ragione di ciò è che vorrei capire come i callback possono essere usati per produrre qualcosa di questa natura al contrario del codice sincrono.

    
posta Julio 09.09.2011 - 00:17
fonte

1 risposta

1

Ho interpretato correttamente che hai un server che registra tutti i layout della scheda di gioco, e ogni gioco ha due client che possono vedere la scacchiera e spostare i pezzi?

Quindi c'è un programma server e un programma client:

Il giocatore cliente sposta il pezzo nel quadrato di destinazione:

If moving piece from piece.square to destination is an invalid move then
    Alert "You cannot move that piece there."
Else
    Send (game, piece, destination) to server
    While within 30 second timeout
        Listen for response
    If no response received then
        Alert "Cannot contact server."
    Else
        If response is failure then
            Alert "You cannot move that piece there."
        Else
            Move response.piece to response.destination
            If response.check is check then
                Alert "You put them in check."
            ElseIf response.check is checkmate then
                Alert "You win!."
                End game
            Wait for the server to say it's your turn

Il server riceve una mossa:

Retrieve board for game
If moving piece from piece.square to destination is an invalid move then
    Send (failure) to client
Else
    Move piece to destination
    Save game board
    Check = check if player is safe, in check or in checkmate
    Send (piece, destination, check) to client
    Send (your move, check) to other client

Il client attende il suo turno:

Until a response is received
    Listen for response
If response.check is check then
    Alert "You are in check."
If response.check is checkmate then
    Alert "You lose!"
    End game
Let player make their move.

Il programma verifica che lo spostamento sia valido. Controlla dal lato client per impedire l'invio di una mossa evidentemente non valida al server e sprecare il tempo del giocatore. Controlla sul server per garantire che un giocatore non stia inviando pacchetti compromessi per fare mosse illegali. Il server restituisce il trasferimento al client perché ciò su cui il server ha agito e rappresenta accuratamente lo stato del gioco.

    
risposta data 09.09.2011 - 01:15
fonte

Leggi altre domande sui tag