Arhive categorie: Code::Blocks

Explicații – CITEȘTE CU ATENȚIE!

Bună!

Dacă ai primit un e-mail de la noi sau te-ai înscris la cercul de informatică „Programare cu răbdare”, atunci citește cu ATENȚIE și cu RĂBDARE acest mesaj.

Dacă te-ai înscris pe site (sau te-a înscris unul dintre părinți sau altcineva), înseamnă că ești înscris și NU e nevoie de nicio confirmare specială de la noi. Mai întâi, trebuie să știi că în acest an școlar nu vor fi activități ca în anul școlar precedent.

Dacă nu ești din Bacău și nu vii la Bacău, atunci:

  • Dacă te-ai înscris în centrul zonal din Zalău, ia legătura cu doamna profesoară Bodis Klara.
  • Dacă te-ai înscris în centrul zonal din Iași, ia legătura cu doamnele profesoare Daniela Lupuleasa și Emanuela Pădurariu.
  • Dacă te-ai înscris în centrul zonal din Adjud, ia legătura cu doamnele profesoare Elena Vlad și Dana Diaconu.
  • Dacă te-ai înscris în centrul zonal din Tg. Ocna, ia legătura cu doamnele profesoare Cecilia Oancea și Raluca Botezatu.

Dacă te-ai înscris în Bacău și ești elev în clasele II-VIII (sau părintele unui elev din clasele II-VIII), atunci urmărește pe site, la adresa https://programarecurabdare.ro/orar activitățile colorate în roz, care costă 50 de lei pentru 3 ori , la Școala Gimnazială „Constantin Platon” din Bacău. De la ora 10 la ora 12 – începătorii, de la ora 13 la ora 15 – avansații. Dacă nu știi în ce grupă ești, atunci vino la ora 10 și vei afla. Următoarea întâlnire este sâmbătă 19 octombrie. Dacă ești în clasele V-VIII și vrei să înveți limbajul C/C++, vino tot de la ora 13.

Dacă te-ai înscris în Bacău și ești elev de liceu (sau elev de clasa a VIII-a, care vrea să vină cu cei de la liceu), atunci trebuie să știi următoarele:

  • În calendarul activităților de la adresa https://programarecurabdare.ro/orar sau direct aici: https://docs.google.com/document/d/1RuYH5MoZyQTE81AgSL_4cgEfJlP5dO_IrS6iMWfxeYA/edit?usp=sharing vei vedea unele activități colorate în verde deschis. Acelea sunt conferințe, care se desfășoară cam una pe lună și la care intrarea este liberă. Se va anunța, tot pe site și pe pagina noastră de pe Facebook, de fiecare dată sala unde se vor desfășura. Următoarea conferință este pe 9 noiembrie și va trata subiectul răbdării în era comunicațiilor instantanee, invitat fiind profesorul universitar doctor Ștefan Antonio Sandu. Conferințele durează cam 2-3 ore și sunt gratuite, pentru toți elevii înscriși pe site.
  • Tot în calendarul activităților vei vedea unele activități colorate în turcoaz – acele activități durează 4 ore sâmbătă dimineață (9-13) și 4 ore duminică dimineața (9-13). În total, cele 8 ore costă 100 lei și nu contează dacă vii la toate sau nu, tot 100 lei plătești. La aceste activități poate participa orice elev, care își dorește să se pregătească pentru activitățile din cursul anului școlar: primele săptămâni, teza la informatică din semestrul I, teza la informatică din al doilea semestru, olimpiade școlare etc. Aceste activități se numesc weekendurile PCR și următorul weekend este cel al pregătirii începătorilor, cei care nu înțeleg la școală și vor să învețe mai mult. Pentru a participa sâmbăta și duminica asta (12-13 octombrie) la pregătirea pentru începători, trebuie să te înscrii în formularul de la adresa următoare și să achiți taxa de 100 lei: https://forms.gle/88qF5yVJRT3E5Tjs5
  • În același calendar vei vedea unele activități colorate în albastru închis. Ele sunt pentru grupa specială, iar dacă ești deja în această grupă, știi că ai fost selecționat, pentru că s-a creat un grup special pe Messenger. Dacă nu, poți aplica pentru a face parte din această grupă specială, completând acest formular: https://forms.gle/B86QGNpcWYD6WWLR8 Dacă vei face parte din grupa specială și vei avea două absențe, vei fi eliminat. Numărul de elevi din grupa specială este limitat la 40.
  • Activitățile colorate în alte culori sunt ale centrelor zonale din țară sau se referă la concursuri/tabere/școli de vară etc. Altfel de activități nu mai sunt.
  • Dacă vrei să fii la curent cu activitățile cercului de informatică, intră în grupul de Messenger PCR (Oficial) și urmărește pagina noastră de Facebook: https://www.facebook.com/programarecurabdare și profilul nostru de Instagram: https://www.instagram.com/programarecurabdare/
  • De asemenea, dacă ești părintele unui copil din clasele II-VIII, atunci poți intra în grupul de Facebook Super aventura programării – Programare cu răbdare pentru cei mici: https://www.facebook.com/groups/superaventura/
  • Dacă vrei să faci pregătire în particular cu unul dintre profesorii sau mentorii noștri, sună-l pe domnul profesor Bogdan Pătruț, la telefon 0728882288.

