Du bist nicht angemeldet.

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

11

24.02.2013, 21:44

naja ich kanns mir nicht so vorstellen mit dem vektor imoment, der ist schwerer zu benutzen als ein normales array.
ich möchte ja das die map mit einer for schleife durchlaufen wird.

ich brauche eignt ja nur sozusagen spalten und zeilen ^^ wobei ich beim vektor keine ahnung davon habe

beim array würde das ca so funktionieren
Karte={ {0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}
};

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

12

24.02.2013, 21:53

Schau mal auf meinen Post zuvor, hatte da die Lösung mit dem Vektor hinzugefügt. Du kannst dir den Vektor wie ein Array Vorstellen, nur eben das er die Größe verändern kann. Du kannst per [#] drauf zugreifen (per at() Methode auch nicht versehentlich über die Grenzen hinweg, at()wirft eine Exception) .

Da der operator[] auch beim Bitset überladen ist kannst du auf die dann per [#][#] auf jedes Bit zugreifen und abfragen.
:love: := Go;

13

24.02.2013, 22:01

ich schaue es mir morgen mal genau an :)

danke dir schonmal, muss damit mal ein wenig rumexperimentieren^^

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

14

24.02.2013, 22:29

Ok, du wirst aber sehen, dass die C++ Variante mit std::array/std::vector viel praktischer mit einer For-Schleife zusammen arbeitet als ein c array (Welches du benutzt).

Um es mal etwas platt zu sagen, im Gegensatz zu einem c array wissen die C++ Varianten etwas mehr über sich selbst. Z.B. können sie selbst sagen wie viele Elemente sie beinhalten. Und eben dies können sie der For-Schleife „mitteilen“, und man kann die sog. „Range-based for-Schleife” benutzen.

Ich will jetzt mal nicht auf die Details eingehen jedoch ist es so möglich ohne irgendwelche eigenen Angaben über Größe und die Schreitweite über alle Elemente zu „iterieren“ (wandern).

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using std::bitset;
using std::vector;

// Oder per moveconstructor (kein Kopieren)
vector<bitset<10>> bsv(4);
bsv[0] = bitset<10>("0000000001");
bsv[1] = bitset<10>("0000000010");
bsv[2] = bitset<10>("0000000011");
bsv[3] = bitset<10>("0000000100");

for ( auto bs : bsv ) // Bedeutet so viel wie "Für jedes bitset (bs) im vector (bsv)
{ // Mache dies: 
   if ( bs[2] ) // das folgende wird ausgeführt bei jedem Element im Vetor bei dem das 3. Bit im Bitset gesetzt wurde. 
   {
      // Hier steht also ein Baum? 
      std::cout << "Wumms, du bist gegen einen Baum gelaufen." << std::endl;
   }
}
:love: := Go;

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

15

25.02.2013, 07:18

Hat schon mal jemand angemerkt, dass ein Bitset womöglich keine so gute Idee ist, weil man dort eben nur 2 verschiedene Zustände kennt? In einem Tile-based-Game will man üblicherweise ja doch sehr sehr viele verschiedene Tiles haben. Beim Foren-Projekt Rickety Racquet haben wir deswegen (und weil man non-alphanumerische Zeichen so schlecht lesen oder sich merken kann) sogar auf 2 Bytes pro Tile erweitert.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

16

25.02.2013, 12:31

Hmm, jetzt wenn ich das nochmal lese hast du natürlich Recht, ich hatte ihn erst so verstanden, dass er es nur für Kollisionen nimmt. Ob man an der Stelle durch gehen kann oder eben nicht.
:love: := Go;

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

17

25.02.2013, 14:43

Und damit denke ich, meint er wohl "da ist Wand". Ob er die Bilder dazu selbst zuweisen will oder eh alle die gleichen sind, das weiß ich nicht. Empfehlen würde ich so ein Bit-Konstrukt aber nur bedingt.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

18

25.02.2013, 18:36

Ich frage mich halt wie derjenige das im video mit der Map gemacht hat, sieht mir nicht nach Tiles aus oder doch?

http://www.youtube.com/watch?v=0w30dP9qbao

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

19

25.02.2013, 20:03

Das hier ist ein Tutorial für Macromedia Flash, aber ich denke man kann die Prinzipien auch so verstehen.

Tile based games
:love: := Go;

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

20

25.02.2013, 20:30

Ich frage mich halt wie derjenige das im video mit der Map gemacht hat, sieht mir nicht nach Tiles aus oder doch?

http://www.youtube.com/watch?v=0w30dP9qbao

Und ob das nach Tiles aussieht.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige