Pagine    Articoli    Prodotti    Forum    Cerca  
Nickname

Password


Non sei registrato?
Registrati a GPI qui!

Puoi anche attivare un vecchio utente GPI e chiedere una nuova password.
I Team

Mappa Team
I nostri utenti

Mappa Utenti

   Tic Tac Toe - Lo sviluppo

Pubblicato da Antonio Fortino il 2012-08-29 10:04:19
Categoria: blog personale
Tags: Unity, development, Tic Tac Toe

Dopo un "lungo" dialogare su cosa non mi permetteva di sviluppare fino in fondo un idea,qualcuno mi ha suggerito di ridimensionare il mio ego creativo in relazione alle mie effettive capacità, e mi ha anche detto : "parti dalle cose più semplici, anche da "tic tac toe", e completale."

Così ho deciso di creare questa pagina per aggiornarvi sullo sviluppo di quel classico gioco,ancora per poco ;), Tic Tac Toe.

 



Sito Web:
thosa.tk


Dev Blog #6 Il Ritorno
2012-10-17 16:56:13

Sono settimane ormai che provo ad implementare un Ai senza intoppi, ma i risultati scarseggiano.
Ho iniziato cercando di implementare l'agoritmo MinMax, e dopo una settimana mi sono ritrovato con del codice scritto male, non funzionante.
Leggendo un pò qua e un pò là, ho capito che l'implementazione del precedente algoritmo non andava bene, perchè non permetteva di vincere (nel caso di un implementazione corretta).
Così, ragionando un pò, sono venuto alla conclusione che sono 4 le possibili mosse che un giocatore fà: Cercare di vincere con la mossa, Bloccare l'avversario per non perdere, Piazzare un segno nel centro o piazzarlo su di un lato.

Come primo approccio ho deciso di far posizionare il segno al Ai in modo random sulla tavola.
Ma dopo una settimana, mi ritrovo un Tic Tac Toe che 2 volte su 3 su freeza quando l'Ai muove.

Posto qui il progetto, sperando che qualcuno riesca a darmi una risposta.

 

Allegato:
 http://www.filehosting.org/file/details/385451/TicTacToe.rar


Dev Diary #5
2012-09-15 18:09:38

Oggi è stata un'altra giornata spesa sugli script, e di buono c'è che ho trovato la soluzione, in parte, al problema che vi ho posto nel precedente dev diary.

 Il problema era il seguente:
Dovevo gestire i turni nel gioco con uno script che era attaccato a tutti i riquadri della tavola.

Ho risolto dividendo lo script in due distinti.
Il primo,che è attaccato all'oggetto "Board",  contiene la variabile che gestisce i turni( una boolean, come mi è stato suggerito), e una funzione Click che ha il compito di cambiare il turno.

Il secondo, che è attaccato a tutti i riquadri, contiene la funzione OnMouseDown che ha il compito di richiamare la funzione Click del primo script.

questo è il primo script:

private var turn : boolean = true ;

function Start () {
print("Cross turn");
}

function Update () {

}

function Click () {
	if(turn) {
		print("Circle turn");
		turn = false;
	}else{
		print("Cross turn");
		turn = true;
	}

}

 

 Questo è il secondo:

var click : LogicScript;
click = GameObject.Find("Board").GetComponent(LogicScript);

function Start () {
}

function Update () {

}

function OnMouseDown() {

	click.Click();
}

 


Dev Diary #4 Question Time
2012-09-14 17:36:47

Un altro giorno, un altro script.

Oggi ho rivisto il mio script per la gestione dei turni,i segni da posizionare e dove; ma sfortunatamente, alla prova del nove, i conti non sono tornati.

Il seguente è lo script in questione, e in pratica gestice e cambia i turni quanto evento click del mouse viene rilevato e in conterporanea dovrebbe posizionare il segno adatto, ad esempio se è il turno della croce deve posizionare la croce nel riquadro dove è stato rilevato l'evento click del mouse.

 

#pragma strict
var cross : GameObject;
var circle : GameObject;
var turn : int;

function Start () {
turn = 0;
print("Cross turn");
}

function Update () {

}

function OnMouseDown() {
	if (turn == 0) {
		cross = new GameObject("Cross");
		cross.transform.position.y = (transform.position.y + 0.1535707);
		cross.transform.localScale.x = 4.633925;
		cross.transform.localScale.y = cross.transform.localScale.x;
		cross.transform.localScale.z = cross.transform.localScale.x;
		print("Circle turn");
		turn = 1;
	}
	if (turn == 1){
		circle = new GameObject("Circle");
		circle.transform.position.y = (transform.position.y + 0.1465906);
		circle.transform.localScale.x = 13.55027;
		circle.transform.localScale.y = circle.transform.localScale.x;
		circle.transform.localScale.z = circle.transform.localScale.x;
		print("Cross turn");
		turn = 0;
	}
}

 

 

 Ma questo è quello che succede:

 

 

 

Ogni volta che viene rilevato l'evento click del mouse, esegue sia i comandi quando è il turno della croce sia quando è il turno del cerchio.

Vi invito a commentare e anche a darmi una mano a risolvere questa matassa.
 


Dev Diary #3
2012-09-12 15:18:00

Dopo più d'una settimana d'assenza, ho ricominciato a lavorare su questo progetto.

Ho fatto diversi passi avanti:
Il primo è che sono riuscito a trovare un sistema , anche se al quanto sconnesso logicamente, per riconoscere la pressione del mouse nel riquadro dove posizionare la croce o il cerchio; in pratica ho creato un GameObject per ogni riquadro,e gli assegno il componente "Box Collider" così da poter usare la funzione OnMouseDown,ma cos' facendo devo applicare lo script con la funzione a tutti i GameOnject/riquadri della tavola da gioco (6 in totale).

 


Il secondo passo avanti è che ho creato delle cose ,alquanto rozze , e sono convintissimo di riuscire a spacciarle per tavola,cerchio e croce ; tutto questo utilizzando Autodesk Maya, cosa che non avevo mai fatto prima.
cerchioecroceboard 


Dev Diary #1/2
2012-08-30 15:58:20

Dopo aver cominciato lo sviluppo,già diversi nodi sono venuti al pettine.

 

L'AI e l'argoritmo minimax per ora sono troppo per me,vorrà dire che mi concentrerò sul player vs player.

 

Unity sembrava la scelta migliore per un progetto 3D, ma potevo mai sapere che per creare e far funzionare un bottone bisogna fare un ampio utilizzo del raycast? Dopo un quasi un giorno di ricerche, non sono ancora riuscito a trovare una soluzione.
Spero di non dover eliminare una D dal 3D per semplificare il lavoro, visto che poi sarebbe la stessa cosa che utilizzare una mega falciatrice per tagliare un filino d'erba.

Nel frattempo, sto cercando di realizzare la tavola da gioco, ed ho già collezionato dodici e dico dodici fogli di blocco note.

 

Per chiudere, vi chiedo qualche consiglio,critica e materiale che mi possa dare una mano.

 

 


Campagne crowfunding

Just One Line
Siamo presenti su

     
Copyright ©2016 - Manifesto - Privacy - Termini di Servizio - Community - Collaboratori - Contattaci