Ai citit cu atenție? Indiferent de răspuns, RECITEȘTE!

 

The Beauty of Code – Echipe care au trimis rezolvări

Următoarele echipe au trimis rezolvări pentru prima etapă a concursului de informatică pentru fete “The Code of Beauty – The Beauty of Code”

  1. Dumitrescu Andreea (Colegiul Național „Mihai Viteazul”, București) și Dervis Diana (Colegiul Național „Sfântul Sava”, București)
  2. Hîncu Alice (Colegiul Național „Gheorghe Vrănceanu”, Bacău) și Beresteanu Alexandra (Colegiul Național „Gheorghe Vrănceanu”, Bacău)
  3. Zara Mara (Colegiul Național „Emil Botta”, Adjud) și Arsene Diana (Colegiul Național “Emil Botta”, Adjud)
  4. Trandafir Denisa-Adriana (Colegiul Național „Ienăchiță Văcărescu”, Târgoviște) și Onea Ioana-Cătălina (Colegiul Național „Ienăchiță Văcărescu”, Târgoviște)
  5. Bădescu Alexandra (Liceul Tehnologic Administrativ și de Servicii „Victor Slăvescu”, Ploiești) și Sandu Corina (Liceul Tehnologic Administrativ și de Servicii „Victor Slăvescu”, Ploiești)
  6. Pribagu Alexandra-Elena (Colegiul Național „Vasile Alecsandri”, Bacău) și Smău Alexandra-Mara (Colegiul Național „Vasile Alecsandri”, Bacău)
  7. Munteanu Bianca-Stefania (Colegiul Național „Gheorghe Vrănceanu”, Bacău) și Murariu Alexandra (Colegiul Național „Gheorghe Vrănceanu”, Bacău)
  8. Buraga Andreea-Elena (Colegiul Național „Emil Botta”, Adjud) și Prisecaru Alexia-Nicoleta Colegiul Național „Emil Botta”, Adjud)
  9. Zachman-Țîșcă Roxana (Liceul Teoretic „Ion Borcea” Buhuși) și Sava Cosmina-Narcisa (Liceul Teoretic „Ion Borcea” Buhuși)
  10. Ursoiu Ioana (Colegiul Național „Ion Luca Caragiale” Ploiești) și Tănase Andreea (Colegiul Național „Ion Luca Caragiale” Ploiești)
  11. Păun Mirela (Colegiul Național „Alexandru Ioan Cuza”, Galați) și Damian Oana-Ștefania (Colegiul Național „Alexandru Ioan Cuza”, Galați)
  12. Ivu Carina (Colegiul Național „Gheorghe Vrănceanu”, Bacău) și Nanu Alexandra (Colegiul Național „Gheorghe Vrănceanu”, Bacău)
  13. Popescu Diana Maria (Colegiul Național de Informatică „Tudor Vianu”, București) și Mosteanu Alina Miahaela (Colegiul Național de Informatică „Tudor Vianu”, București)
  14. Mitroi Elena-Andreea (Colegiul Național de Informatică „Matei Basarab”, Râmnicu Vâlcea) și Rotaru Mira (Colegiul Național de Informatică „Matei Basarab”, Râmnicu Vâlcea)
  15. Tudor Ștefania – Miruna (Colegiul Național „I. L. Caragiale”, Ploiești) și Andronache Mădălina – Georgiana (Colegiul Național „I. L. Caragiale”, Ploiești)
  16. Mocanu Maria Alexandra (Colegiul Național de Informatică „Tudor Vianu”, București), Halean Eusebia (Colegiul Național de Informatică „Tudor Vianu”, București)
  17. Stan Andra Beatrice Corina (Colegiul Național „Roman Vodă”, Roman) și Bolog Andreea Ioana (Colegiul Național „Roman Vodă”, Roman)
  18. Tanțoș Maria Iuliana (Colegiul Național „Ferdinand I”, Bacău) și Băluță Alexia (Colegiul Național „Ferdinand I”, Bacău)
  19. Pană Alexandra (Colegiul Național „Ienăchiță Văcărescu”, Târgoviște) și Cojocaru Anne-Marie-Zoe (Colegiul Național „Ienăchiță Văcărescu”, Târgoviște)
  20. Neguriță Diana-Gabriela (Colegiul Național „Gheorghe Vrănceanu”, Bacău) și Pătrăşcan Alina-Monica (Colegiul „Mihai Eminescu”, Bacau)
  21. Șerban Alexandra (Colegiul Național „Vasile Alecsandri”, Galați) și Gheorghiță Andreea (Colegiul Național „Vasile Alecsandri”, Galați)
  22. Mocanu Ioana (Colegiul Național „Vasile Alecsandri”) și Senteș Aida (Colegiul Național „Vasile Alecsandri”, Bacău)
  23. Rac Ioana (Colegiul Național „I. L. Caragiale” București) și Marinescu Ștefania Ioana (Colegiul Național de Informatică „Tudor Vianu”, București)
  24. Paraschiv Andreea (Colegiul Național „Mircea cel Bătrân”, Râmnicu Vâlcea) și Dincă Diana (Colegiul Național „Mircea cel Bătrân”, Râmnicu Vâlcea)
  25. Șerbănică Andreea-Maria (Colegiul Național „Mircea cel Bătrân”, Râmnicu Vâlcea) și Rădulescu Alexandra (Colegiul Național „Mircea cel Bătrân”, Râmnicu Vâlcea)
  26. Nicula Maria (Colegiul Național de Informatică „Matei Basarab”, Râmnicu Vâlcea) și Nicula Andreea (Școala „Take Ionescu”, Râmnicu Vâlcea)
  27. Boca Elena Iustina (Colegiul Național de Informatică „Tudor Vianu”, București) și Drăguț Maria Clara (Colegiul Național de Informatică „Tudor Vianu”, București)

