{"id":1070,"date":"2017-05-06T09:41:00","date_gmt":"2017-05-06T07:41:00","guid":{"rendered":"http:\/\/revista.newprojects.org\/?p=1070"},"modified":"2017-07-17T09:47:01","modified_gmt":"2017-07-17T07:47:01","slug":"mediul-de-programare-greenfoot","status":"publish","type":"post","link":"https:\/\/revista.newprojects.org\/?p=1070","title":{"rendered":"Mediul de programare GREENFOOT"},"content":{"rendered":"<h5>Diaconu Diana Elena, profesor, informatic\u0103 \u0219i TIC,\u00a0Colegiul Na\u021bional \u201eIen\u0103chi\u021b\u0103 V\u0103c\u0103rescu\u201d, T\u00e2rgovi\u0219te<\/h5>\n<p>Mediile de programare au suportat modific\u0103ri, at\u00e2t \u00een ceea ce prive\u0219te modul de lucru c\u00e2t \u0219i aspectul. Trei dintre cele mai utilizate instrumente sunt C#, Alice 3 \u0219i Greenfoot.<\/p>\n<p>Greenfoot este un mediu de programare orientat\u0103 pe obiecte \u00een care putem crea personaje \u0219i ac\u021biuni, av\u00e2nd no\u021biuni de Java. Java este un limbaj de programare de nivel \u00eenalt, orientat pe obiecte, dezvoltat de Sun Microsystems. Java a fost creat pentru a fi u\u0219or de \u00eenv\u0103\u021bat dup\u0103 C sau C++, este independent de platform\u0103 \u0219i este disponibil gratuit. Spre deosebire de C\/C++ care dup\u0103 compilarea unui cod, acesta este convertit \u00een codul ma\u0219in\u0103 al platformei, c\u00e2nd un cod Java este compilat, se creaz\u0103 un cod de octe\u021bi care se poate executa pe orice platform\u0103 pentru care exist\u0103 JVL (Java Virtual Machine), precum Windows, UNIX, Macintosh.<\/p>\n<p>Cu Greenfoot putem programa frumos, av\u00e2nd la dispozi\u021bie cod clasic Java, dar \u00een acela\u0219i timp putem vedea rezultatul execu\u021biei programului.<\/p>\n<p>At\u00e2t platforma c\u00e2t \u0219i tutorialele sunt puse la dispozi\u021bie de c\u0103tre School of Computing, University of Kent in Canterbury, UK \u0219i sponsorizate de c\u0103tre Oracle. Ele se g\u0103sesc la adresa <a href=\"https:\/\/www.greenfoot.org\" target=\"_blank\" rel=\"noopener\">https:\/\/www.greenfoot.org<\/a>.<\/p>\n<p>Dup\u0103 ce deschidem Greenfoot, putem vedea o fereastr\u0103 ca cea din Figura 1, \u00een care personajele \u0219i scena vor fi afi\u0219ate \u00een partea st\u00e2ng\u0103 a ecranului, \u00een partea dreapt\u0103 putem vedea clasele, iar \u00een partea de jos putem vedea modul de execu\u021bie.<\/p>\n<p><a href=\"https:\/\/revista.newprojects.org\/wp-content\/uploads\/1070_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1073 aligncenter\" src=\"https:\/\/revista.newprojects.org\/wp-content\/uploads\/1070_1.png\" alt=\"\" width=\"849\" height=\"599\" srcset=\"https:\/\/revista.newprojects.org\/wp-content\/uploads\/1070_1.png 849w, https:\/\/revista.newprojects.org\/wp-content\/uploads\/1070_1-300x212.png 300w, https:\/\/revista.newprojects.org\/wp-content\/uploads\/1070_1-768x542.png 768w, https:\/\/revista.newprojects.org\/wp-content\/uploads\/1070_1-150x106.png 150w\" sizes=\"auto, (max-width: 849px) 100vw, 849px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">Figura 1.<\/p>\n<p>Modul de execu\u021bie a unui program este diferit \u00een func\u021bie de butonul pe care \u00eel ap\u0103s\u0103m. De exemplu, dac\u0103 d\u0103m click pe Act se execut\u0103 toate ac\u021biunile din scenariul pe care l-am creat, dac\u0103 d\u0103m click pe Run se execut\u0103 scenariul p\u00e2n\u0103 c\u00e2nd ap\u0103s\u0103m pe Pause, dac\u0103 d\u0103m click pe Reset se opre\u0219te \u0219i se reporne\u0219te scenariul, iar Speed modific\u0103 viteza cu care se deruleaz\u0103 scenariul.<\/p>\n<p>Pentru \u00eenceput, putem crea o subclas\u0103 pentru fundal, d\u00e2nd click dreapta pe <em>World <\/em>care se afl\u0103 \u00een meniul din dreapta \u0219i aleg\u00e2nd <em>New Subclass<\/em>. Putem personaliza fundalul prin alegerea unuia din cele disponibile sau prin importarea unui fundal din afara aplica\u021biei. Personajele cu care dorim s\u0103 lucr\u0103m, le introducem prin alegerea din <em>Actor classes<\/em>, click dreapta <em>New subclass<\/em>, <em>Animals<\/em> sau alegem un personaj din fi\u0219ier.<\/p>\n<p>Odat\u0103 ales personajul, putem s\u0103 folosim metodele predefinite pe care le g\u0103sim \u00een documenta\u021bia aplica\u021biei la Help, Greenfoot Class Documentation, Actor, Method. De exemplu, putem crea un personaj, pe care s\u0103 \u00eel mi\u0219c\u0103m cu move(10) 10 unit\u0103\u021bi \u0219i s\u0103 \u00eel rotim cu turn(5) 5 grade, ca \u00een Figura 2. Dac\u0103 folosim move(-10), personajul se va roti \u00eenapoi.<\/p>\n<p><a href=\"https:\/\/revista.newprojects.org\/wp-content\/uploads\/1070_2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1074 aligncenter\" src=\"https:\/\/revista.newprojects.org\/wp-content\/uploads\/1070_2.png\" alt=\"\" width=\"804\" height=\"438\" srcset=\"https:\/\/revista.newprojects.org\/wp-content\/uploads\/1070_2.png 804w, https:\/\/revista.newprojects.org\/wp-content\/uploads\/1070_2-300x163.png 300w, https:\/\/revista.newprojects.org\/wp-content\/uploads\/1070_2-768x418.png 768w, https:\/\/revista.newprojects.org\/wp-content\/uploads\/1070_2-150x82.png 150w\" sizes=\"auto, (max-width: 804px) 100vw, 804px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">Figura 2.<\/p>\n<p>Putem crea o lume \u00een care personajele s\u0103 apar\u0103 de la \u00eenceput, pe o anumit\u0103 pozi\u021bie pe ecran. De exemplu, \u00een World scriem codul de mai jos \u0219i personajele vor ap\u0103rea de la \u00eenceput pe pozi\u021biile specificate.<\/p>\n<p>public unu()<\/p>\n<p>{\u00a0 super(600, 400, 1);<\/p>\n<p>urs urs1=new urs();<\/p>\n<p>foca foca1=new foca();<\/p>\n<p>addObject(urs1,200, 200);<\/p>\n<p>addObject(foca1,300, 300);\u00a0\u00a0 }<\/p>\n<p>Un alt exemplu este cel de mai jos \u00een care apar trei actori: iarba este static\u0103; musca se mi\u0219c\u0103 aleator cu turn(Greenfoot.getRandomNumber(10)); broasca se mi\u0219c\u0103 la st\u00e2nga, dreapta, sus, jos cu 3 unit\u0103\u021bi \u00een func\u021bie de tasta ap\u0103sat\u0103. \u00cen func\u021bia definit\u0103 pentru broasc\u0103, am introdus o structur\u0103 care permite ca la \u00eent\u00e2lnirea broa\u0219tei cu musca, s\u0103 se aud\u0103 un sunet \u00eenregistrat (playSound) \u0219i musca s\u0103 dispar\u0103 (removeObject).<\/p>\n<p>public void act()<\/p>\n<p>{if (Greenfoot.isKeyDown(&#8222;left&#8221;))\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 this.setLocation(this.getX()-3,this.getY());<\/p>\n<p>if (Greenfoot.isKeyDown(&#8222;right&#8221;))\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 this.setLocation(this.getX()+3,this.getY());<\/p>\n<p>if (Greenfoot.isKeyDown(&#8222;up&#8221;))\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.setLocation(this.getX(),this.getY()-3);<\/p>\n<p>if (Greenfoot.isKeyDown(&#8222;down&#8221;))\u00a0\u00a0\u00a0\u00a0\u00a0 this.setLocation(this.getX(),this.getY()+3);<\/p>\n<p>Actor musca=getOneIntersectingObject(musca.class);<\/p>\n<p>if(musca!=null)<\/p>\n<p>{Greenfoot.playSound(&#8222;oac.wav&#8221;); getWorld().removeObject(musca); }<\/p>\n<p>}<\/p>\n<p>Greenfoot ne permite dezvoltarea unor jocuri interesante \u00een care s\u0103 ad\u0103ug\u0103m actori care s\u0103 ac\u021bioneze diferit, s\u0103 scoat\u0103 sunete, s\u0103 se incrementeze contoare, s\u0103 existe timp de finalizare pentru jocul respectiv.<\/p>\n<p><strong>Bibliografie<\/strong><\/p>\n<p>Runceanu Adrian, Rinceanu Mihaela, 2012, <em>Medii vizuale de dezvoltare bazate pe programarea orientat\u0103 pe obiecte<\/em>, \u201eAnnals of the Constantin Br\u00e2ncu\u0219i\u201d University of T\u00e2rgu Jiu, Engineering Series, No.3\/2012<\/p>\n<p>James Cooper, <em>Java Design Patterns. A Tutorial<\/em>, Addison Wesley, 2000<\/p>\n<p>Michael K\u00f6lling, <em>Introduction to Programming with Greenfoot, Object-Oriented Programming in Java with Games and Simulations<\/em>, Pearson Education, August 2009<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Diaconu Diana Elena, profesor, informatic\u0103 \u0219i TIC,\u00a0Colegiul Na\u021bional \u201eIen\u0103chi\u021b\u0103 V\u0103c\u0103rescu\u201d, T\u00e2rgovi\u0219te Mediile de programare au suportat modific\u0103ri, at\u00e2t \u00een ceea ce prive\u0219te modul de lucru c\u00e2t \u0219i aspectul. Trei dintre cele mai utilizate instrumente sunt C#, Alice 3 \u0219i Greenfoot. Greenfoot este un mediu de programare orientat\u0103 pe obiecte \u00een care putem crea personaje \u0219i&#8230;<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1070","post","type-post","status-publish","format-standard","hentry","category-infogates"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/revista.newprojects.org\/index.php?rest_route=\/wp\/v2\/posts\/1070","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/revista.newprojects.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/revista.newprojects.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/revista.newprojects.org\/index.php?rest_route=\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/revista.newprojects.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1070"}],"version-history":[{"count":3,"href":"https:\/\/revista.newprojects.org\/index.php?rest_route=\/wp\/v2\/posts\/1070\/revisions"}],"predecessor-version":[{"id":1075,"href":"https:\/\/revista.newprojects.org\/index.php?rest_route=\/wp\/v2\/posts\/1070\/revisions\/1075"}],"wp:attachment":[{"href":"https:\/\/revista.newprojects.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1070"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/revista.newprojects.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1070"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/revista.newprojects.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1070"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}