“IN EVERY DIRECTION,
VECTORS LEAD THE WAY”
Fătu Emilia Elena, 10 N1, CNMV Ploiesti
VECTORII IN APLICATII INFORMATICE
• Vectorii sunt utilizați pe scară largă în aplicațiile informatice din lumea reală,
inclusiv în dezvoltarea de jocuri (pentru gestionarea obiectelor de joc),
modelarea financiară (pentru stocarea seriilor temporale de lungime variabilă),
procesarea datelor (pentru gestionarea seturilor de date de dimensiuni
necunoscute) și programarea competitivă (datorită ușurinței în utilizare și
naturii dinamice).
• Un vector este o listă dinamică de elemente care se pot micșora și crește în
dimensiune. Poate stoca doar valori de același tip de date. Gestionarea
memoriei este realizată intern, iar elementele pot fi adăugate sau eliminate
eficient.
VECTORI IN C++
VECTORI IN C++
VECTORI IN C++
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers;
numbers.push_back(10);
numbers.push_back(20);
numbers.push_back(30);
std::cout << "Elements in the vector: ";
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
std::cout << "First element (index): " << numbers[0] << std::endl;
std::cout << "Second element (at): " << [Link](1) << std::endl;
numbers[2] = 100;
std::cout << "Modified third element: " << numbers[2] << std::endl;
numbers.pop_back();
std::cout << "Vector after pop_back: ";
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
std::cout << "Size: " << [Link]() << std::endl;
std::cout << "Capacity: " << [Link]() << std::endl;
return 0;
}
AVANTAJE SI DEZAVANTAJE
Avantajele vectorilor C++ Dezavantaje ale vectorilor
• Natura sa este dinamică. C++
• Este simplu să inserați și să • Utilizarea memoriei a crescut.
eliminați elemente.
• Este posibil să depozitați mai multe • Nu există niciun index pentru
articole. acesta.
• Vectorii pot fi ușor copiați unul în • Memoria RAM adiacentă nu
altul utilizând operatorul de
este utilizată.
atribuire.
MY SLIDING PUZZLE GAME WITH A REAL
IMAGE
🧩 Image Puzzle Game:
• Load an image (e.g. .png or .jpg)
📦 Must Have:
• Cut it into tiles (e.g. 4x4 grid) • C++ compiler
• Shuffle them (leaving one empty space) • SFML installed on the device
• Player clicks or uses keys to slide tiles
• Objective: restore the original image
✅ Project Overview
🔧 Tools & Library
• Load an image
• To create a 2D image-based puzzle in C++, we need
a graphics library. • Divide it into tiles
• ✅ Strong recommendation of using SFML (Simple and • Shuffle the tiles (with one blank tile)
Fast Multimedia Library): • Draw the puzzle grid on the window
• Easy to use • Handle tile movement with mouse or keyboard
• Supports image loading, rendering, keyboard & mouse
input
• Check for puzzle completion
MY SLIDING PUZZLE GAME WITH A REAL
IMAGE
🚀 CODE (SFML + IMAGE PUZZLE)
#INCLUDE if (i == SIZE * SIZE - 1) { // Shuffle tiles (basic shuffle) // Draw all tiles in their current
<SFML/[Link]> positions
INT MAIN() { tiles.push_back({sf::Sprite(), i, std::srand(unsigned(std::time(0))
#INCLUDE <VECTOR> true}); // Empty tile ); for (int i = 0; i < [Link](); ++i) {
SF::RENDERWINDOW
#INCLUDE <ALGORITHM> WINDOW(SF::VIDEOMODE(WIND continue; std::random_shuffle([Link](), int row = i / SIZE;
OW_SIZE, WINDOW_SIZE), [Link]());
#INCLUDE <CTIME> "IMAGE PUZZLE"); } int col = i % SIZE;
SF::TEXTURE TEXTURE; if (!tiles[i].isEmpty) {
while ([Link]()) {
CONST INT SIZE = 4; // 4X4 GRID sf::Sprite sprite(texture); tiles[i].[Link](col *
sf::Event event; TILE_SIZE, row * TILE_SIZE);
CONST INT TILE_SIZE = 100; IF (! int x = (i % SIZE) * TILE_SIZE;
[Link]("PUZZL while ([Link](event)) [Link](tiles[i].sprite);
CONST INT WINDOW_SIZE = SIZE E_IMAGE.JPG")) { int y = (i / SIZE) * TILE_SIZE; {
* TILE_SIZE; }
RETURN -1; [Link](sf::IntRect( if ([Link] ==
x, y, TILE_SIZE, TILE_SIZE)); sf::Event::Closed) }
}
STRUCT TILE { [Link](x, y); [Link]();
SF::SPRITE SPRITE; tiles.push_back({sprite, i, false}); // You can add keyboard or [Link]();
STD::VECTOR<TILE> TILES; mouse tile movement here
INT CORRECTPOS; } }
FOR (INT I = 0; I < SIZE * SIZE; ++I) }
BOOL ISEMPTY; {
[Link](sf::Color::Black);
}; return 0;
}
MULTUMESC!
Surse:
[Link]
[Link] Fătu Emilia Elena, 10 N1, CNMV Ploiesti