Rezultatele se vor afișa mâine, 15.06.2019, la ora 23.00.

Să vedem care sunt echipele care se vor califica pentru etapa a doua, în care vor lucra în Scratch.

Concursul începătorilor

Concursul începătorilor este un concurs pe echipe grupa A, care s-a desfășurat în 30.03.2019, ora 14.00, Colegiul Național „Gheorghe Vrănceanu”

Concursul se va organiza pe echipe. Va fi organizat pe 30 martie 2019.

Ora 10:00 – Colegiul Național „Ferdinand I”, Bacău (Amfiteatrul „Solomon Marcus”) – Prezentarea doamnei Ica Băluță (Banca Raiffeisen Bacău, agenția „Vasile Alecsandri”) despre cum puteți intra în posesia premiilor. Vă puteți face cont IBAN și card și după concurs.

Ora 10:15 – Colegiul Național „Ferdinand I”, Bacău (Amfiteatrul „Solomon Marcus”) – Prezentarea domnului profesor univ. dr. Adrian Atanasiu (Facultatea de Matematică și Informatică, Universitatea din București) – „Raționament și logică în rezolvarea problemelor”. Domnul profesor va prezenta probleme de logică, de genul problemei de logică ce va fi dată la concurs. Prezentarea se termină la ora 12.45 și va fi interactivă. Este prevăzută și o pauză de 15 minute. Veniți cu un pix și cu câteva foi de hârtie. Cei care vin la concurs, să-și aducă și laptopurile.

Ora 13:15 – Masa de prânz la Colegiul Național „Gheorghe Vrănceanu” pentru cei care participă la concurs.

Ora 14.00 – Începerea concursului propriu-zis. Va dura până la ora 17.00, iar la ora 17.30 se vor anunța premiile.

La concurs pot participa echipe de 2-4 persoane din grupa A. Participanții la concurs trebuie să-și facă un cont la banca Raiffeisen la orice agenție din Bacău (inainte sau dupa concurs).

Atenție! Participarea la prezentarea domnului profesor Adrian Atanasiu vă aduce 7 puncte. Dacă aduceți n persoane noi în cercul de informatică, primiți încă 5xn puncte (iar ei primesc 7 puncte pentru prima prezență). Pentru participarea la concurs, primiți încă 3 puncte. Toate aceste puncte vă ajută să vă mențineți locul fruntaș în clasamentul pentru tabăra gratuită de la vară, precum și o excursie gratuită la Sky Gyimes.

