Thymio gioca a Tris

Introduzione :

Questo progetto è stato completato nell'ambito del corso di computer opzionale 2013-2014 presso la Scuola Superiore Gymnase de Beaulieu di Losanna. Lo scopo di questo lavoro di valutazione è stato quello di implementare un'applicazione che consente a due persone di giocare a "Tic-tac-toe" (tris) con i robot Thymio.

Materiale:

  • 2 Thymio
  • Foglio di carta formato A3/A2
  • Pennarello

thymiotictactoe


Approccio

Concetti generali:

Questo progetto utilizza due Thymio. Il primo è utilizzato per disegnare le forme nella griglia 3 x 3 Tic-tac-toe, si chiama "designer". Il secondo si occupa della gestione dei turni degli utenti e dei riquadri della griglia (calcolo vittorie / pareggi), delle azioni dell'utente, verificando la loro validità, nonché l'invio delle coordinate selezionate al robot designer. Questo robot è chiamato "master".

Operativitá del "designer" :

Il codice del designer è separato in 3 blocchi, il primo rappresenta le funzioni motorie di base ed imposta la velocità del motore in avanti, indietro, ruotare, ecc. Queste sono usate nel secondo blocco, rappresentato dal loop in un timer onevent consentendo a Thymio di creare figure complesse come una croce, un quadrato, rotazioni e movimento lineari. Tutti i dati sono basati sull'incremento di un contatore che indica al Thymio quale funzione motoria usare e quando, prendendo spunto da (Thymio disegnatore).

Il primo blocco è in grado di fornire una serie di istruzioni per il secondo blocco da svolgere a seconda del riquadro di destinazione. Si potrebbe riassumere così:
ricezione del riquadro di destinazione da parte del gestore di evento prox.comm
→ movimento lungo l'asse x
→ movimento sull'asse y
→ disegno della forma appropriata a seconda del turno del giocatore.
Il designer utilizza le seguenti caratteristiche del Thymio:

  • Motori
  • Comunicazione infrarossi tra robot
  • Penna a sfera per il disegno
  • Led per l'informazione visiva

Codice sorgente del "designer"

Operativitá del "master" :

Il comportamento del master può essere descritto così:
inizio del gioco
→ eseguire le mosse
→ la partita finisce con una vittoria / pareggio.
Una mossa si compone di diverse parti:
inizio dell'azione
→ colonna / selezione coordinata x
→ conferma di linea / coordinata y di selezione
→ conferma di validazione / rifiuto del punto di entrata
→ controllare lo stato delle scatole (vittoria? )
→ Se no: l'invio del "designer" la coordinata di destinazione, in attesa della risposta del "designer" e alla fine del turno, se vittoria: fine.
La scelta della colonna e di riga è realizzata con i pulsanti laterali del Thymio, conferma con il tasto centrale. Le informazioni sono attualmente passa attraverso la luce e il suono, i led e l'altoparlante indica: quale giocatore deve giocare (in basso a destra: verde / rosso), è il giocatore selezionando la colonna / riga (in basso a sinistra: verde / viola), qual è il valore corrente di x / y (leds.circle) Il gioco è gestito da un elenco (array) di 9 interi, permettendo una vera tabella 3 x 3 da simulare. Ognuno di questi numeri interi può prendere tre valori: -1 se è stato giocato dal giocatore 2, 0 se è vuoto, 1 se è stato giocato da giocatore 1 Per una coordinata per essere accettato, la casella di destinazione deve essere vuoto, altrimenti. viene generata un'eccezione. Questo array serve anche per gestire la vittoria di uno dei giocatori, è sufficiente quando si verifica per un totale di ogni riga / colonna / diagonale. Se una di queste somme dà 3 o - 3, sappiamo che uno dei due giocatori ha vinto. Se la coordinata è convalidato, viene inviato al progettista nella forma "xy", ed è lì estratta. Il master utilizza pertanto le seguenti caratteristiche del Thymio:

  • La comunicazione tra robot
  • LED e altoparlante per trasmettere le informazioni sullo stato di avanzamento del gioco
  • I pulsanti per gestire il gioco

Codice sorgente del "master" :


Sessione di gioco

In questo video é possibile vedere una sessione di gioco:


Discussione e possibili miglioramenti:

Add a New Comment
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License