I per últim, ara que les obligacions familiars m'han donat un respir (tinc al menut dormint al meu costat), li posarem una interfície gràfica al nostre joc. Com ja sabeu he triat Unity 3D, per què m'encanta, i accepta el meu llenguatge de programació preferit (C#) per a l'scripting. El primer que he fet és crear uns apassionants gràfics amb el meu supertalent i el... mspaint!!! Per no avorrir-vos, vos pose un exemple:
Com podreu suposar, he creat una imatge per cada "vida", com el típic joc del penjat, així només s'ha de carregar en cada moment la imatge corresponent al nombre de vides (es podria fer més difícil, composant, animant... però el disseny no m'agrada, és molt avorrit i tediós i valdria més l'esperat que l'escurada).
Ara vos pose els objectes que he posat:
Com podreu suposar, he creat una imatge per cada "vida", com el típic joc del penjat, així només s'ha de carregar en cada moment la imatge corresponent al nombre de vides (es podria fer més difícil, composant, animant... però el disseny no m'agrada, és molt avorrit i tediós i valdria més l'esperat que l'escurada).
Ara vos pose els objectes que he posat:
Si mirem la imatge tenim:
- 1 Sprite, Vides que es on anem posant la imatge del penjat segons les vides
- 5 3DText (TextMesh):
- Paraula: La paraula que hem d'encertar, les lletres que encara no hem encertat apareixeran amb un _
- LletresOK i LletresOK: una etiqueta indicant que davall està la llista de lletres encertades/fallades
- LletresOKText i LletresKOText: la llista de lletres encertades i fallades
- La càmera
- Un objecte (buid) GameController on he assignat l'script de control de joc (podria estar en la càmera, però no m'agrada barrejar coses)
Ara anem al codi de l'script assignat a gamecontroller, primer definim les variables que anem a gastar:
private string Word;
private string LettersOK;
private string LettersKO;
private int Lifes;
private HangMan hang;
private TextMesh WordCompletedText;
private TextMesh LletresOKText;
private TextMesh LletresKOText;
private SpriteRenderer SpR;
public Sprite[] Vides;
La variable Sprite serà pública per que així podrem definir-la amb les imatges des de unity sense tocar una línia de codi, ja que les variables públiques apareixen a l'inspector de l'objecte a Unity.
Continuem, a l'start, és a dir a la creació simplement creem l'objecte del joc hang:
void Start ()
{
hang = new HangMan ("hola");
}
Faltaria també posar el wordextractor, però per a este exemple no l'hem gastat, per simplificar. I ara el controlador que estarà en la funció OnGUI, tindrà 4 blocs:
- Assignació de variables
- Mostrar les variables
- Comprovar guanyat/perdut i mostrar missatge
- Comprovar si s'apreta una tecla i executar l'intent d'endivinar
void OnGUI ()
{
//BLOC1
Word = hang.GetWordCompleted ();
Lifes = hang.lifes;
LettersOK = hang.LettersOK;
LettersKO = hang.LettersTried;
WordCompletedText = (TextMesh)GameObject.FindWithTag ("WordCompleted").GetComponent (typeof(TextMesh));
LletresOKText = (TextMesh)GameObject.FindWithTag ("LletresOK").GetComponent (typeof(TextMesh));
LletresKOText = (TextMesh)GameObject.FindWithTag ("LletresKO").GetComponent (typeof(TextMesh));
//BLOC2
LletresOKText.text = LettersOK;
LletresKOText.text = LettersKO;
WordCompletedText.text = Word;
SpR = (SpriteRenderer)GameObject.FindWithTag ("Vides").GetComponent (typeof(SpriteRenderer));
SpR.sprite = Vides [Lifes];
//BLOC3
if (Lifes == 0) {
print ("you die");
}
if (hang.WordCompleted ()) {
print ("you win");
}
//BLOC4
if (Input.anyKeyDown) {
Event e = Event.current;
if (e.isKey) {
if (e.keyCode >= KeyCode.A && e.keyCode <= KeyCode.Z) {
hang.GuessLetter (e.keyCode.ToString ().ToLower () [0]);
}
}
}
}
L'única cosa que pot ser siga complicada és esta línia:
SpR.sprite = Vides [Lifes];
Com al vector d'sprites Vides tenim totes les imatges corresponents al penjat (sense cap part del cos a tot el cos una a una, en total 7: res, cap, tronc, braç esquerre,braç dret, peu esquerre, peu dret), li assignarem el corresponent a les vides que tinga. SpR és l'objecte sprite "Vides" que podem veure a la captura de pantalla de l'entorn Unity que he posat adés.
En breu posaré el projecte per a baixar, i podreu veure la versió web a:
http://hangman.vicentfernandez.cat (Encara no disponible)
Comentaris
Publica un comentari a l'entrada