Premiile acordate

Premiile vor fi acordate de Raiffeisen Bank și Asociația EduSoft pe echipe. Compania ISSCO din Bacău ne susține în organizarea concursului. De asemenea, DAMOVE Catering / Restaurantul Macu’ Roșu din Bacău va oferi o masă participanților la concurs.

        

  • 1 Premiul I: 250 lei + excursie gratuită
  • 1 Premiul II: 220 lei + excursie gratuită
  • 2 Premiul III: 180 lei + excursie gratuită
  • 5 Mențiune: 150 lei + excursie gratuită
  • Toți concurenții vor beneficia de excursie gratuită la Sky Gyimes

Subiectele

  • 1 subiect la nivelul materiei parcurse la școală, la clasa a IX-a: (5p)
  • 1 subiect la nivelul materiei parcurse la școală, la clasa a X-a: (5p)
  • 1 subiect de grafică, la nivelul a ceea ce s-a predat la cercul de informatică: (5p)
  • 1 subiect de logică, la nivelul problemelor ce vor fi prezentate de domnul profesor Adrian Atanasiu, la ora 10 la Colegiul Național „Ferdinand I”. (5p)

Echipe înscrise în concurs

S-au înscris în concurs următoarele echipe. Participanții sunt rugați să vină cu laptopuri (preferabil măcar două laptopuri), pixuri și foi albe. Puteți avea și materiale de informare, veți avea acces și la Internet, pentru a vă documenta. Menționăm că nu se mai acceptă modificări în ceea ce privește componența echipelor de concurs.

Echipa 1: it ain’t much, but it’s honest work

1. Dragomirescu Emilia, C. N. “Gheorghe Vranceanu” Bacău
2. Gavril Andrei, C. N. “Gheorghe Vranceanu” Bacău
3. Pătruț Ștefan, C. N. “Gheorghe Vranceanu” Bacău
4. Mihai Adelin Lungu C. N. “Gheorghe Vranceanu” Bacău

Echipa 2: The + Girls
1. Bereșteanu Alexandra, C. N. “Gheorghe Vranceanu” Bacău
2. Stan Raluca, C. N. “Gheorghe Vranceanu” Bacău
3. Croitoru Toma, C. N. “Dimitrie Ghicka” Comanesti
4. Colceru Cosmin, C. N. “Dimitrie Ghicka” Comanesti

Echipa 3: NoIdea
1. Cristea-Eduard Petru, C. N. “Gheorghe Vranceanu” Bacău
2. Rotaru Radu-Andrei, C. N. “Gheorghe Vranceanu” Bacău
3. Moisă Victor-Gabriel, C. N. “Gheorghe Vranceanu” Bacău
4. Mazilu Mircea, C. N. “Dimitrie Ghicka” Comanesti

Echipa 4: Eminescu
1. Borșan Andrei, Colegiul “Mihai Eminescu” Bacău
2. Patrascan Alina, Colegiul “Mihai Eminescu” Bacau
3. Sidoreac Ioana, Colegiul “Mihai Eminescu” Bacau

Echipa 5: cout<<“WE ARE CODE”;
1. Cancel Nicole, C. N. “Gheorghe Vranceanu” Bacău
2. Nanu Alexandra, C. N. “Gheorghe Vranceanu” Bacău
3. Strătilă Răzvan, C. N. “Gheorghe Vranceanu” Bacău
4. Vlad Teodora, C. N. “Gheorghe Vranceanu” Bacău

Echipa 6: InfoArt
1. Radu Mihaela, C. N. “Gheorghe Vranceanu” Bacău
2. Păscăluță Ilie, C. N. “Gheorghe Vranceanu” Bacău
3. Botoi Petru-Vlad, C. N. “Gheorghe Vranceanu” Bacău

Echipa 7: noname
1. Babiuc Daria, C. N. Catolic “Sf Iosif” Bacau
2. Coman Marian-Constantin, C. T. “Dimitrie Ghika” Comănești

Echipa 8: CodeKnights
1. Aradei Robert, C. N. “Gheorghe Vranceanu” Bacau
2. Resmeriță Teodora, C. N. “Gheorghe Vranceanu” Bacau
3. Machidon Alexandru, C. N. “Gheorghe Vranceanu” Bacau

