nei guai facendo un gioco di carte con pygame

0

Sto progettando un gioco di carte giocabile contro il computer.

La regola è molto semplice

  • Sia il giocatore che la CPU ottengono 10 carte da 1 a 10.
  • Giocatore e CPU giocano una singola carta allo stesso tempo, ogni round.
  • Colui che gioca il numero più grande vince il round.
  • Ripeti l'operazione per 10 volte.
  • Alla fine del 10 ° round, colui che ha vinto il maggior numero di round è il vincitore.

Quindi il problema è che non riesco a capire la logica del programma. Il primo turno è stato facile. Avevo immaginato 3 personaggi, uno è audace (disegna uno di 8,9,10 al primo turno) e timida (ne pesca uno di 1, 2, 3 al primo turno), e per l'ultimo, questo è non confermato, ma un personaggio che disegna in modo casuale come grassetto e timido, quindi un giocatore non può essere sicuro di chi sta giocando contro.

Ma non sono riuscito a capire la logica dopo il primo round. Ogni personaggio deve avere una logica o un modello in modo che il giocatore si senta come se stesse giocando contro un altro giocatore.

    
posta springhound 29.05.2015 - 14:38
fonte

2 risposte

1

Elaborare una strategia vincente per questo gioco sarà un problema molto difficile e probabilmente si rivelerà qualcosa di simile a scegliere una carta "alta" il 34,6% delle volte.

considera il seguente gioco in cui la timida gioca in grassetto

B 10,9,8,7
T  1,2,3,4

a questo punto B ha vinto 4 mani, ma a T è garantita la vittoria di 4 con il suo 7,8,9,10 che deve ancora giocare. Tutto si riduce al 5 e al 6.

se T si aspetta che B suoni

B 6,5,4,3,2, 1 .. he should break pattern and play 
T 7,6,5,8,9,10

per 6 vittorie e il gioco. B può solo disegnare in questa fase, facendo corrispondere il suo 6 con T's 5 o abbinando entrambi i 6 e i 5 di esempio.

B 1,2,6,5,3, 4 
T 7,6,5,8,9,10

Quindi, in generale, possiamo vedere che la miglior giocata è rendere ognuna delle tue carte 1 più alta dei tuoi avversari e perdere solo un round con il tuo 1 contro il loro 10

man mano che il gioco procede, ottieni conoscenza delle carte che il tuo avversario ha ancora. Per cercare di elaborare degli stratagemmi, inizierei con una versione condensata del problema.

dì che abbiamo solo 2 carte ciascuna. 1,2. allora dovremmo sempre giocare 2 prima. che garantisce una vittoria o un pareggio

dì che abbiamo 3 carte 1,2,3.

B 3,2,1  is beaten by
T 1,3,2

infatti non abbiamo nemmeno bisogno di prendere in considerazione la 2a e la 3a mossa. T è garantito 1 vittoria in più con il suo 3. che dire

B 2,?,?
T 1,?,?

le restanti combinazioni sono in favore di B

B 2,3,1 win - 2,1,3 draw - 2,3,1 draw - 2,1,3 win
T 1,2,3     - 1,2,3        1,3,2        1,3,2
    
risposta data 29.05.2015 - 15:18
fonte
0

Se ti capisco correttamente, ogni giocatore riceve 10 carte numerate da 1 a 10. Durante ogni round, il giocatore sceglie una delle sue carte da abbinare contro l'altro giocatore.

Fai finta che tu sia il giocatore audace. Sceglierai "8" come prima carta, lasciandoti con 1,2,3,4,5,6,7, _, 9,10.

Il giocatore umano sceglierà un numero inferiore, uguale o superiore al tuo numero.

In ciascuno dei 3 casi, cosa faresti dopo?

  1. Human selected lower: hai vinto. Dato che sei "in grassetto", probabilmente vorrai scegliere un altro numero "alto".
  2. Human ha scelto lo stesso: cravatta. Dato che sei "in grassetto", probabilmente vorrai scegliere un altro numero "alto".
  3. L'uomo ha raccolto più in alto: hai perso. Dato che sei "in grassetto", probabilmente vorrai scegliere un altro numero "alto".

Probabilmente puoi raggruppare i tuoi numeri in "Basso" (1,2,3), "Medio" (4,5,6,7) e "Alto" (8,9,10). Usa un generatore di numeri casuali per scegliere dal gruppo giusto se hai ancora delle carte in quel gruppo. Se quel gruppo è vuoto, passa al gruppo successivo e riprova.

ps - I 3 casi elencati sopra hanno tutti la stessa azione - "probabilmente vorrai scegliere un altro 'alto' numero". Mentre lavori sul gioco, probabilmente vorrai iniziare a pensare a diverse azioni per ogni caso.

Per capire la logica , fai finta di essere quel giocatore e gioca molto lentamente. Un altro modo per capirlo è fingere di avere qualcuno che agisce come quel giocatore. Quella persona non conosce il gioco e non farà nulla a meno che tu non dica loro cosa pensare e cosa fare.

    
risposta data 29.05.2015 - 14:59
fonte

Leggi altre domande sui tag