Dezvoltarea unui joc folosind limbajul C in mediul de dezvoltare Unity 3D [302842]
[anonimizat] C# in mediul de dezvoltare Unity 3D
Coordonator Știintific
Conf.univ.dr Coculescu Cristina
Student: [anonimizat] 2017
Cuprins
Cap. 1 STUDIUL ȘI ANALIZA SISTEMULUI EXISTENT
1.1 Prezentarea succintă a [anonimizat]
1.2 Prezentarea istoricului companiei
1.3 Rolul și poziția unității în economie
1.4 Studiul sistemului de conducere
Cap. 2. PREZENTAREA TEHNOLOGIILOR INFORMATICE UTILIZATE ÎN CADRUL DEZVOLTĂRII APLICAȚIEI
2.1 Prezentarea limbajului C#
2.2 Scurt istoric al limbajului
2.3 Exemple de programe
2.4 Prezentarea programului Visual Studio
2.5 Prezentarea programului Unity
Cap. 3 PROIECTAREA DE DETALIU A APLICATIEI INFORMATICE
3.1 Definirea obiectivelor aplicației informatice
3.1.2 Scurt istoric al genului
3.2 Elementele de bază ale acțiunii în Tower Defense
3.3 Dezvoltarea aplicatiei
3.4 Proiectarea interfetei
Cap. 4 Prezentarea Produsului software
4.1 Resursele software necesare rularii aplicatiei
4.2 Cerintele platformei hardware ale produsului
Concluzii
Anexe
Anexa nr. 1: [anonimizat], dezvoltarea unui joc de tipul Arcade Tower Defense pentru sistemul de operare Windows împreună cu tehnologiile utilizate. Am ales această temă întrucât la baza jocului propus se află o [anonimizat]. Această alegere s-a [anonimizat], un sistem care a schimbat radical economia pieței de jocuri online și offline.
Jocurile video au evoluat pe parcursul a câtorva decenii din stadiul de a fi considerate simple activități de ocupare a [anonimizat]-o industrie de miliarde de dolari indiferent de platforma pentru care au fost dezvoltate (console, tablete, telefoane mobile sau calculator). Acestea obișnuiau a [anonimizat] a [anonimizat]. Această industrie a fost apoi revoluționată de conceptul de connectivitate online.
Microtranzacția este un model de afaceri în care utilizatorii pot achiziționa avantaje virtuale pentru o sumă relativ mică de bani. [anonimizat], costurile fiind doar pentru produsele ce vor avantaja utilizatorul online. Industria jocurilor video este într-o [anonimizat]. Producătorii și programatorii au învățat să profite de această sursă de venituri de-a lungul timpului. Microplata este o tranzacție financiară ce include o [anonimizat], în mediul online.
Un număr de sisteme de microplata au fost dezvoltate în anii ‘90, dar au fost fără succes întrucât acestea au fost proiectate inițial pentru a [anonimizat]. Una dintre problemele care a prevenit apariția și dezvoltarea sistemelor de microplăți au fost costurile pentru tranzacțiile mici care au fost foarte greu de gestionat întrucât sumele mici nu puțeau fi taxate îndeajuns.
Cap. 1 STUDIUL SI ANALIZA SISTEMULUI EXISTENT
1.1 Prezentarea succintă a unității economico-sociale
Compania Electronic Arts România SRL a fost înființată în România în anul 2005, având ca scop principal dezvoltarea și testarea jocurilor video. Electronic Arts este o companie americană ce comercializează și produce jocuri video pentru computere, telefoane, tablete sau console pentru jocuri. Unele dintre cele mai faimoase titluri din cadrul portofoliului Electronic Arts sunt simulatoarele sportive precum FIFA Soccer, alături de cunoscutul Need for Speed, shooterul Medal of Honor, The Sims sau Battlefield și jocurile care au aparut putin mai târziu ca seria Command and Conquer, sau Burnout.
Compania înființată în 1982 de americanul Trip Hawkins, a fost un element de bază în industria ce avea să dezvolte unele dintre primele jocuri pentru PC și a avut succes în promovarea programatorilor si designerilor săi. La început, EA a fost o companie dezvoltatoare de jocuri la „domiciliu”. Incepand cu sfârșitul anilor '80 corporația a început să proiecteze si jocuri la „domiciliu” pentru console. Prin urmare, EA a decis sa angajeze mai târziu programatori ce s-au dovedit a fi de succes. La începutul anului 2000, devenea una dintre cei mai mari distribuitori de jocuri. În 2007 EA se plasă pe locul 8 în clasamentul celor mai mari producători software din lume. În luna mai a anului 2008, compania a raportat venitul anual de 4,02 miliarde de dolari în anul fiscal 2008. În anul 2010 se plasa pe locul 2 în clasamentul producătorilor de jocuri video, depăsită de compania japoneză Nintendo.
1.2 Prezentarea istoricului companiei
În februarie 1982, Trip Hawkins a aranjat o întâlnire cu Don Valentine Sequoia Capital pentru a discuta despre finanțarea noului său proiect, Software Amazin'. Valentine l-a încurajat pe Hawkins să părăsească Apple Inc., în care Hawkins a servit ca Director de marketing și i-a permis lui Hawkins folosirea spațiilor de birouri libere din Sequoia Capital pentru a porni compania. Pe 28 mai 1982, Trip Hawkins incorporate și-a stabilit compania cu o investiție personală de o valoare estimată la 200.000$. Compania nu a fost numită Software Amazin', ci Electronic Arts.
Șapte luni mai târziu, în decembrie 1982, Hawkins a asigurat 2 milioane de dolari capital de risc. Pentru mai mult de șapte luni, Hawkins a rafinat planul său de afaceri Electronic Arts. Cu ajutorul de la primul său angajat (cu care a lucrat în echipa de marketing la Apple), Rich Melmon, planul original a fost scris, în proporție mare de Hawkins, pe un Apple II (un calculator “ 8-bit”), în biroul din Sequoia Capital în luna august 1982. În acest timp, Hawkins, de asemenea, a adus doi dintre foștii săi angajați de la Apple, Dave Evans și Pat Marriott, în calitate de producători, și un coleg de la Stanford MBA, Jeff Burton de la Atari pentru dezvoltarea afacerilor internaționale.
Planul de afaceri a fost din nou rafinat în septembrie și emis, din nou, pe data de 8 octombrie 1982. Până în noiembrie, numărul de angajați a crescut la 11, inclusiv Tim Mott, Bing Gordon, David Maynard, și Steve Hayes. După ce a depăsit spațiul de birouri oferit de Sequoia Capital, compania să mutat într-un birou din San Mateo, care avea vedere către pista de aterizare din San Francisco Airport. Numărul de angajați a crescut rapid în 1983, cu nume precum Don Daglow, Richard Hilleman, Stewart Bonn, David Gardner, și Nancy Fong.
Logo-ul original al companiei (1982-2000)
În aprilie 2013, firma a anunțat demararea unei reorganizări, renunțând la 10% din forța de muncă și consolidând funcțiile de marketing, care au fost distribuite în cinci divizii organizatorice. În luna mai a aceluiași an, Electronic Arts a anunțat încheierea unui parteneriat cu Disney pentru a dezvolta jocuri precum Star Wars cu un contract pe zece ani. Andrew Wilson a fost numit directorul firmei.
1.3 Rolul și poziția unității în economie
Societatea Comercială ”Electronic Arts România” S.R.L își desfășoară activitatea în ramura de comercializare a jocurilor video.
Principalele obiective ale unității sunt :
Situarea în topul companiilor ce produc jocuri video,
Menținerea unui mediu de lucru pozitiv și etc.,
Responsabilitatea de a proteja și susține pe oricine din cadrul firmei, inclusiv utilizatori, colegi, parteneri de afaceri sau acționari.
1.4 Studiul sistemului de conducere
Firma prezintă momentan în conducere cinci asociați, un director executiv și un alt director al conducerii.
Rolul directorilor
Consiliul de administrație al Electronic Arts supraveghează interesul acționarilor pe termen lung, succesul global al afacerii și puterea financiară. Conducerea servește ca organ decizional final al firmei, cu excepția acelor aspecte rezervate sau partajate cu acționarii. Consiliul aprobă și supraveghează membrii conducerii superioare, care sunt desemnați de către consiliu cu conducerea activitătii companiei.
Responsabilitatea principală a directorilor este aceea de a-și exercita judecata de afaceri pentru a acționa, în ceea ce ei cred a fi, în principalele interese ale companiei și ale acționarilor săi. În îndeplinirea acestei responsabilități, directorii se bazează pe persoanele din senior management și experții juridici, contabili, financiari și alți consilieri. În consecință, priceperea și integritatea sunt factori importanți în alegerea conducerii superioare a firmei și a altor consilieri.
Directorii individual pot, din când în când, în mod expres, să reprezinte compania la sedințe și întâlniri sau să comunice cu diverse terțe în numele firmei. Este de așteptat că directorii vor face acest lucru cu cunoștințe de gestionare și un management bun.
Acțiunile Directorilor
Programarea ședințelor între conducere
Președintele, în urmă consultării cu managerul general, va determina momentul și durată ședințelor Consiliului. Consiliul va susține, în general, patru întâlniri programate pe an și va organiza reuniuni speciale suplimentare în funcție de necesităti.
Selectarea articolelor și materialelor pentru ședințele consiliului de administrație
Președintele , în urmă consultării cu managerul general, va aproba ordinea de zi și materialele care urmează a fi furnizate administratorilor înaintea fiecărei reuniuni a consiliului. Fiecare director poate sugera elemente pentru a le include pe ordinea de zi, poate solicita prezentarea unui raport de către orice membru al conducerii, sau poate solicita orice subiect consiliului care nu este pe ordinea de zi a ședinței. Pe parcursul a cel puțin o reuniune în fiecare an, consiliul va examina și aproba planul de afaceri pe termen lung și direcția strategică anuală a companiei.
Prezența și pregătirea ședințelor
Directorii au obligația să participe la toate ședințele consiliului și reuniunile comisiilor pe care le deservesc, să-și petreacă timpul necesar pentru a revizui materialele înaintea unor astfel de reuniuni, pentru a participa la astfel de sedinte, și să îndeplinească atât cât este necesar responsabilitățile care le revin. Înaintea fiecărei sedinte, comisia de administratie si directorii vor primi ordinea de zi propusă și alte materiale importante pentru înțelegerea aspectelor propuse de către conducere ce trebuie luate în considerare.
Președintele și Directorul executiv
Consiliul de administrație are o politică pentru a stabili dacă președintele ar trebui să fie un director independent, un director afiliat, sau un membru al conducerii.
Managerul General
Un director independent va fi ales de către actualii directori independenți din consiliul de administrație, pe baza recomandărilor prezidiului, pentru a servi un mandat de doi ani ca manager general. Responsabilitățile acestuia vor include prezidarea sesiuni executive ale consiliului de administrație și alte reuniuni ale consiliului în absența președintelui, care servește ca o legătură între președinte și ceilalți directori independenți, precum și supravegherea politicilor și procedurilor de comunicare cu acționarii consiliului (inclusiv, în condiții adecvate, întâlnirea cu acționari). Managerul General are autoritatea de a convoca ședințe cu directori independenți.
Sedintele executive ale directorilor independenți
Directorii independenți ai conducerii se vor întruni într-o sesiune executivă (adică fără directori sau membri ai conducerii prezenți non-independenti) la fiecare ședință periodic programata de catre consiliu și în orice alt moment solicitat în mod rezonabil de către un administrator independent. Ședința executivă va fi susținută de către managerul general, sau în absența acestuia, de către un director independent, cu cea mai mare vechime în consiliul de administrație.
Retenția consilierilor
Conducerea și fiecare comitet al consiliului au puterea de a angaja consilieri juridici, contabili, financiari sau de altă natură considerata necesară, fără necesitatea de a obține aprobarea prealabilă a oricărui agent al companiei. Secretarul corporației va aranja toate demersurile pentru plata costurilor de oricare natură.
Cap. 2. Prezentarea tehnologiilor informatice utilizate in cadrul dezvoltarii aplicatiei
2.1 Apariția limbajelor de programare
Dezvoltarea limbajului C a fost transmisă de diverse încercari de a alcătui un limbaj care să răspundă necesităților apărute o data cu dezvoltarea sistemelor de calcul (calculatoare): portabilitate, simplitatea în folosire, libertatea de formulare. Motorul examinărilor a fost dezvoltarea unui sistem de operare original: UNIX. Evoluția limbajului și a sistemului de operare au avut loc concomient, fiecare impunând dezvoltarea celuilalt. Majoritatea specialiștilor consideră că primul program C a fost dezvoltat îm particular pentru sistemele de operare din gama UNIX. De fapt limbajul C este o consecință a experienței concentrată în aceste cercetări.
În cadrul anului 1969 a fost lansat limbajul BCPL, dezvoltat în Marea Britanie, la Universitatea Cambridge. Acesta a fost un limbaj dependent de structura mașinii pe care era utilizat si nu deținea conceptul de tip de dată. Datele se prezentau binar, pe cuvinte de memorie. Anul 1969 este considerat anul de apariție al limbajului C.
In 1970, o formă mai evoluată a luat amploare, aceasta fiind cunoscută sub numele de limbajul BCPL. Limbajul prescurtat B putea fi utilizat în cadrul sistemului de operare al calculatoarelor DEC PDP.
In 1978, Dennis Ritchie împreună cu Brian Kernighan, și-au concretizat cercetările, astfel publicând The C Programming Language, fiind cunoscut în zilele noastre sub denumirea de Limbajul de programare C. Limbajul a fost denumit astfel pentru că C este litera care urmează după B. Lucrarea lui Kernighan și Ritchie este considerată momentul oficial al aparitiei limbajului C.
După apariția limbajului C au existat incercări de optimizare, dar fara ca vreuna să producă un impact asemănător. Dennis Ritchie a propus diverse variante, mulate pe noile versiuni de UNIX.
In perioada următoare, pornind de la mențiunile limbajului, s-au creat diverse compilatoare C, fiecare venind cu propriile caracteristici diferențiale față de limbajul originar, ajungandu-se astfel la versiuni mult diferite unele față de altele. În acest fel s-a pus în pericol ideea originală de portabilitate. Ca urmare, în 1988 Comitetul pentru limbajul C al Institutului Național de Standardizare al SUA (ANSI) a impus un standard cunoscut drept ANSI C. Acesta este implementat în toate variantele de compilatoare ulterioare. O dată cu acest standard, legătura implicită cu sistemul UNIX a dispărut, limbajul fiind disponibil pe orice platforma.
În concomitent cu activitatea comitetului ANSI C, au existat si alte dezvoltări. Bjarne Stroustrup de la AT&T a propus extensia C++ (C optimizat, extinzând semnificația operatorului de incrementare ++ din C). Impactul extensiei este aproximativ la fel de mare ca cel al limbajului inițial, astfel incât ea a devenit cea mai populară variantă a limbajului, fiind prezenta în toate implementarile. Pornind de la C++ s-au incercat și alte extensii. Joel E. Richardson, Michael J. Carrey si Daniel T. Schuh de la Universitatea Wisconsin Madison au propus limbajul E.
Deți majoritatea îl considerau mai mult un limbaj de asamblare separat de mașină, decat un limbaj de nivel ridicat, legătura sa concentrată cu sistemul UNIX, răspândirea de care beneficia și standardizarea sa de către ANSI (American National Standards Institute) au facut ca el să se apropie cel mai mult, potențial, de obiectivul unui limbaj standard pe piața microcalculatoarelor și a stațiilor de activitate. C este un limbaj compilat care conține un set de funcșii incorporate, dependente de mașina. Celelalte funcții sunt independente de mașină și sunt concepute în librării abordabile din programe. Programele dezvoltate în cadrul limbajului C sunt alcatuite din una sau mai multe funcții determinate de programator. Astfel, C este un limbaj de programare structurat.
C este un limbaj de programare foarte cunoscut, folosit de multe ori pentru a dezvolta compilatoare sau sisteme de operare. Aproximativ toate aplicațiile dezvoltate pentru a face mai ușoară comunicarea pe Internet au fost proiectate în cadrul limbajului C. Este adevarat că, atât sistemul de operare UNIX (care este structura de bază a Internetului), cât și TCP/IP (inlănțuirea de protocoale utilizată în cadrul transmisiei datelor pe Internet) au fost proiectate in C. Este foarte posibil ca Internetul să nu fi apărut dacă limbajul C nu ar fi existat.
Cei mai mulți dintre utilizatorii fără inclinatii tehnice considera limbajele de programare lucruri complexe si neobișnuite. Totusi, limbajele de programare (și programatorii) sunt ustensile prin care se alcătuiesc programele de calculatoare (cunoscute sub denumirea de aplicații). Este foarte posibil ca majoritatea programelor dintr-un calculator să fie dezvoltate în cadrul limbajului C (acest fapt fiind adevarat pentru majoritatea platformelor, incluzând și sistemul de operare Macintosh) .
Dezvoltarea de programe în cadrul limbajului C, necesită un compilator. Compilatoarele C sunt disponibile pentru aproape toate platformele, unele dintre ele fiind disponibile gratuit.
Un beneficiu principal al limbajului C poate fi mărimea lui (este mai mic decât multe alte limbaje de programare). Un utilizator cu un nivel de cunoștiințe mediu poate învăța C într-o perioada de timp convenabilă. Un alt avantaj este acela că C a devenit acum un standard național. Astfel, un programator poate invăța C si apoi iși poate aplica cunoștințele pe orice platformă, oriunde in țară.
Limbajul C este într-un dialog continuu cu dezvoltarea Internetului. Astfel, cele mai multe dintre implementările moderne de TCP/IP sunt proiectate în C, iar acest set de protocoale stă la baza transmisiei de date pe Internet. Mai mult, limbajul C a fost folosit la scrierea sistemului de operare UNIX, care reprezinta de mulți ani, cel mai folosit sistem de operare pe Internet.
Limbajul C detine si alte avantaje, iar unul dintre acestea este portabilitatea. Pe unele pagini web este foarte probabil sa se fi intalnit articole care sustin ca un program sau o aplicatie a fost portata pe un sistem de operare diferit sau pe o alta alta platforma. Acest fapt reprezinta portabilitatea, iar aceasta se refera la capabilitatea unui program sau aplicatie de a fi reproiectata pentru a putea functiona pe o alta platforma decat cea pentru care a fost mai intai dezvoltata (de exemplu, avand posibilitatea de a folosi un program initial proiectat pentru Microsoft Windows si de a-l porta pe o noua platforma Macintosh). Acest element al portabilitatii poate fi foarte important, mai ales daca este utilizat intr-un mediu precum Internetul, intrucat in cadrul Internetului ruleaza un numar diversificat de sisteme. Adaptarea facila pe oricare dintre platforme reprezinta un element important in abilitatea unui programator.
Spre deosebire de programarea în cadrul altor limbaje, C este foarte portabil. Luând ca exemplu programul Visual Basic, acesta este un instrument pentru proiectarea rapidă de aplicații (N.T. RAD – Rapid Application Development), în cadrul cărora se pot dezvolta programe ce vor rula pe oricare dintre platformele Microsoft. Totuși, aceasta este limita la ceea ce poate să facă. Nu se poate lua codul sursă al unui program Visual Basic, iar apoi să fie recompilat pe o mașină Macintosh sau pe un Sun SPARCStation. În schimb, programele C pot fi portate pe multe alte platforme. Prin urmare, aplicațiile C disponibile în cadrul Internetului vor fi aproape tot timpul oferite sub forma unui cod sursă (altfel spus, ele sunt distribuite sub forma unui text clar, într-un cadru încă necompilat). Aceasta oferă permisiunea utilizatorului de a compila programul pentru sistemul de operare propriu. În ciuda acestor caracteristici folositoare, limbajul C are unele limitări. De exemplu, C nu este un limbaj orientat pe obiecte.
Gestionarea multor aplicații foarte mari dezvoltate îm programul C (în care codul depășește numărul de 100.000 de linii) poate fi dificilă. Din acest motiv, a apărut un nou limbaj denumit C++. Acesta își are rădăcinile în C, însă funcționalitatea lui este diferită. Un element important este acela că C++ va fi inclus ca opțiune în cadrul celor mai multe dintre compilatoarele C moderne. Spre deosebire de C, C++ este un limbaj orientat pe obiecte, elaborat de Bjarne Stroustrup la începutul anilor 1980 la Bell Laboratories și adoptat de mai mulți dezvoltatori, printre care și Apple Computer sau Sun Microsystems, Inc. Limbajul de programare C++ este extrem de puternic și a condus la schimbări importante în ceea ce reprezintă mediul de programare. C++ poate aproba încapsularea funcțiilor complexe în alte entități denumite obiecte. Acestea permit un control și o organizare facilă în cadrul unor programe mari și complexe.
2.2 Descrierea limbajului C#
C# (Pronunțat C sharp) este un limbaj de programare multi-funcșional ce cuprinde instrumente puternice de tipărire, declarative, funcționale, generice, orientate pe obiecte (bazate pe clasă) și orientate pe componente. Acesta a fost dezvoltat de Microsoft în cadrul inițiativei .NET și ulterior a fost aprobat ca standard de Ecma (ECMA-334) și ISO (ISO / IEC 23270: 2006). C # este unul dintre limbajele de programare concepute pentru o infrastructura lingvistică comună.
C# este un limbaj de programare orientat în general pe obiecte. Echipa sa de dezvoltare este condusă de Anders Hejlsberg. Cea mai recentă versiune este C# 7.0 care a fost lansată în 2017 împreună cu Visual Studio 2017.
Acest limbaj este destinat pentru a fi un limbaj de programare simplu, modern, cu un scop comun, orientat pe obiecte.
Limbajul și implementările acestuia ar trebui să furnizeze suport pentru principiile de programare software, precum verificarea tipului de caractere, verificarea limitelor vectoriale, detectarea încercărilor de utilizare a variabilelor neinitializate și colectarea automată a erorilor. Consistenta software-ului, durabilitatea și productivitatea programatorului sunt importante.
Limbajul este destinat utilizării în dezvoltarea componentelor software adecvate pentru implementarea în medii diversificate.
Portabilitatea este foarte importantă pentru codul sursă și programatori, în special pentru cei deja familiarizați cu limbajele C și C ++.
Sprijinul pentru internaționalizare este foarte important.
C# intentioneaza a fi potrivit pentru dezvoltarea de aplicații atât pentru sistemele găzduite cât și pentru cele încorporate, de la cele foarte mari, care utilizează sisteme de operare sofisticate până la cele foarte mici, având funcții dedicate.
Deși aplicațiile C# intenționează a fi optimizate în ceea ce privește cerințele de memorie și de putere de procesare, limbajul nu a avut intenția de a concura direct pentru performanță și mărime cu limbajul C.
Pe parcursul dezvoltării .NET Framework, bibliotecile de clasă au fost inițial dezvoltate folosind un sistem compilat de coduri de administrare numit Simple Managed C (SMC). În ianuarie 1999, Anders Hejlsberg a format o echipă pentru a construi un nou limbaj în acel moment numit Cool, care era pentru "C-like Object Oriented Language". Microsoft a considerat păstrarea numelui "Cool" ca nume final al limbajului, dar a ales să nu facă acest lucru din motive comerciale. Până când proiectul .NET a fost anunțat public la Conferința pentru dezvoltatorii profesioniști din iulie 2000, limbajul a fost redenumit C #, iar bibliotecile de clasă și runtime-ul ASP.NET au fost portate la C #.
Designer principal al C# și arhitect principal la Microsoft este Anders Hejlsberg, care a fost implicat anterior în designul Turbo Pascal, Embarcadero Delphi (fostul CodeGear Delphi, Inprise Delphi și Borland Delphi) și Visual J ++. În interviuri și lucrări tehnice, el a afirmat că în majoritatea limbajelor de programare majore (de ex., C ++, Java, Delphi și Smalltalk) au apărut defectele, care au condus la fundamentarea limbajului comun al limbajului (CLR) Din limba C #.
James Gosling, care a creat limbajul de programare Java în 1994, și Bill Joy, co-fondator al Sun Microsystems, inițiatorul Java, a numit C # o "imitație" a Java; Gosling a mai spus că "C # este un fel de Java fara fiabilitate, productivitate și securitate". Klaus Kreft și Angelika Langer (autori ai unei cărți C ++) au declarat într-un post pe blog că "Java și C # sunt aproape identice ca limbaje de programare. "Aproape nimeni nu va susține că Java sau C # sunt limbaje de programare revoluționare care au schimbat modul în care scriem programe ", iar C # a împrumutat mult din Java – și invers Acum, că C # suportă arhivarea și dezarhivarea, vom avea o caracteristică foarte asemănătoare în Java." În iulie 2000, Anders Hejlsberg a spus că C # nu este "o clonă Java" și este" mult mai aproape de C ++ ".
De la lansarea C # 2.0 în noiembrie 2005, limbajele C # și Java au evoluat pe traiectorii din ce în ce mai divergente, devenind mai puțin asemănătoare. Una dintre primele diferențe majore a apărut odata cu adăugarea de elemente generice în ambele limbaje, cu implementări foarte diferite. C # folosește o reificare pentru a furniza obiecte generice "de primă clasă" care pot fi folosite ca orice altă clasă, cu generarea de coduri realizate in momentul incarcarii clasei. În plus, C # a adăugat câteva caracteristici majore pentru a se potrivi programării în stil funcțional, culminând cu extensiile LINQ lansate cu C # 3.0 și cadrul său de suport pentru expresii lambda, metode de extensie și tipuri anonime. Aceste caracteristici permit programatorilor C # să utilizeze tehnici de programare funcționale, cum ar fi închiderile, atunci când este avantajos pentru aplicarea lor. Extensiile LINQ și importurile funcționale ajută dezvoltatorii să reducă cantitatea de cod "boilerplate" care este inclus în sarcini comune cum ar fi interogarea unei baze de date, parsarea unui fișier xml sau căutarea printr-o structură de date, trecerea accentului pe logica programului real pentru a ajuta Îmbunătățirea lizibilității și a mentenabilității.
C # obișnuia să aibă o mascotă numită Andy (numită după Anders Hejlsberg). A fost pensionat pe 29 ianuarie 2004.
C # a fost inițial depus la subcomitetul ISO JTC 1 / SC 22 pentru revizuire, în conformitate cu ISO / IEC 23270: 2003, a fost retras și a fost apoi aprobat în conformitate cu ISO / IEC 23270: 2006
2.3 Exemple de programe
Exemple de programe simple realizate in cadrul limbajului C# :
using System;
namespace HelloWorld
{
class Hello
{
static void Main()
{
Console.WriteLine("Buna Ziua!");
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}
Urmatorul algoritm este folosit pentru calculul celui mai mare divizor comun:
using System;
using System.Collections.Generic;
using System.Ling;
using System.Text
using namespace std;
{ class Program
{static void Main()
{int nr1, nr2, n, m;
Console.Write(„ introduceti un numar”);
nr1 = int.Parse (Console.ReadLine());
Console.Write(„Introduceti alt numar”);
nr2 = int.Parse(Console.ReadLine());
n = nr1; m=nr2;
while(nr1 != nr2)
if (nr1 > nr2)
nr1 = nr1-nr2;
else nr2= nr2-nr1;
Console.WriteLine(„cmmdc, ({0}, {1}) = {2}”, n,m,nr1);
Console.ReadLine();}}}
Exemplu de program realizat in compilatorul Visual Studio
Acesta citeste si afiseaza o matrice:
2.4 Prezentarea programului Visual Studio
Microsoft Visual Studio
Programul Visual Studio este un mediu integrat de dezvoltare(IDE) ce cuprinde un set integral de ustensile pentru dezvoltarea aplicațiilor ASP.NET, Web XML, programe pentru desktop sau aplicații utilizate in cadrul dispozitivelor mobile. Visual C++, Visual Basic, Visual J# și Visual C# utilizează un mediu de dezvoltare comun ce le permite distribuirea instrumentelor și face usoara elaborarea de procedee utilizând diferite limbaje de programare.
Aceste limbaje beneficiaza de specificatiile .NET Framework ce oferă accesul la tehnologii cheie care fac usoara proiectarea de aplicații XML Web Services si web ASP cu Visual Web Developer.
Istoric versiuni:
Visual Studio 4.0
Înainte de apariția ediției a patra, produsele Visual C + +, Visual Basic, Visual FoxPro și SourceSafe au fost vândute izolat. Visual Basic era deja disponibil în acel moment pentru versiunea a treia. Scopul a fost introducerea in cadrul sistemului de operare Windows 95
Visual Studio 97
Ediția programului Visual Studio 97 a fost denumită ca și nume de cod Boston. Visual Studio 97 a fost disponibil în edițiile Professional Edition și Enterprise Edition. Visual C++ 5.0, Visual Basic 5.0, în cadrul programării pentru Windows; Visual J++ 1.1 pentru programarea Java, iar Visual FoxPro 5.0 pentru proiectarea bazelor de date. Visual InterDev a fost dezvoltat pentru proiectarea paginilor web accesand Active Server Pages.
Visual Studio 6.0
Visual Studio 6.0 poartă un nume de cod denumit Aspen și a fost ultima versiune care poate rula pe o platforma 9x. Acesta oferea suport pentru Internet Explorer 4.0, control HTML dinamic, Windows NT 5.0 și elemente de infrastructură Microsoft Message Queue server, serviciul Active Directory și tehnologia Microsoft's Zero Administration. A fost comercializat în două ediții Professional și Enterprises. Versiunea Enterprises cuprinde componente ce nu se regăsesc în versiunea Professional precum:
Visual Studio Analyzer,
Application Performance Explorer,
Automation Manager,
RemAuto Connection Manager,
Microsoft Visual Modeler,
Visual Studio .Net 2002
A fost lansat în cursul lunii februarie în anul 2002 și are numele de cod Rainier. Este disponibil în patru ediții: Professional, Academic, Enterprise Architect și Enterprise Developer. Un limbaj nou de programare dezvoltat de către Microsoft a fost introdus și denumit Microsoft C #. Se bazează pe .Net Framework. A fost una dintre primele versiuni de Visual Studio ce se bazează pe platforma Windows NT.
Visual Studio .NET 2003
Aparut în luna aprilie a anului 2003, a fost un upgrade minor pentru Visual Studio .Net 2002 având ca nume de cod Everett. Acesta includea un upgrade la .Net Framework pentru versiunea 1.1 și a fost prima versiune ce a suportat dispozitive mobile utilizând ASP.NET sau .NET Compact Framework. În afară C#, C++ și Visual Basic cuprinde o editie .NET a limbajului Java numit J # (cu care nu se pot ținti serverele J2EE). Prin reteaua NET CLR (Common Language Runtime) se poate anexa codul din limbaje cum ar fi COBOL, Fortran și mai puțin determinante Curriculum Mondrian, Oberon, și Oz. Acesta este disponibil în 4 ediții: Professional, Academic, Enterprise Architect si Enterprise Developer. Noul instrument include conectivitatea cu bazele de date Oracle cu caracteristici îmbunătățite de securitate.
Visual Studio 2005
Programul Visual Studio 2005 deține numele de cod Whidbey.Versiunea suportă Windows 2000 si versiuni mai noi. In anul 2006 in data de 14 decembrie Microsoft a lansat primul Service Pack in cadrul Visual Studio 2005. Visual C + + 2005 suporta compilarea pentru x86-64 (AMD64 și Intel 64) și IA-64 (Itanium).
Visual Studio 2008
Orcas este numele de cod pentru Visual Studio 2008 și a fost prima editie care permitea dezvoltatorilor să utilizeze versiuni de .NET Framework.Visual Studio este bazat pe platforma de design .NET Framework 3.5, setul de instrumente .NET 3.0 a realizat versiuni actualizate ale ASP.NET, ADO.NET, Visual Basic, C# și CLR. Pentru interoperabilitatea și gestionarea codului mașină, Visual C++ introduce STL/CLR, care este un port de C++ Standard Template Library (STL) cuprinde algoritmi pentru gestionarea codului. Primul Service Pack lansat de catre Microsoft pentru Visual Studio 2008 a fost lansat pe data de 11 august 2008.
Visual Studio 2010
Dev 10 este numele de cod pentru Visual Studio 2010, care a fost lansat pe data de 12 aprilie in anul 2010 impreuna cu .NET Framework 4. Visual Studio 2010 cuprinde un editor nou ce folosește WPF (Windows Presentation Foundation), sprijină interfața de tip Ribbon, deține suport pentru monitoare multiple, Windows 7 multitouch, funcția SharePoint, elemente de Windows Azure și IntelliTrace, un nou produs care ajută la eliminarea bug-urilor irepetabile. Acesta este distribuit împreună cu Expression Studio, Business & Enterprise Servers și Microsoft Office și în versiunile Premium si Ultimate.
Logo-ul Actual Visual Studio:
Pagina principala din programul Visual Studio 2017 :
2.5 Prezentarea programului Unity 3d
Unity 3D este o platformă dezvoltată de Unity Technologies și este folosită pentru dezvoltarea jocurilor video pentru calculatoare, console, dispozitive mobile si site-uri web. Inițial, platforma a fost anunțată că va suporta doar sistemul de operare Macintosh în 2005, dar de atunci a fost extinsă pentru alte 27 de sisteme. Nintendo ofera licențe gratuite pentru toți programatorii licenșiati ai companiei împreună cu kit-uri de dezvoltare software pentru Wii si Nintendo 3DS.
De-a lungul timpului au aparut cinci versiuni majore ale programului. În 2006 Apple a susținut că Unity este cel mai bun software pentru grafică împreună cu sistemul de operare Macintosh
Logo-ul oficial Unity :
Prezentare generală
Cu un accent pe portabilitate, motorul vizează următoarele interfațe software: Direct3D pentru Windows și Xbox 360, OpenGL pentru Macintosh, Linux si Windows, OpenGL ES pentru iOS și Android. Programul permite specificarea setărilor de compresie și de rezoluție pentru fiecare platformă pe care o acceptă.
Unity este recunoscut pentru capacitatea sa de a susșine jocurile pe multiple platforme. În cadrul unui proiect, dezvoltatorii au control asupra portării către dispozitive mobile, browsere web, desktop-uri și console. Platformele suportate includ Android, Apple TV, BlackBerry 10, iOS, Linux, Nintendo linie 3DS, MACOS, PlayStation 4, PlayStation Vita, Unitatea Web Player (inclusiv Facebook ), Wii, Wii U, Windows Phone 8, Windows, Xbox 360 și Xbox One.
Scurt istoric
În anul 2012, pe site-ul VentureBeat a fost publicat un articol în care se constata că diferite companii importante au contribuit la fluxul de jocuri produse la fel de mult precum cei de la Unity Technologies. Mai mult de 1,3 milioane de dezvoltatori folosesc instrumentele sale pentru a crea grafica si design pentru platforme precum iOS, Android, console sau PC-uri.
Pentru premiile Apple Design la ediția comercială WWDC din 2006, Apple, Inc. a numit Unity drept liderul pentru cea mai bună utilizare în cadrul sistemului de operare Mac OS X, pentru categoria grafică, la un an după lansarea programului la aceeași expoziție comercială. Unity Technologies a afirmat că este prima dată când un instrument de proiectare a jocurilor a fost vreodată nominalizat pentru acest premiu. Dintr-un sondaj din luna mai a anului 2012 al revistei Game Developer, a rezultat că platforma Unity este un motor de joc de top în realizarea aplicațiilor pentru dispozitive mobile. În iulie 2014, Unity a câștigat premiul "Best Engine" la Premiile Excel Industry Excellence Awards din Marea Britanie.
După lansarea Unity 5, Unity Technologies a criticat diferiți dezvoltatori neexperimentați pentru volumul mare de jocuri produse rapid, publicate pe platforma de distribuție Steam. Directorul General, John Riccitiello, a declarat într-un interviu că acesta este un efect secundar al succesului platformei în democratizarea dezvoltării jocului:
"Dacă aș fi avut drumul meu, aș vrea să văd 50 de milioane de oameni care folosesc Unity – deși nu cred ca vom ajunge acolo în curând, aș vrea să văd elevii de liceu și colegi care le folosesc, oameni din afara industriei de bază, cred că este trist faptul că majoritatea oamenilor sunt consumatori de tehnologie și nu creatori. Sa se produca si sa se creeze, nu doar sa sa se consume, asta este ceea ce vrem sa promovam. "
În decembrie 2016, Unity Technologies a anunțat că va schimba sistemul de numerotare a versiunilor platformei, de la identificatori bazați pe secvență până la anul de lansare pentru a alinia versiunea cu cadența lor mai frecventă de eliberare.
Meniul Principal Unity 3D:
3. PROIECTAREA DE DETALIU A APLICAȚIEI INFORMATICE
3.1 Definirea obiectivelor aplicației informatice
Aplicația are ca scop divertismentul, dar poate avea un impact și asupra abilității logice a utilizatorului.
Tower Defense (TD) este un subgen al jocului video de strategie în care scopul este de a apăra teritoriile sau proprietățile unui jucător prin obstrucționarea atacatorilor inamici, de obicei prin plasarea unor structuri defensive pe sau pe calea inamicilor. Aceasta înseamnă de obicei construirea unei varietăți de structuri diferite care servesc la blocarea, împiedicarea, atacarea sau distrugerea automată a dușmanilor. Tower Defense este considerat un subgen al jocurilor video de strategie „real-time”, deși multe jocuri moderne de acest gen includ aspecte ale strategiei turn-based. Poziționarea corectă elementelor defensive este o strategie esențială a acestui gen.
Exemplu de joc Tower Defense basic in 2d :
3.1.2 Scurt istoric al genului
Genul Tower Defense are origini în trecut, cand a avut loc epoca de aur a jocurilor video arcade din anii 1980. Obiectivul jocului Arcadian Space Invaders, lansat în 1978, a fost acela de a apăra teritoriul jucătorului (reprezentat de partea de jos a ecranului) împotriva valurilor de dușmani care urmau sa soseasca. Jocul conținea scuturi care puteau fi utilizate strategic pentru a împiedica atacurile inamice asupra jucătorului și a ajuta utilizatorul să-și apere teritoriul, deși obiectivul principal nu impunea protejarea teritoriului.
Jocul Missile Comand din anul 1980 a fost schimbat prin introducerea unui element de strategie. În joc, jucătorii puteau obstrucționa rachetele inamice și pentru fiecare val de inamici ce sosea, puteau exista mai multe căi de atac. Missile Comand a fost, de asemenea, primul din acest gen unde se putea utiliza un dispozitiv de indicare, un trackball, care să permită jucătorilor să folosească o tinta. Aceasta inovație a fost dezvoltata relativ prematur și a anticipat explozia ulterioara a acestui gen , care a fost pavat de o larga adopție a mouse-ului în cadrul jocurilor pe computer. În plus, în Missile Comand, singura țintă a atacatorilor este baza, nu un caracter specific jucătorului. Din aceste motive, unii îl consideră drept primul joc adevărat din acest gen.
Missile Comand (1980)
În timp ce mai tarziu jocurile arcade, cum ar fi Defender (1981) și Choplifter (1982) nu aveau elementul semnificativ de strategie al lui Missile Comand, au început o moda în care dezvoltatorii de jocuri din acest gen au schimbat obiectivul principal de a apăra elementele non-jucător. În aceste jocuri, apărarea non-jucătorilor de valurile de atacatori a fost cheia progresului. Versiunea 1982 a lui Parker Brothers: Star Wars: Empire Strikes Back pentru Atari 2600 a fost una dintre primele ce aveau să popularizeze stilul de apărare a unei baze.
Conceptul de valuri de inamici care atacă baza într-un singur mod a dezvoltat o formulă care a fost ulterior copiată de mai multe jocuri, odată cu trecerea de la arcade la jocurile pe calculator. Jucătorii puteau acum să aleagă din diferite metode de obstrucție a progresului atacatorilor. La mijlocul anilor 1980, elementele strategiei au continuat să evolueze. Titlurile ca Pedro de la Imagine Software, 1984, au amestecat abilitățile jucătorului de a apăra în mod activ și de a împiedica valuri de diferite tipuri de inamici, inclusiv obstacole fixe, precum și abilitatea de a construi și repara teritoriul unui jucător
Star Wars: The Empire Strikes Back (1982)
Rampart, lansat în 1990, este considerat, unanim, că a stabilit prototipul genului Tower Defense. Rampart a introdus unități care atacau automat inamicii . În plus, acesta deține un număr divesificat de etape distincte de construire, apărare și reparare a unitatilor. Acestea sunt acum elemente de baza din multe alte jocuri ce aparțin acestui gen și a fost, de asemenea, unul dintre primele jocuri video multiplayer.
În timp ce Rampart a fost popular, jocuri similare au fost rareori văzute până la adoptarea pe scara largă a mouse-ului in jocurile pentru PC. Titlul Ambush at Sorinor (1993) a fost o excepție rară din această eră. Genul Tower Defense, a avut de asemenea, o apariție pe console cu mai multe minigames din seria Final Fantasy, inclusiv minigame-ul turn-apărare în Final Fantasy VI (1994) și minigame-ul Fort Condor în Final Fantasy VII (1997) , unul dintre primele care prezintă grafică 3D. Deoarece jocurile Real Time Strategy au câștigat popularitate în jocurile pe calculator, mulți au introdus moduri de Tower Defense în actiunea lor din joc, în special în modurile multiplayer. Modelele din 2006 Element Tower Defense (Element TD) și Gem Tower Defense au fost lansate în luna februarie pentru popularul titlu RTS Warcraft III: Reign of Chaos, care a reaprins aproape singur genul. Intre 2007 și 2008, acest gen a devenit un fenomen, datorat în mare parte popularității modului de apărare a turnurilor introdus în jocuriile de strategie real time, dar în principal datorită creșterii dezvoltatorilor independenți in cadrul programului Adobe Flash, precum și apariției unor mari magazine de smartphone-uri pentru aplicații Apple și Google. Primele jocuri portabile pentru browser separate au apărut în 2007. Printre acestea au fost titlurile extrem de populare precum Flash Element Tower Defense lansat în ianuarie și Desktop Tower Defense lansat în martie. Desktop Tower Defense a câștigat un important premiu numit Independent Games Festival, iar succesul său a condus la o versiune creată pentru dispozitive mobile de un dezvoltator diferit. Un alt titlu semnificativ al jocului lansat în 2008 a fost GemCraft. Consolele de joc portabile nu au fost ignorate in explozia de aparitii al acestui gen, iar titlurile au inclus Lock's Quest și Ninjatown lansate în septembrie și, respectiv, în octombrie.
Odată cu aparitia Apple App Store, dezvoltatorii genului Tower Defense s-au adaptat rapid la interfața touchscreen pentru dispozitivele mobile, iar titlurile de acest gen au fost printre cele mai descărcate, multe dintre ele portate direct din Flash. Printre cele mai notabile se numără Bloons TD 4 (2009), care a vândut peste un milion de copii pe iOS.
Succesul acestui gen a condus, de asemenea, la lansări noi pentru PC-uri și console de jocuri video. Cele mai populare titluri din 2008 au fost PixelJunk Monsters lansat în ianuarie, Defense Grid: The Awakening and Savage Moon in decembrie. Plants vs. Zombies lansat în mai 2009 a fost un alt foarte popular Tower Defense, care a devenit o serie de succes pentru dispozitivele mobile.
Jocul Plants vs Zombies, dezvoltat în cadrul companiei Electronic Arts :
3.2 Elementele de bază ale acțiunii în Tower Defense
– teritoriile sau proprietățiile (sau colectiv "baza") trebuie apărate de către jucător,
– baza trebuie să supraviețuiască valurilor de atacuri multiple ale inamicilor,
– plasarea elementelor denumite turnuri sau turete ori obstrucții de-a lungul căii de atac a dușmanilor.
Ceea ce diferențiază Tower Defense de alte jocuri ce au ca scop apărarea bazei (cum ar fi Space Invaders) este capacitatea jucătorului de a plasa strategic sau de a construi obstacole în calea atacurilor inamicilor.
În Tower Defense, spre deosebire de bază, personajul principal al jucătorului este de obicei, dar nu întotdeauna, invincibil, deoarece obiectivul principal este supraviețuirea bazei, mai degrabă decât a jucătorului.
Unele caracteristici mai moderne ale acestui gen :
Jucătorii au plasat obstacole care pot distruge sau ucide atacatorii inamici înainte de distrugerea bazei,
Abilitatea de a repara obstacole,
Abilitatea de a face upgrade la obstrucții,
Abilitatea de a face upgrade la turnuri sau turete de aparare,
Un fel de monedă pentru cumpărarea de upgrade-uri și reparații (poate fi un timp, în monedă sau puncte de experiență), aceasta fiind câștigata dupa înfrângerea unei unități inamice,
Inamici capabili să traverseze mai multe carari,
Fiecare val are, de obicei, un număr fix și un tip de inamic.
Multe jocuri moderne Tower Defense au evoluat in timp iar actiunea jocului de baza a întampinat modificari care includ faze distincte cum ar fi construirea, apărarea și repararea. Multe jocuri, cum ar fi Flash Element Tower Defense, au inamici care rulează printr-un "labirint", care permite jucătorului să pună turnuri strategice pentru o eficiență optimă. Cu toate acestea, unele versiuni ale genului obligă utilizatorul să creeze labirintul din turnurile proprii, cum ar fi Tower Tower Defense . Unele versiuni sunt un hibrid al acestor două tipuri, cu căi prestabilite, care pot fi modificate într-o oarecare măsură prin plasarea turnurilor sau turnuri care pot fi modificate prin plasarea căii. Adesea, o strategie esențială este "mazărea", care este tactica creării unei căi lungi, elastice de turnuri pentru a prelungi distanța pe care dușmanii trebuie să o traverseze pentru a trece de apărare. Uneori, "jonglarea" este posibilă prin alternarea între blocarea unei ieșiri pe o parte și apoi a celeilalte părți pentru a determina dușmanii să treacă înainte și înapoi până când sunt învinși. Unele jocuri permit, de asemenea, jucătorilor să modifice strategia de atac folosită de turnuri pentru a putea apăra pentru un preț mai rezonabil.
3.3 Dezvoltarea aplicației
In cadrul dezvoltării aplicației, s-au evidențiat mai multe etape. Prima etapa a fost alegerea motorului in cadrul căruia s-au realizat elementele de design (Unity 3d). Acest program a avut la dispoziție două limbaje de programare la alegere prin care aplicația a putut fi programată ( C# si Java).
O a doua etapa a fost alegerea unui mediu de dezvoltare, acesta fiind Microsoft Visual Studio, acesta fiind necesar pentru combinarea tuturor pașilor in realizarea aplicației ( editarea codului sursa, compilarea, depanarea sau testarea)
Setarea unui plan de acțiune a reprezentat a treia etapa, intrucât pentru fiecare obiect sau set de obiecte create ce a fost realizat un cod sistematic. Fiecare inamic a fost programat sa urmeze o cale specifică, ocolind elementele de design, iar turnurile de aparare de asemenea nu pot fi construite pe anumite porțiuni.
Exemplu de inamic, reprezentat printr-o sferă 3D :
Drumul de culoare gri reprezintă porțiunea prin care se va deplasa inamicul :
Pe porțiunea gri si pe cea albastră ( apa ) s-a impus o restricție in care nici o turetă nu poate fi construită
Exemplu de turetă pentru aparare :
A patra etapa a fost verificarea si testarea codului de erori, iar apoi pornirea aplicației de mai multe ori pe parcursul dezvoltarii acesteia. Prin testarea programului se intelege deci executarea programului respectiv cu scopul de a descoperi eventuale anomalii sau erori. Ea se bazeaza pe construirea unor esantioane de date de intrare care sa conduca la depistarea unor erori in functionarea programulu, intr-un timp cat mai scurt si cu efort cat mai mic. In cazul aplicatiei de fata datele de intrare au fost inlocuite cu anumite elemente cu proprietati caracterisitice si cu un comportament definit printr-un cod sursa. In acest sens, activitatea de verificare si validare a unui produs program urmareste in principal descoperirea defectelor programului sau certificarea faptului ca aplicatia va functiona corect in conditii de exploatare curenta. Practic, verificare sau testarea programului urmareste daca programul a fost construit bine, daca este compatibil cu cerinta initiala, iar validarea controleazsa daca programul respectiv este bun, daca indeplineste conditiile cerute de beneficiar
Tehnicile pentru testarea si validarea unui program pot fi dinamice sau statice. Tehnicile dinamice de verificare si validare constau in experimentarea programelor in conditii asemanatoare cu cele din exploatarea curenta, reala, pentru a verifica daca acestea indeplinesc toate conditiile cerute de prelucrare. Acest experiment efectuat asupra programului se numeste testarea programului si inseamna deci executarea propriu-zisa a aplicatiei respective.Tehnicile statice de verificare sau validare constau in analiza si examinarea atenta a codului programului pentru a depista eventuale anomalii, a documentatiei, a metodologiei de proiectare utilizata, pentru a putea aprecia functionarea corecta a programului. Procesul de testare a aplicatiei poate semnala existenta unor erori care vor trebui apoi corectate. Dar, lipsa semnalarii unor erori in testarea unui program nu garanteaza absenta lor. Acest lucru este posibil datorita faptului ca, in general, nu pot fi testate toate situatiile si cazurile posibile in exploatarea curenta, testarea fiind prin natura sa incompleta. Fiecare test al unui program poate fi privit ca fiind neconcludent daca nu a evidentiat o eroare, nerelevant, caci nu a solicitat indeajuns aplicatia. Deasemenea, analiza programului fiind o activitate umana este predispusa la erori, ca orice activitate umana si deci nu poate garanta corectitudinea finala a programului. De aceea se se recurge adesea la metode formalizate, care pot conduce la depistarea in mai mare masura a erorilor unui program. Metodele matematice de verificare pot fi utilizate cu succes numai daca exista definitii precise ale semanticii limbajului de programare folosit, insa testarea aplicatiei ramane metoda de baza pentru verificarea corectitudinii unui program, succesul ei fiind conditionat in primul rand de experienta programatorului, de complexitatea si completitudinea setului de date folosite in procesul testarii, de analiza riguroasa, atenta a rezultatelor obtinute in urma fiecarui test. Relevanta testului depinde de numarul esantioanelor de date de test, dar mai ales de calitatea datelor alese. O serie de metode de elaborare a datelor de test reprezinta posibilitatea de a aborda sistematic activitatea de tastare a programelor, cu o probabilitate crescuta de depistare a erorilor. Testarea programului trebuie sa se finalizeze pentru a fi utila cu semnalarea erorii si localizarea ei. De aceea, testarea programului este urmata de depanarea lui.
Depanarea consta in localizarea erorii, determinarea naturii sale si corectarea ei si se poate efectua in mai multe moduri. Unul dintre acestea este depanarea statica ce se poate face la randul ei prin mai multe metode. Cea mai utilizate este cea denumita „ storage dump”, care presupune analiza continutului locatiilor de memorie, afisate de sistem in sistem de numeratie hexazecimal sau octal. Depanarea simbolica reprezinta posibilitatea de a urmari executarea programului la nivel de limbaj sursa. Limbajele de programare ofera in majoritatea versiunilor un depanator simbolic integrat, care permite depanarea usoara si eficienta a programelor prin urmatoarele operatii:
– executarea pas cu pas a programului
– observarea, in timpul executiei, a valorilor unor variabile sau expresii specifice
– modificarea valorilor unor variabile
In activitatea de testare si depanare a programelor, erorile datorate variabilelor neinitializate sunt dificil de semnalat si de localizat, mai ales atunci cand aparent totul functioneaza corect. In acest sens un rol important il poate avea variabila de indice care asigura parcurgerea elementelor unui vector sau expresia care stabileste daca un ciclu se executa sau nu, asa cum necesita algoritmul de prelucrare descris. Practica a dovedit, in timp, ca oricat de numeroase ar fi testele efectuate asupra unor programe foarte complexe, ele nu pot garanta functionarea corecta a acestora. Acestea raman deosebit de utile pentru semnalarea multora dintre erori si deasemenea pentru familiarizarea programatorului cu algoritmul, cu modul sau de lucru. Exista o serie de metode de esenta matematica, care vin in completarea metodelor de testare si depanare a programelor, care pot demonstra, pentru program ca procesul de prelucrare si calcul se termina in timp finit pentru orice date din domeniul specificat in enuntul problemei. Dupa terminarea procesului de calcul, datele de iesire ofera solutia problemei pentru care a fost creat respectivul algoritm.
Dupa ce toate obiectele de baza au fost creeate impreună cu codul specific rularii aplicației, au fost adaugate elemente de design pentru a spori detaliile grafice.
Exemplu de component ce are ca scop sporirea nivelului de decor :
3.4 Proiectarea interfeței
Un element deosebit de important al oricarei aplicatii informatice este, pe langa capacitatea ei de a gestiona cat mai bine toate cerintele de prelucrare a datelor, interfata cu utilizatorul sau modul cum comunica aplicatia proiectata cu utilizatorul nespecialist in informatica. In acest sense este necesara realizarea unei interfete placute si unitare, pentru a usura munca utilizatorului, avand in vedere aspectele importante precum caracteristicile vizuale si comportamentul interfetei ca raspuns la actiunea utilizatorului. Aceste caracteristici sunt puternic iterconditionate. Astfel, multe actiuni ale utilizatorului sunt dictate de aspectul vizual al interfetei, deasemenea, actiuni similare trebuie sa fie reprezentate vizual in aceeasi maniera. Practic, interfata aplicatiei reprezinta posibilitatea utilizatorului de a comunica direct cu acesta, deci de a intelege cerintele aplicatiei in fiecare moment si modalitatea in care trebuie sa-i raspunda. De reusita acestui dialog premanent depinde in mare masura succesul executiei aplicatiei, a corectitudinii datelor furnizate. Interfata grafica trebuie sa aiba o consistenta, insemnand ca pentru o anumita operatie sa se foloseasca acelasi obiect vizual. Accesul la operatii similare sa se face deci prin aceleasi actiuni ale utilizatorului (mouse,tastatura) si folosind acelasi obiect vizual. Interfata grafica trebuie sa fie sugestiva, sa poate fi intuita chiar fara documentatie si sa fie extensibila reprezentand adoptarea la noi echipamente hardware. Alte caracteristici importante sunt atractivitatea si usurinta de a utiliza interfata, insemnand ca aceasta trebuie sa aiba elemente estetice care sa atraga utilizatorul si ca operatiile trebuie sa se realizeze prin actiuni simple, operatiile complexe fiind realizate tot printr-o succesiune de actiuni simple ale utilizatorului.
Interfața grafică a aplicației este una consistentă intrucat prezintă numeroase elemente de design si este foarte detaliată. Elementele importante ale interfeței sunt clare si la vedere fiind bine delimitate cu elemente grafice ce se regasesc in joc. Utilizatorii ce dispun de o configurație hardware mai avansată vor avea un avantaj, intrucat detaliile grafice vor fi mult mai bine definite.
Imagine de ansamblu a aplicației inainte de rularea acesteia :
Aplicația dupa ce a fost rulata :
4. Prezentarea Produsului Software
4.1 Resursele software necesare rularii aplicației
Sistemul pe care va fi rulată aplicația trebuie sa detină un sistem de operare Windows. Aplicația nu necesită programe aditionale pentru a putea rula.
4.2 Cerințele platformei hardware ale produsului
Resurse hardware :
Intrucat aplicația este dezvoltată in cadrul motorului Unity 3d, resursele hardware nu necesită o performanța ridicată. Pentru a putea rula jocul configurația calculatorului trebuie sa aiba un minim de specificații :
Procesor : Intel Celeron sau AMD
Memorie : 1024 MB RAM
Video : Intel 4500
DirectX : Versiunea 9.0
HDD : Minimum 500 GB
Placa audio : integrata
Pentru a putea atinge capacitatea maxima in materie de grafica un sistem recomandat trebuie sa arate astfel :
Procesor : Intel i5
Memorie: 2048 GB RAM
Video : Nvidia/Amd min 2gb VRAM
Anexe
Anexa nr. 1 : Secvente din codul sursa
Urmatorul cod sursa ajuta la construirea de turnuri :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BuildManager : MonoBehaviour {
public static BuildManager instance;
void Awake() {
if (instance != null) {
Debug.LogError(" error …");
return; }
instance = this;
}
public GameObject standardTurretPrefab;
public GameObject missileLauncherPrefab
private GameObject turretToBuild;
public GameObject GetTurretToBuild () {
return turretToBuild;
}
public void SetTurretToBuild(GameObject turret) {
turretToBuild = turret; }
}
Urmatorul cod sursa face posibila aparitia inamicilor :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WaveSpawner : MonoBehaviour
{ public Transform enemyPrefab;
public Transform spawnPoint;
public float timeBetweenWaves = 5f;
private float countdown = 2f;
private int waveIndex = 0;
void Update()
{ if (countdown <= 0f)
{ StartCoroutine(SpawnWave());
countdown = timeBetweenWaves; }
countdown -= Time.deltaTime; }
IEnumerator SpawnWave() {
waveIndex++;
for (int i = 0; i < waveIndex; i++) {
SpawnEnemy();
yield return new WaitForSeconds(0.5f); }
}
void SpawnEnemy() {
Instantiate(enemyPrefab, spawnPoint.position, spawnPoint.rotation);
}
}
Cu ajutorul urmatorului cod putem defini o cale specifica ce o vor urma inamicii :
using System.Collections.Generic;
using UnityEngine;
public class Waypoints : MonoBehaviour {
public static Transform[] points;
void Awake() {
points = new Transform[transform.childCount];
for (int i = 0; i <points.Length; i++) {
points[i] = transform.GetChild(i); }
}
}
Pentru a putea muta camera cu ajutorul mouseului sau a tastaturii s-a folosit urmatorul cod sursa :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraController : MonoBehaviour {
private bool doMovement = true;
public float panSpeed = 30f;
public float panBorderThickness = 10f;
public float scrollSpeed = 5f;
public float minY = 105f;
public float maxY = 125f;
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.Escape))
doMovement = !doMovement;
if (!doMovement)
return;
if (Input.GetKey("w") || Input.mousePosition.y >= Screen.height – panBorderThickness )
{
transform.Translate(Vector3.forward * panSpeed * Time.deltaTime, Space.World);
}
if (Input.GetKey("s") || Input.mousePosition.y <= panBorderThickness)
{
transform.Translate(Vector3.back * panSpeed * Time.deltaTime, Space.World);
}
if (Input.GetKey("d") || Input.mousePosition.x >= Screen.width – panBorderThickness)
{
transform.Translate(Vector3.right * panSpeed * Time.deltaTime, Space.World);
}
if (Input.GetKey("a") || Input.mousePosition.x <= panBorderThickness)
{
transform.Translate(Vector3.left * panSpeed * Time.deltaTime, Space.World);
}
float scroll = Input.GetAxis("Mouse ScrollWheel");
Vector3 pos = transform.position;
pos.y -= scroll * 100 * scrollSpeed * Time.deltaTime;
pos.y = Mathf.Clamp(pos.y, minY, maxY);
transform.position = pos; }
}
Proprietatile si comportamentul inamicilor a fost programat in urmatorul cod sursa :
using UnityEngine;
public class Enemy : MonoBehaviour {
public float speed = 10f;
private Transform target;
private int wavepointIndex = 0;
void Start() {
target = Waypoints.points[0]; }
void Update() {
Vector3 dir = target.position – transform.position;
transform.Translate(dir.normalized * speed * Time.deltaTime, Space.World);
if (Vector3.Distance(transform.position, target.position) <= 0.2f) {
GetNextWaypoint(); }
}
void GetNextWaypoint() {
if (wavepointIndex>= Waypoints.points.Length-1) {
Destroy(gameObject);
return;
}
wavepointIndex++;
target = Waypoints.points[wavepointIndex];
}
}
Proprietatile si comportamentul turnurilor de aparare este reprezentat in urmatorul cod sursa :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Turret : MonoBehaviour {
private Transform target;
[Header("Attributes")]
public float range = 15f;
public float fireRate = 1f;
private float fireCountdown = 0f;
[Header("Unity Setup Fields")]
public string enemyTag = "Enemy";
public Transform partToRotate;
public float turnSpeed = 10f;
public GameObject bulletPrefab;
public Transform firePoint;
void Start () {
InvokeRepeating("UpdateTarget", 0f, 0.5f);
}
void UpdateTarget ()
{
GameObject[] enemies = GameObject.FindGameObjectsWithTag(enemyTag);
float shortestDistance = Mathf.Infinity;
GameObject nearestEnemy = null;
foreach (GameObject enemy in enemies)
{ float distanceToEnemy = Vector3.Distance(transform.position, enemy.transform.position);
if (distanceToEnemy < shortestDistance)
{
shortestDistance = distanceToEnemy;
nearestEnemy = enemy;
}
}
if (nearestEnemy != null && shortestDistance <= range)
{
target = nearestEnemy.transform; }
else {
target = null;
}
}
void Update () {
if (target == null)
return;
Vector3 dir = target.position – transform.position;
Quaternion lookRotation = Quaternion.LookRotation(dir);
Vector3 rotation = Quaternion.Lerp(partToRotate.rotation, lookRotation, Time.deltaTime* turnSpeed ).eulerAngles;
partToRotate.rotation = Quaternion.Euler(0f, rotation.y, 0f);
if(fireCountdown <= 0f) {
Shoot();
fireCountdown = 1f / fireRate;
}
fireCountdown -= Time.deltaTime;
}
void Shoot()
{
GameObject bulletGo = (GameObject)Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
Bullet bullet = bulletGo.GetComponent<Bullet>();
if (bullet != null)
bullet.Seek(target);
}
void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, range);
}
}
Urmatorul cod sursa reprezinta terenul pe care se pot construi turnurile impreuna cu restrictiile acestuia :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class Node : MonoBehaviour {
public Color hoverColor;
private GameObject turret;
private Renderer rend;
private Color startColor;
BuildManager buildManager;
void Start() {
rend = GetComponent<Renderer>();
startColor = rend.material.color;
buildManager = BuildManager.instance;
}
void OnMouseDown()
{
if (EventSystem.current.IsPointerOverGameObject())
return;
if (buildManager.GetTurretToBuild() == null)
return;
if (turret != null)
{
Debug.Log("Error");
return;
}
GameObject turretToBuild = BuildManager.instance.GetTurretToBuild();
turret = (GameObject)Instantiate(turretToBuild, transform.position, transform.rotation);
}
void OnMouseEnter()
{
if (EventSystem.current.IsPointerOverGameObject())
return;
if (buildManager.GetTurretToBuild() == null)
return;
rend.material.color = hoverColor;
}
void OnMouseExit()
{
rend.material.color = startColor;
}
}
Bibliografie
http://www.wall-street.ro/articol/IT-C-Tehnologie/37803.html
https://venturebeat.com/2014/10/23/john-riccitiello-sets-out-to-identify-the-engine-of-growth-for-unity-technologies-interview/
http://wiki.unity3d.com/index.php/UnityScript_versus_JavaScript
http://www.lextrait.com/Vincent/implementations.html
http://news.softpedia.com/news/An-Insight-on-Microsoft-Product-Codenames-42994.shtml
https://blogs.msdn.microsoft.com/deeptanshuv/2006/04/11/64-bit-and-visual-studio-2005/
https://www.computerworld.com.au/article/261958/a-z_programming_languages_c_/?pp=7
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf
https://www.infoq.com/minibooks/emag-c-sharp-preview
https://www.polygon.com/features/2013/8/15/4528228/missile-command-dave-theurer
https://web.archive.org/web/20121015090411/http://www.gamasutra.com/php-bin/news_index.php?story=21102#.UiIErD_3O5I
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Dezvoltarea unui joc folosind limbajul C in mediul de dezvoltare Unity 3D [302842] (ID: 302842)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
