Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
#ifndef TILEMAP_HPP #define TILEMAP_HPP #define _USE_MATH_DEFINES #include <SFML\Graphics.hpp> #include <iostream> #include <fstream> #include <cmath> #include <vector> #include "ConvertString.hpp" class Tilemap : public sf::Drawable, public sf::Transformable { public: struct rectangle { sf::Vector2f vertex[4]; }; Tilemap (){} bool load(const std::string& tileset, sf::Vector2u tileSize, std::vector<int> tiles, unsigned int width, unsigned int height); bool load(const std::string& tileset, sf::Vector2u tileSize, std::string filePath); bool refresh (std::vector<int> tiles); bool refresh (int tileNumber, int x, int y); bool CheckCollision (sf::Sprite *Sprite); bool CheckCollision (sf::Sprite *Sprite, int x, int y); bool CheckCollision (sf::Sprite *Sprite, int tileNumber); bool CheckCollision (sf::Sprite *Sprite, int tileNumber, sf::Vector2f AlternateHitboxSize, sf::Vector2f Offset); bool CheckCollision (float x, float y, int width, int height); bool CheckCollision (float x, float y, int width, int height, int xTile, int yTile); bool CheckCollision (float x, float y, int width, int height, int tileNumber); const unsigned int GetWidth () {return m_width;}; const unsigned int GetHeight () {return m_height;}; const sf::Vector2u GetTileSize () {return m_tileSize;}; private: virtual void draw (sf::RenderTarget& target, sf::RenderStates states) const { // apply the transform states.transform *= getTransform(); // apply the tileset texture states.texture = &m_tileset; // draw the vertex array target.draw(m_vertices, states); } void normalize (sf::Vector2f& vector) { const float length = sqrt(vector.x * vector.x + vector.y * vector.y); if(length==0) return; vector.x = vector.x / length; vector.y = vector.y / length; } float dot(sf::Vector2f& vector1, sf::Vector2f& vector2) { return vector1.x*vector2.x + vector1.y*vector2.y; } void project(sf::Vector2f& axis, rectangle* _rectangle, float &min, float &max) { float _dot = dot(axis, _rectangle->vertex[0]); min=_dot; max=_dot; for(short i=1; i<4; i++) { _dot = dot(_rectangle->vertex[i], axis); if(_dot<min) min=_dot; else if(_dot>max) max=_dot; } } float distance(float minA, float maxA, float minB, float maxB) // Positive return = no hit { if(minB > maxA) return minB-maxA; else return minA-maxB; } bool CheckCollision (rectangle *one, rectangle *two); sf::VertexArray m_vertices; sf::Texture m_tileset; sf::Vector2u m_tileSize; unsigned int m_width, m_height; std::vector<int> m_tiles; }; #endif |
C-/C++-Quelltext |
|
1 2 |
/* Keep the compiler happy */ return(0); |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
C-/C++-Quelltext |
|
1 2 |
/* Keep the compiler happy */ return(0); |
Alter Hase
Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Ich habe früher immer BMP verwendet doch mittlerweile verwende ich in der Regel PNG (diese Datei entstand aus einer alten Datei die noch das BMP-Format benutzte).Überigens, wer in aller Welt verwendet immer noch BMP Dateien? Schon mal was von PNG gehört?
C-/C++-Quelltext |
|
1 2 |
/* Keep the compiler happy */ return(0); |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Werbeanzeige