Echipa 9: P=NP
1. Olteanu Mihai-Florin, C.N. “Gheorghe Vranceanu” Bacau
2. Ivu Carina-Andreea, C. N. “Gheorghe Vranceanu” Bacau
3. Bantu Anisia, C. N. “Dimitrie Ghicka” Comanesti
4. Grajdan Mihaela, C. N. “Dimitrie Ghicka” Comanesti

Juriul este format din

  1. Președinte: prof. univ. dr. Adrian Atanasiu (Universitatea din București)
  2. Vice-președinte: lect. univ. dr. Bogdan Pătruț (Universitatea „Alexandru Ioan Cuza” din Iași)
  3. Vice-președinte: ec. Gabriel Ivu (Raiffeisen Bank Bacău)

Membri:

  1. Alice Hîncu (cl. a XI-a, C. N. „Gheorghe Vrănceanu” Bacău)
  2. Bianca Munteanu (cl. a XI-a, C. N. „Gheorghe Vrănceanu” Bacău)
  3. Mihai Nejneriu (cl. a XI-a, C. N. „Vasile Alecsandri” Bacău)
  4. Ștefan Butacu (cl. a XI-a, C. N. „Gheorghe Vrănceanu” Bacău)

 

Din ce grupă fac parte?

Dragă participant la „Programare cu răbdare”,

După șapte întâlniri ale cercului, elevii participanți au cunoscut diferitele aspecte ale informaticii, de la jocuri 3D la pagini web, de la liste înlănțuite la aplicații pe mobil, de la baze de date la GIS, de la grafică la managementul proiectelor, de la jocuri de strategie la inteligență artificială ș.a.m.d.. Și te asigurăm că domeniile sunt mult mai multe.

Informatica este un domeniu atât de larg, încât e greu să le știi pe toate. Trebuie ca, la un moment dat, să faci o alegere, să te axezi pe un anumit domeniu și să performezi în el. Această alegere NU trebuie făcută acum, ci poate pe la 20-22 de ani. Acum trebuie să știi bazele programării.

Acum e momentul să înțelegi că:

  • informatica se învață cu multă MUNCĂ, PERSEVERENȚĂ și RĂBDARE;
  • că limbajul sau mediul de programare NU este atât de important precum poate crezi;
  • că înainte de a realiza jocuri pe calculator sau aplicații mobile trebuie să stăpânești ALGORITMII și STRUCTURILE DE DATE;
  • că nu ajunge să vii doar la cerc, ci trebuie SĂ LUCREZI FOARTE MULT ACASĂ, singur sau cu prietenii;
  • că inteligența artificială NU este ceea ce spune media că este, ci ceea ce vă pot spune specialiștii în inteligența artificială.

Dar cel mai important lucru pe care trebuie să-l înțelegi este că trebuie să îți cunoști NIVELUL unde te situezi.

De azi, vom avea doar 3 GRUPE: A, B și C, indiferent de clasa în care ești sau de vârsta pe care o ai.

Fiecare din voi trebuie să se regăsească într-una din aceste grupe, dacă își răspunde SINCER la niște întrebări și înțelege că pentru a face programe mai sofisticate, fie că e vorba de inteligență artificială, de aplicații mobile sau web, de jocuri de strategie sau cu animație 3D, este foarte important să știe să opereze cu STRUCTURI DE CONTROL și cu STRUCTURI DE DATE, adică SĂ PROGRAMEZE la modul general. E ca și cum ai fi la școala de șoferi și înveți să conduci o mașină oarecare, fie că ea e un Logan sau un Mercedes, e ca și cum ai învăța să operezi cu un smartphone, fie că el e Samsung sau Apple.

De aceea, acum e momentul să afli clar în ce grupă te încadrezi, răspunzând sincer la următoarele 3 întrebări

  1. Știi să definești, să programezi doar cu tipuri de date simple, variabile, expresii, operatori, cunoști (sau acum înveți) structurile de control ale execuției unui program (instrucțiunile if, while, for etc.), dar nu știi despre funcții, vectori, șiruri de caractere sau matrice? Dacă răspunsul la această întrebare este DA, atunci grupa ta va fi de acum A.
  2. Pe lângă lucrurile de la întrebarea anterioară, poți opera cu date structurate de date, precum vectori, șiruri de caractere, matrice, precum și funcții și operații de căutare, sortare a vectorilor, dar nu ai lucrat cu lucrurile din întrebarea 3? Dacă răspunsul la această întrebare este DA, atunci grupa ta va fi de acum B.
  3. Pe lângă lucrurile de la întrebările 1 și 2, ai folosit și alte lucruri, cum ar fi structuri de date înlănțuite (liste, stive, cozi, arbori), precum și unele tehnici de programare, precum greedy, divide-et-impera (recursivitate), backtracking și programare dinamică, atunci grupa ta va fi de acum C.

