sigla.pngMinisterul Educat ¸iei Nat ¸ionale s ¸i Cercet ˘arii S ¸tiint ¸ifice Universitatea ”OVIDIUS” Constant ¸a Facultatea de Matematic ˘a s ¸i… [608826]

sigla.pngMinisterul Educat ¸iei Nat ¸ionale s ¸i Cercet ˘arii S ¸tiint ¸ifice
Universitatea ”OVIDIUS” Constant ¸a
Facultatea de Matematic ˘a s ¸i Informatic ˘a
Specializarea Informatic ˘a
StrategoAI – analiza s ¸i implementarea unui
juc˘ator inteligent pentru jocul Stratego
Lucrare de licent ¸ ˘a
Coordonatori s ¸tiint ¸ifici:
Lect. univ. dr. B ˘autu Elena Coordonator Principal
Prof. univ. dr. Popovici Mircea Coordonator Secundar
Absolvent: [anonimizat] ¸a
2018

Cuprins
Cuprins i
Lista Figurilor 1
1 Introducere 2
1.1 Jocul Stratego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 De ce Stratego? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Elementele care determin ˘a animat ¸ia . . . . . . . . . . . . . . . . . . . . . 3
2 Starea actual ˘a a domeniului 5
3 Solut ¸ia propus ˘a 6
4 Prezentarea aplicat ¸iei 7
Referint ¸e bibliografice 8
i

Lista Figurilor
1.1 Explicat ¸ie figur ˘a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1

Capitolul 1
Introducere
1.1 Jocul Stratego
Stratego este un joc ˆın care juc ˘atorii det ¸in informat ¸ii incomplete. Fiecare juc ˘ator are o armat ˘a
iar scopul final este capturarea steagului inamic. Locul exact al pieselor este, la ˆınceput,
cunoscut doar de cel ce le det ¸ine. Juc ˘atorii ˆıs ¸i mut ˘a cˆate o pies ˘a, pe r ˆand, pe o pozit ¸ie
al˘aturat ˘a, liber ˘a sau pe care se afl ˘a o pies ˘a a inamicului. ˆIn cel de-al doilea caz, o b ˘at˘alie are
loc. Piesa mai slaba este eliminat ˘a iar identitatea piesei c ˆas ¸tig ˘atoare este descoperit ˘a.
1.2 De ce Stratego?
Am ales aceast ˘a tem ˘a, deoarece sunt pasionat de jocurile de strategie, precum,S ¸ah, Go, Dame
s ¸i Stratego. Acest tip de jocuri dezvolt ˘a gˆandirea analitic ˘a s ¸i ajut ˘a la imbun ˘at˘at ¸irea memoriei.
De-a lungul timpului implementarea unor juc ˘atori inteligent ¸i eficient ¸i pentru astfel de
jocuri a reprezentat un pas esent ¸ial ˆın dezvoltarea inteligent ¸ei artificiale s ¸i int ¸elegerea g ˆandirii
umane. ˆIn prezent, exista o mult ¸ime de algoritmi dezvoltat ¸i pentru jocuri precum s ¸ahul, unde
calculatorul poate investiga toate posibilele mut ˘ari chiar s ¸i cu un anumit num ˘ar de pas ¸i ˆın
viitor. X s ¸i O, Go sau Awari sunt suficient de simplu de rezolvat, ˆınsemn ˆand c ˘a, pentru toate
situat ¸iile, calculatorul s ¸tie care este cea mai bun ˘a solut ¸ie pentru a cas ¸tiga jocul.
ˆIn cazul jocului Stratego, spre deosebire de celelalte, enumerate anterior, informat ¸ia
este incomplet ˘a ceea ce ˆınseamn ˘a c˘a necesit ˘a abilit ˘at ¸i umane precum analizarea g ˆandirii
adversarului. Misiunea unui juc ˘ator inteligent ,pentru un astfel de joc, este extrem de di-
ficil˘a. Acesta este nevoit s ˘a ghiceasc ˘a piesele adversarului s ¸i ˆın acelas ¸i timp s ˘a intuiasca
urm˘atoarele mis ¸c ˘ari. Juc ˘atorul, pe care mi-am propus s ˘aˆıl realizez, este capabil s ˘a creeze
formule de start c ˆat mai originale, s ˘a fac ˘a presupuneri legate de piesele necunoscute ale ad-
versarului s ¸i s ˘a fac ˘a mut ˘ari cˆat mai corecte pentru al ajuta ˆın cˆas ¸tigarea unui joc de Stratego.
2

