Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SFML/Graphics.hpp>
- #include <iostream>
- #include <fstream>
- #include <string>
- #define win_width 640
- #define win_height 640
- using namespace sf;
- using namespace std;
- int main()
- {
- RenderWindow window(VideoMode(win_width, win_height), "SFML works!");
- float rect1_pos_x = 0, rect1_pos_y = 0;
- int rect1_width = 20, rect1_height = 140, rect2_width = 50, rect2_height = 50;
- float prev_pos_y = 0;
- float gravity_force = 0.2;
- float movementSpeed;
- bool onFloor = true;
- View view1;
- view1.setSize(win_width, win_height);
- Texture niebo_tex;
- Texture pagorek_tex;
- Texture trawa_tex;
- if(!niebo_tex.loadFromFile("niebo.png")) {
- cout << "niebo.png loading error\n";
- }
- if(!pagorek_tex.loadFromFile("pagorek.png")) {
- cout << "pagorek.png loading error\n";
- }
- if(!trawa_tex.loadFromFile("trawa.png")) {
- cout << "ziemia.png loading error\n";
- }
- string line;
- ifstream level1;
- level1.open("level1.txt", ios::in);
- int trawa_count = 30;
- float trawa_pos_x[trawa_count], trawa_pos_y[trawa_count];
- int i = 0;
- if(level1.is_open()) {
- float y = 0;
- while(getline(level1, line)) {
- for(int x = 0; x < line.length(); x++) {
- if(line[x] == 'd') {
- trawa_pos_x[i] = 64 * x;
- trawa_pos_y[i] = 64 * y;
- i++;
- }
- }
- y++;
- }
- }
- else {
- cout << "Unable to load level1.txt/n";
- }
- Sprite niebo;
- Sprite pagorek;
- Sprite trawa;
- niebo.setTexture(niebo_tex);
- pagorek.setTexture(pagorek_tex);
- trawa.setTexture(trawa_tex);
- RectangleShape rect1(Vector2f(rect1_width, rect1_height));
- RectangleShape rect2(Vector2f(rect2_width, rect2_height));
- while(window.isOpen()) {
- Event event;
- while(window.pollEvent(event)) {
- switch(event.type) {
- case Event::Closed:
- window.close();
- break;
- case Event::KeyPressed:
- break;
- default:
- break;
- }
- }
- rect1_pos_y += gravity_force;
- for(int x = 0; x < trawa_count; x++) {
- if(rect1_pos_x < trawa_pos_x[x] + 64 && rect1_pos_x + rect1_width > trawa_pos_x[x] && rect1_pos_y + rect1_height > trawa_pos_y[x] && rect1_pos_y < trawa_pos_y[x] + 64) {
- onFloor = true;
- rect1_pos_y -= gravity_force;
- }
- else {
- onFloor = false;
- }
- if(rect1_pos_y < trawa_pos_y[x] + 64 && rect1_pos_y + rect1_height > trawa_pos_y[x] && rect1_pos_x < trawa_pos_x[x] + 64 && rect1_pos_x + rect1_width > trawa_pos_x[x]) {
- rect1_pos_x += movementSpeed;
- }
- if(rect1_pos_y < trawa_pos_y[x] + 64 && rect1_pos_y + rect1_height > trawa_pos_y[x] && rect1_pos_x + rect1_width > trawa_pos_x[x] - 0.5 && rect1_pos_x + rect1_width < trawa_pos_x[x] + 64) {
- rect1_pos_x -= movementSpeed;
- }
- }
- if(Keyboard::isKeyPressed(Keyboard::D)) {
- rect1_pos_x += movementSpeed;
- }
- if(Keyboard::isKeyPressed(Keyboard::A)) {
- rect1_pos_x -= movementSpeed;
- }
- if(Keyboard::isKeyPressed(Keyboard::S)) {
- }
- if(Keyboard::isKeyPressed(Keyboard::W)) {
- if(onFloor == true) {
- prev_pos_y = rect1_pos_y;
- }
- if(rect1_pos_y < prev_pos_y + 30) {
- rect1_pos_y -= 0.3;
- }
- cout << onFloor << endl;
- }
- if(Keyboard::isKeyPressed(Keyboard::LShift)) {
- movementSpeed = 0.2;
- }
- else {
- movementSpeed = 0.1;
- }
- view1.setCenter(rect1_pos_x, 320);
- window.clear(Color::Black);
- window.setView(view1);
- niebo.setPosition(rect1_pos_x - win_width/2, 0);
- window.draw(niebo);
- for(int x = -1; x < 2; x++) {
- pagorek.setPosition(rect1_pos_x * 0.6 + 640 * x, 0);
- window.draw(pagorek);
- continue;
- }
- for(int x = 0; x < trawa_count; x++) {
- trawa.setPosition(trawa_pos_x[x],trawa_pos_y[x]);
- window.draw(trawa);
- }
- rect1.setPosition(rect1_pos_x, rect1_pos_y);
- window.draw(rect1);
- window.display();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment