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

Rion

Frischling

  • »Rion« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Trier

Beruf: Komponist, Medienassistent

  • Private Nachricht senden

1

31.07.2010, 22:00

Liste in SFML ausgeben

Hallo,

ich arbeite an einem RPG (mit SFML) und da habe ich bereits die grundlegenden Elemente fertig (Menüs, Level, Klassen usw.). Jetzt wollte ich die Items, die man besitzt, im Spielmenü auflisten. Grob dachte ich mir, dass man die Item-Liste erstmal durchgeht und bei jedem Schleifendurchgang eine neue String-Instanz erzeugt, die ein Array als Namen hat, also Item[0], Item[1], Item[2] usw.

In SFML also:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
float Item_X = 300;     //X-Position des Item-Strings
float Item_Y = 250;     //Y-Position des Item-Strings
int Array_Indiz = 0;        //Array-Indiz für Items auf 0 setzen
int Item[99];           //Item-Variable für 100 Items deklarieren

//Item-Liste durchgehen
for (i = ListItems.begin(); i != ListItems.end(); i++)
{
    //Item-Instanz erzeugen
    sf::String Item[Array_Indiz];

    //String-Eigenschaften definieren
    Item[Array_Indiz].SetText (CItems::i_Name);
    Item[Array_Indiz].SetY (Item_X);
    Item[Array_Indiz].SetY (Item_Y += 30);

    //Array-Indiz um 1 erhöhen, damit nächstes String für nächstes Item erzeugt werden kann
    Array_Indiz++;
}


Hier erhalte ich folgende Fehlermeldungen:

Quellcode

1
2
3
4
Line 10: error C2057: Konstanter Ausdruck erwartet
Line 10: error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich
Line 10: error C2133: 'Item': Unbekannte Größe
Line 13: error C2597: Ungültiger Verweis auf nicht-statischen Member 'CItems::i_Name'


Die Idee war, dass man hier also so viele String-Instanzen erzeugt, wie man Items besitzt. Jeder String kann man nun formatieren und erhöht bei jedem Schleifendurchgang einfach die Y-Position. Somit erhält man eine Auflistung der Items.

Das ist jetzt nur ein grober Gedanke, wie man es machen könnte.

Gibt es dafür eine einfachere Lösung, Listen in SFML auszugeben?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

31.07.2010, 22:11

da fehlen grundlagen oO.
ich hoffe das soll ein rundebasierendes rpg werden, sonst wirst du auf noch viel viel größere probleme stoßen.

C-/C++-Quelltext

1
int Item[99];           //Item-Variable für 100 Items deklarieren

da passen aber nur 99 rein. das kommt mir übrigens bekannt vor. hast du c++ mit nem tutorial gelernt?

C-/C++-Quelltext

1
 sf::String Item[Array_Indiz];

die arraygröße muss bekannt sein. dynamische arrays muss man mit new allokieren oder std::vector(oder ähnliches) benutzen.

wo sind deine items denn gespeichert? wenn keine existieren gibts auch keine auszugeben.

eine liste muss man auch scrollen können. theoretisch kannst du dir dafür ne klasse schreiben, vllt gibts auch schon was fertiges(dafür mussu deine suchmaschine bemühen, such sfml gui oder so). so wie es für mich aussieht ist das aber noch ein bisschen zu schwer für dich.
rpgs gehören zu den schwierigsten genres.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Rion

Frischling

  • »Rion« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Trier

Beruf: Komponist, Medienassistent

  • Private Nachricht senden

3

31.07.2010, 22:15

Die Items sind in der Klasse CItems gespeichert bzw. in der Liste "ListItems". Die gebe ich ja mit der for-Schleife aus.

Mal abgesehen von den flüchtigen Fehlern (war nur eine grobe Idee), wie würde man das in der Praxis allgemein machen, wenn man Listeninhalte in SFML ausgeben will? Ist denn meine Lösung der richtige Weg?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

4

31.07.2010, 22:22

habs oben bissl editiert.

so wie du dir das denkst würde es dir bei vielen items einfach den rahmen sprengen. wenn das wirklich nur flüchtigkeitsfehler waren(wonach es eindeutig nicht aussieht, hast ja sogar kommentiert) kannst du ne klasse schreiben der du strings übergibst und dir bei einem klick den einen verweiß aufs richtige element zurück gibt. sei kreativ, es wird nicht lange die größte herausforderung bleiben.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Rion

Frischling

  • »Rion« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Trier

Beruf: Komponist, Medienassistent

  • Private Nachricht senden

5

31.07.2010, 22:32

Wusste nicht, dass RPGs zu den schwierigsten Themen der Spieleprogrammierung gehören. Da ich aber selbst gerne Final Fantasy spiele, wollte ich halt einfach mal sowas anfangen zu programmieren.
Die Menünavigation (SFML-Tutorial bezüglich Szenen) und Bewegung des Sprites auf der Karte funktionierten aber schonmal :)

Okay, da ich noch C++-Anfänger bin, werde ich wohl mit einfacheren Spielen beginnen müssen und mich dann später nochmal an größere Projekte wagen. Danke noch für deine Tipps ;)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

31.07.2010, 22:50

gute einstellung^^
ne gute reihenfolge ist pong oder ein spiel bei dem mal kreise mit der maus abschießen muss -> snake -> tetris -> ein etwas komplexeres shoot'em up/jump&run und/oder ein bejeweled remake(schreib ich gerade und es ist nicht so einfach wie es aussieht xD).
dann bist du vielleicht bereit ein einfaches rpg zu schreiben.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Union_Freedom

Treue Seele

Beiträge: 156

Wohnort: Nähe Hannover

Beruf: Student

  • Private Nachricht senden

7

03.08.2010, 16:29

Hallo.
Da würde ich nicht ganz zustimmen. Probieren geht über studieren! Wenn du versuchst, jetzt auch wenn du wenig Erfahrung hast, ein RPG zu schreiben, wirst du vermutlich scheitern, aber hey was solls, du hast es versucht. Zudem lernt man eine Menge aus seinen Fehlern. Pong..immer wird pong angeprochen, aber was ich teils schon gesehen hab, einfaches kopieren aus irgendwelchen tutorials und dann nur die Grafikdateien austauschen, das bringts auch nicht wirklich.

Das RPG weiterzumachen wäre zwar evlt in manchen Augen "Zeitverschwendung", weil nichts produktives vermutlich entstehen wird, aber dafür hat man eine Menge dazugelernt. Und das ist wohl das wichtigste :)

Also halte dein RPG am besten in einem "möglichen" Rahmen und versuch dein bestes ;)

mfg
Union_Freedom
Coder bei: http://crushing-gods.de/ (Folgt uns)
Erste Eindrücke zu Crushing Gods Link

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

03.08.2010, 16:33

Pong..immer wird pong angeprochen, aber was ich teils schon gesehen hab, einfaches kopieren aus irgendwelchen tutorials und dann nur die Grafikdateien austauschen, das bringts auch nicht wirklich.


dann ist derjenige selbst schuld. da kann er auch nen opensource rpg suchen und das kopieren^^
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

9

03.08.2010, 17:20

Also halte dein RPG am besten in einem "möglichen" Rahmen (...)
Als Einsteiger ist der Bereich des Möglichen allerdings sehr eingeschränkt und gleichzeitig meist die Frustationsgefahr sehr hoch! Kleine Erfolge (von mir aus Pong oder was weiß ich) helfen und motivieren da schon...

Gruß
SaRu_

Werbeanzeige