Plecând de la aceste întrebări, determină grupa ta cea mai potrivită și vino, de acum încolo, la cerc la acea grupă. Nu încerca mai mult decât poți, indiferent de ceea ce cred ceilalți despre tine. Nu încerca mai puțin decât știi, pentru că te vei plictisi. Nu te crampona în a crede că limbajul de programare este ceea ce contează acum. E timpul să o iei încet, cu răbdare, iar la final vei ajunge la cele mai bune rezultate, vei învăța lucruri foarte frumoase.

  • FII SINCER(Ă) CU TINE ÎNSĂȚI/ÎNSUȚI!
  • NU ABANDONA!
  • NU NEGLIJA CE ÎNVEȚI LA ȘCOALĂ ȘI MUNCEȘTE MULT ACASĂ!

Și totul va fi excelent. Vom lucra la fiecare grupă după un plan bine pus la punct.

Ne vedem sâmbătă!!!

Grafică în CodeBlocks

1. Biblioteca grafică WinBGIm

Biblioteca grafică WinBGIm se poate descărca de aici:

winbgim.zip

Atenție: pe web găsiți alte variante ale acestei arhive, dar nefuncționale.

Dupa ce descarcati și scoateți fișierele din această arhivă, veți face următoarele lucruri:

  1. Extrageti fisierele graphics.h, winmgim.h si libbgi.a din arhiva winbgim.zip.
  2. Copiati fisierele graphics.h si winbgim.h in folderul include din compilatorul MinGW, care se gaseste, cel mai probabil, aici: c:\Program Files\CodeBlocks\MinGW\include\
  3. Copiati fisierul libbgi.a in folderul lib al directorului compilatorului MinGW, care se gaseste, cel mai probabil, aici: c:\Program Files\CodeBlocks\MinGW\lib\
  4. In Code::Blocks accesati Settings >> Compiler… >> linker settings
  5. Faceti click pe butonul Add in partea Link libraries, apoi rasfoiti si selectati fisierul libbgi.a
  6. In partea dreapta (adica la Other linker options) scrieti urmatoarele comenzi:
    -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
  7. Faceti click pe OK.

Descrierea functiilor grafice se gaseste aici:

http://www.cs.colorado.edu/~main/cs1300/doc/bgi/bgi.html

Un exemplu de program de test pentru grafica este aici:

#include <iostream>
#include <graphics.h>
#include <winbgim.h>

int main()
{

  initwindow(800,600);

  int x = 400, y = 300, r; 
  for (r = 25; r <= 125; r += 20)
      circle(x, y, r);

  getch();
  closegraph();
  return 0;
}

Daca acesta functioneaza, puteti continua sa folositi orice functie grafica si de lucru cu mouse-ul din biblioteca WinBGIm.

Succes!

2. Exemple de programe grafice

  • Desenarea unei table de șah, folosind doar primitiva grafică line -: la tablă
  • Desenarea graficului unei funcții, folosind doar primitiva grafică line -: la tablă
  • Desenarea unui poligon regulat, a unei stele, folosind doar primitiva grafică line -: la tablă