Introducere Elementele care determin ˘a animat ¸ia
Figura 1.1 : Explicat ¸ie figur ˘a.
1.3 Elementele care determin ˘a animat ¸ia
ˆIn primul r ˆand ne vor trebui c ˆateva variabile care s ˘a cont ¸in ˘a deplasarea p ˆan˘aˆın momentul
curent.
static float axisRot = 0.0f;
static float globRotR = 0.0f;
static float globRotG = 120.0f;
static float globRotB = 240.0f;
Astfel avem o variabil ˘a ce ret ¸ine rotat ¸ia ˆın jurul axei proprii, axisRot ,ˆımpreun ˘a cu alte 3
variabile ce ret ¸in rotat ¸iile fiec ˘arui cub ˆın jurul originii (globRotR, globRotG, globRotB) .
Arbitrar, am atribuit un caracter static acestor variabile; acest lucru face ca variabilele
marcate cu static s˘aˆıs ¸i p˘astreze valorile de la o iterat ¸ie la alta. Acelas ¸i efect se putea
obt ¸ine s ¸i cu variabile globale. Urmeaz ˘a afis ¸area celor 3cuburi:
glColor3f (1.0f, 0.0f, 0.0f);
glPushMatrix ();
glTranslatef (0.0f,0.0f,-20); //deplasat pe axele x, y, z
glRotatef (globRotR, 0,0,1);
glTranslatef (5.0f,0.0f,0.0f);
glRotatef (axisRot,0,1,0); //rotit pe axa Y
glutSolidCube (2); //cub cu latura 2
glPopMatrix ();
glColor3f (0.0f, 1.0f, 0.0f);
glPushMatrix ();
glTranslatef (0.0f,0.0f,-20); //deplasat pe axele x, y, z
glRotatef (globRotG, 0,0,1);
glTranslatef (5.0f,0.0f,0.0f);
glRotatef (axisRot,0,1,0); //rotit pe axa Y
glutSolidCube (2); //cub cu latura 2
glPopMatrix ();
glColor3f (0.0f, 0.0f, 1.0f);
glPushMatrix ();
glTranslatef (0.0f,0.0f,-20); //deplasat pe axele x, y, z
glRotatef (globRotB, 0,0,1);
glTranslatef (5.0f,0.0f,0.0f);
glRotatef (axisRot,0,1,0); //rotit pe axa Y
glutSolidCube (2); //cub cu latura 2
3

Introducere Elementele care determin ˘a animat ¸ia
glPopMatrix ();
Este important de observat modul ˆın care sunt aplicate transform ˘arile pe fiecare cub ˆın parte:
1.prima dat ˘a cubul este deplasat cu 20pe axa Ozastfel ˆıncˆat s˘a fie vizibil,
2.apoi se rotes ¸te cubul cu un unghi,
3.datorit ˘a rotat ¸iei, translat ¸ia aplicat ˘a,+5pe axa Ox, va fi conform ˘a orient ˘arii obiectului,
4.ˆınainte de a fi afis ¸at cubul se aplic ˘a s ¸i o rotat ¸ie ˆın jurul axei sale.
Dup˘a afis ¸area celor 3cuburi, urmeaz ˘a pasul de modificare a gradelor de rotat ¸ie folosite.
axisRot += 1.0f; axisRot=fmod(axisRot, 360.0f);
globRotR += 0.5f; globRotR=fmod(globRotR, 360.0f);
globRotG += 0.5f; globRotG=fmod(globRotG, 360.0f);
globRotB += 0.5f; globRotB=fmod(globRotB, 360.0f);
Fiind variabile statice, acestea ˆıs ¸i p˘astreaz ˘a valorile de la o iterat ¸ie la alta. Mai exact, aplic ˆand
o incrementare, axisRot += 1.0f , obt ¸inem o nou ˘a rotat ¸ie care difer ˘a de vechea rotat ¸ie
cu un grad.
Funct ¸ia fmod() este echivalentul operatorului %, dar act ¸ioneaz ˘a asupra variabilelor ˆın
virgul ˘a flotant ˘a. Mai exact, fmod(a,b) returneaz ˘a restul, ˆın virgul ˘a flotant ˘a, aˆımp˘art ¸irii
luialab.ˆIn acest exemplu ne ajut ˘a s˘a p˘astr˘am variabilele ˆın intervalul [0;360) grade.
4

Capitolul 2
Starea actual ˘a a domeniului
5

Capitolul 3
Solut ¸ia propus ˘a
6

Capitolul 4
Prezentarea aplicat ¸iei
7

Referint ¸e bibliografice
8

Similar Posts