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

1

22.10.2014, 16:52

Frage zu kleinem SFMl Spiel

Hallo Community,

Ich schreibe mit C++ und SFML gerade ein kleines Spiel und hätte dazu eine Frage:

Zum einen gibt es, ähnlich wie bei Pokemon oder einigen Strategiespielen ein Raster System. Die Spielwelt besteht also aus vielen Sprites in einem zweidemensionalen Array. Desweiteren wird für jedes Sprite eine bestimmte Texture geladen, je nachdem welcher Gelände Typ das Feld ist ( z.b. Grass, Wasser, ...). Das alles ist in einer cpp Datei. In einer anderen cpp Datei wird der Spieler selbst definiert, und es beinhaltet die Funktionen welche zur Fortbewegung dienen. Meine Frage: Wie kann meine Spielerklasse nun erkennen ob ein Geländefeld zugänglich ist oder nicht zugänglich ( wie z.B. bei Wasser ). Ich dachte das ich die Unzugänglichen Sprites in eine std::list schreibe und diese von der Player - Klasse auslesen lasse, dadurch bekamm ich aber ständig zugriffsverletzungen. Kennt jemand einen Besseren Weg?

Schon mal Danke im Voraus

2

22.10.2014, 17:21

Also erstmal ist von std::list abzuraten, verwende stattdessen lieber std::vector. Warum?

Zum eigentlichen Problem:
Ich weiß jetzt natürlich nicht, wie du dein Tile System aufgebaut hast, aber ich geh mal davon aus, dass du eine Tile Basisklasse hast. In dem Fall könntest du dem Tile einfach eine Variable geben, die angibt, ob es begehbar ist oder nicht. Ein einfacher boolean reicht da aus.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

22.10.2014, 17:30

dadurch bekamm ich aber ständig zugriffsverletzungen
Da hast Du wohl grob was falsch gemacht. Das kann man nämlich schon so machen.
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]

4

22.10.2014, 17:31

Bei Pokemon ists kein boolean sondern eher ein Zahlwert, weils ja auch Wasser und irgendwelche VM-Wege gibt.

MfG
Check

5

22.10.2014, 17:36

Also erst mal finde ich die Idee mit bool ganz gut, Wasser soll bei mir nicht komplett begehbar sein. Allerding habe ich wie gesagt einen Raster mit sehr vielen Sprites nebeneinander ( nämlich 50 mal 50). Ist es nicht ein wenig umständlich jedem einzelnen ein Bool zuzuordnen?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

22.10.2014, 17:42

Nö. Jedes Sprite hat schließlich nur einen. Und das tollste ist, die "Begehbarkeitsmap" lässt sich sogar anhand der von Dir verteilten Sprite-Map "errechnen".
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]

7

22.10.2014, 21:00

Und wie genau?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

23.10.2014, 06:41

Na wenn Du schon weißt, dass Wasser nicht begehbar ist, Rasen aber schon, dann ist das eine ein false und das andere ein true.
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]

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

9

23.10.2014, 21:51

Ich gehe davon aus, dass du sowas wie eine Tile-Klasse oder ein Struct hast. Wenn nicht solltest du das jetzt nachholen. Dort kannst du sowas dann ganz easy einbauen.
WIP Website: kevinheese.de

10

24.10.2014, 08:51

hmm so schwierig dürfte das garnicht sein. angenommen deine Map ist 3x3 tiles groß.
1. Map für die Grafische Darstellung: (0 = grass, 1 = erde, 2 = felsen, der im weg steht [wo man nicht durchgehen sollte])
222
211
212
so hätten wir ja schonmal eine map, wo ein weg aus erde durch eine felslandschaft führt :D zumindest mit ein wenig fantasie^^
2. begehbarkeitsmap
die können wir ja jetzt ganz einfach berechnen, dort wo grass und erde ist soll es begehbar sein, dort wo felsen ist soll es nicht begehbar sein.
Daraus lässt sich dann folgende Map bilden (o = begehbar, x =unbegehbar)
xxx
xoo
xox

Umsetzen könntest du das alles z.B. mit zwei 2D-Arrays (eins aus integer für die sprites, eins aus boolean für begehbarkeit).
Jetzt kannst du ja anhand der Position des spielers und der begehbarkeitsmap rausfinden, ob das tile begehbar ist, oder nicht :D

Werbeanzeige