Presupunem că puteți lucra în modul grafic, pe un ecran cu latime*inaltime pixeli în care coordonatele colțului stânga sus sunt (0, 0), iar ale colțului dreapta-jos sunt (latime-1, inaltime-1). În acest mod grafic, dispuneți de următoarele primitive grafice
o funcție grafică void setcolor(unsigned int c), care stabilește culoarea pentru a desena următoarele linii, până la schimbarea culorii de un alt apel al acestei funcții (inițial se consideră c=0, implicit); c este un cod de culoare, care corespunde unei valori între 0 și 15, de exemplu 0=negru, 1=albastru, 2=roșu etc.
o funcție grafică void setwidth(unsigned int g), care stabilește grosimea (1<=g<=10, implicit g=1) de desenare a următoarelor linii, până la un nou apel al acestei funcții;
o funcție grafică void line(unsigned int x1, unsigned int y1, unsingned int x2, unsigned int y2) care trasează o linie între punctul de coordonate (x1, y1) și cel de coordonate (x2, y2), în culoarea curentă, de grosimea curentă;
o funcție void setfillcolor(unsigned int c), care stabilește culoarea de umplere pentru următoarele apeluri ale funcției fill de mai jos; c este implicit 0 (negru), dar poate fi orice valoarea 0<=c<=15;
o funcție void fill(unsigned int x1, unsigned int x2, unsigned int c), care colorează (prin umplere) în culoarea stabilită de funcția setfillcolor, conturul închis, mărginit de o linie poligonală închisă, având culoarea c. Colorarea începe în punctul de coordonate (x1, y1), care se presupune a fi în interiorul acelei linii poligonale.
(0,30p) Definiți o structură de date adecvată pentru a reprezenta o stea regulată cu un număr de colțuri (cel puțin 3), cu marginea de o anumită culoare și grosime, cu o anumită culoare în interior, cu o anumită mărime și o anumită „deschidere” a colțurilor, cu o anumită amplasare sub un anumit unghi față de orizontală a primului colț. Se pot folosi funcțiile trigonometrice sin și cos, din math.h.
(0,90p) Scrieți o funcție care să deseneze o asemenea stea, oarecare, amplasată oriunde și oricum, de culoare oarecare etc.
Click aici pentru solutie.

 

Un program de grafică cu o matrice în spate

#include <iostream>
#include <winbgim.h>
#include <stdlib.h>

using namespace std;

#define MAX 20
#define FUNDAL CYAN

int stanga,sus,width,height,latura, numar;
bool gata;

int TablaDeJoc[MAX][MAX];

int scor;

void afiseazaScor()
{
   char sirScor[10];
   setcolor(FUNDAL);
   itoa(scor,sirScor,10); outtextxy(200,50,sirScor);
   int i,j;  scor=0;
   for (i=1;i<=numar;i++)
       for (j=1;j<=numar;j++)
           if (TablaDeJoc[i][j]==2)
              scor++;
   setcolor(BLUE); itoa(scor,sirScor,10);
   outtextxy(200,50,sirScor);
}

void punerePiesa()
{
   int linia,coloana,x,y;
   int x1, y1, x2, y2;
   int xmijloc, ymijloc;

   if(ismouseclick(WM_LBUTTONDOWN))
     {
       clearmouseclick(WM_LBUTTONDOWN);
       x=mousex(); y=mousey();
       if (!(x>=stanga && x<=stanga+width && y>=sus&&y<=sus+height))
          gata=true;
       else
          {
            linia=(y-sus)/latura+1;
            coloana=(x-stanga)/latura+1;
            if (TablaDeJoc[linia][coloana]==0)
               {
                 TablaDeJoc[linia][coloana]=1;
                 // stergere
                 setcolor(FUNDAL); setfillstyle(SOLID_FILL,FUNDAL);
                 x1=stanga+latura*(coloana-1); y1=sus+latura*(linia-1);
                 x2=x1+latura; y2=y1+latura;
                 xmijloc=(x1+x2)/2; ymijloc=(y1+y2)/2;
                 bar(xmijloc-20,ymijloc-20,xmijloc+20,ymijloc+20);
                 // afisez cerc rosu aprins
                 setcolor(LIGHTRED); setfillstyle(SOLID_FILL,LIGHTRED);
                 fillellipse(xmijloc,ymijloc,18,18);
               }
            else
            if (TablaDeJoc[linia][coloana]==1)
               {
                 TablaDeJoc[linia][coloana]=2;
                 setcolor(FUNDAL); setfillstyle(SOLID_FILL,FUNDAL);
                 x1=stanga+latura*(coloana-1); y1=sus+latura*(linia-1);
                 x2=x1+latura; y2=y1+latura;
                 xmijloc=(x1+x2)/2; ymijloc=(y1+y2)/2;
                 bar(xmijloc-20,ymijloc-20,xmijloc+20,ymijloc+20);
                 // afisez un patrat galben
                 setcolor(LIGHTRED); setfillstyle(SOLID_FILL,YELLOW);
                 bar(xmijloc-20,ymijloc-20,xmijloc+20,ymijloc+20);
               }
            else // 2-> 0
            {
                 TablaDeJoc[linia][coloana]=0;
                 setcolor(FUNDAL); setfillstyle(SOLID_FILL,FUNDAL);
                 x1=stanga+latura*(coloana-1); y1=sus+latura*(linia-1);
                 x2=x1+latura; y2=y1+latura;
                 xmijloc=(x1+x2)/2; ymijloc=(y1+y2)/2;
                 bar(xmijloc-20,ymijloc-20,xmijloc+20,ymijloc+20);
            }
            afiseazaScor();
        }
    }
}

void desen()
{
   int i,j; numar=5;
   width=400; height=400; latura=width/numar;
   sus=(getmaxy()-width)/2; stanga=(getmaxx()-height)/2;
   setbkcolor(FUNDAL); clearviewport(); setcolor(BLUE);
   for(i=1; i<=numar; i++)
       for(j=1; j<=numar; j++)
          rectangle(stanga+latura*(i-1),
                    sus+latura*(j-1),stanga+latura*i,sus+latura*j);
}

int main()
{
   initwindow(800,600);
   scor=0; desen(); afiseazaScor();
   gata=false;
   do
   {
      punerePiesa();
   }
   while (!gata);
   getch();
   closegraph();
   return 0;
}

 

Instalarea bibliotecii grafice WinBGIm

Biblioteca grafică WinBGIm se poate descărca de aici:

winbgim.zip

Atenție: pe web găsiți alte variante ale acestei arhive, dar nefuncționale.

Dupa ce descarcati și scoateți fișierele din această arhivă, veți face următoarele lucruri:

  1. Extrageti fisierele graphics.hwinmgim.h si libbgi.a din arhiva winbgim.zip.
  2. Copiati fisierele graphics.h si winbgim.h in folderul include din compilatorul MinGW, care se gaseste, cel mai probabil, aici: c:\Program Files\CodeBlocks\MinGW\include\
  3. Copiati fisierul libbgi.a in folderul lib al directorului compilatorului MinGW, care se gaseste, cel mai probabil, aici: c:\Program Files\CodeBlocks\MinGW\lib\
  4. In Code::Blocks accesati Settings >> Compiler… >> linker settings
  5. Faceti click pe butonul Add in partea Link libraries, apoi rasfoiti si selectati fisierul libbgi.a
  6. In partea dreapta (adica la Other linker options) scrieti urmatoarele comenzi:
    -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
  7. Faceti click pe OK.

Descrierea funcțiilor grafice se găsește aici:

http://www.cs.colorado.edu/~main/cs1300/doc/bgi/bgi.html

Un exemplu de program de test pentru grafica este aici:

#include <iostream>
#include <graphics.h>
#include <winbgim.h>

int main()
{

  initwindow(800,600);

  int x = 400, y = 300, r; 
  for (r = 25; r <= 125; r += 20)
      circle(x, y, r);

  getch();
  closegraph();
  return 0;
}

Dacă acesta functionează, puteți continua să folosiți orice funcție grafică și de lucru cu mouse-ul din biblioteca WinBGIm.

Succes!

Instalare corectă Code::Blocks

Bună!

Azi la grupa B3 am observat că mai mulți elevi nu aveau instalat bine pe propriul laptop Code::Blocks. Motiv pentru care a fost destul de greu sau chiar imposibil ca să lucrăm cu biblioteca grafică WinBGIm.

Ca totul să fie OK, iată ce să faceți:

  1. Dezinstalați (din Control Panel) CodeBlocks-ul actual, chiar și compilatorul MinGW asociat.
  2. Accesați site-ul ORIGINAL al lui CodeBlocks, la secțiunea Downloads-> Binaries, mai exact mergeți la acest link: http://www.codeblocks.org/downloads/binaries
  3. Accesați exact linkul de la Sourceforge.net, cel indicat cu roșu în figura de mai jos (pentru sistemul de operare Windows)
  4. Acest link vă trimite spre un site, numit Sourceforge.net, de unde se va descărca automat Codeblocks împreună cu compilatorul pentru limbajul C/C++ numit MinGW.
  5. Așteptați câteva secunde, conform indicațiilor din imaginea următoarea…
  6. iar la final, după descărcarea kitului (programul de instalare) lui CodeBlocks+MinGW, salvați-l pe Desktop, de pildă, pentru a putea să accesați kitul de instalare
  7. În timpul instalării, veți fi întrebat(ă) unde să instalați, adică unde va fi calea către mediul vostru de dezvoltare Codeblocks.
  8. Alegeți calea propusă, care va fi de forma:
    C:\Program Files (x86)\CodeBlocks sau C:\Program Files\CodeBlocks

După ce ați rezolvat acest lucru, încercați un proiect simplu, de tip ”Hello World!”, ca să vedeți că funcționează totul corect.

Pentru a executa programe grafice, urmași pașii din postarea următoare:

Click aici pentru a afla despre biblioteca grafică WinBGIm.