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

Anonymous

unregistriert

1

12.01.2009, 15:53

Problem mit Vektoren

Hi,

ich bin im Programmieren eines neuen Spiels "Cash-Cash". Nun ist es so, dass es 20 Minispiele geben. Diese 20 Spiele, werden per Zufall ausgewählt.
Nun ist das Problem so, dass ich will, dass jedes Spiel nur einmal aufgerufen werden darf, und ich habe keine Lust, ellenlange-if-Bedingungen zu schreiben. Wie könnte ich das am bessten Umgehen?
Man ganzer Code findet ihr hier

Anonymous

unregistriert

2

12.01.2009, 16:03

Keine Garantie! Bin gerade vor keinem Compiler, das ist alles Notepad

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
class game
{
public:
    bool is_done () const;
    bool play ();
};

class game_tetris :
    public game
{
};

class game_super_mario :
    public game
{
};


// [...]

std::vector<game*> games;
games.push_back (new game_tetris ());
games.push_back (new game_super_mario ());

for (; games.size (); )
{
    const int id = rand () % games.size ();
    game* current = games[id];
    
    while (!current->is_done ())
        current->play ();
        
    delete games[id]:
    games.remove (games[id]);
}

Anonymous

unregistriert

3

12.01.2009, 16:05

Zitat von »"unsigned long"«

Keine Garantie! Bin gerade vor keinem Compiler, das ist alles Notepad

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
class game
{
public:
    bool is_done () const;
    bool play ();
};

class game_tetris :
    public game
{
};

class game_super_mario :
    public game
{
};


// [...]

std::vector<game*> games;
games.push_back (new game_tetris ());
games.push_back (new game_super_mario ());

for (; games.size (); )
{
    const int id = rand () % games.size ();
    game* current = games[id];
    
    while (!current->is_done ())
        current->play ();
        
    delete games[id]:
    games.remove (games[id]);
}



O.O
Ehm...
..Schon gut, ich nehm die if-Bedingungen ^.^

Errschaffer

Alter Hase

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

4

12.01.2009, 16:05

Hmmm.
Ich hätte da was aber dazu müsstest du Klassen verweden.
Und ich würde da auch Listen verwenden. (gut Vektoren gehen auch).

Jetzt mal ein Beispiel mit Listen:

Du hast also deine Klassen zu den einzelnen Spielen. Dabei stellt jede Instanz ein Spiel da. Diese Instanzen schiebst du in eine Liste.

Das ermittelt du eine Zufallszahl und weist sie dem Iterator zu.
Ja und über den kann du das entsprechene element in der Liste aufrufen.

C-/C++-Quelltext

1
2
3
i=Zufallzahl;

(i*)->Spielefuntion


edit: zu langsam -.-

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

12.01.2009, 16:06

So, wie UL das macht hätte ich das auch gelöst.
Grundsätzlich hast du ein Objekt "Game",oder "Spiel", wo dann auch eine Variable drin ist, ob das Spiel schon gespielt wurde, oder nicht.

Anonymous

unregistriert

6

12.01.2009, 16:09

Luca
Warum if? Die Lösung ist doch viel eleganter und schöner?

Errschaffer

Alter Hase

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

7

12.01.2009, 16:09

@Luca diese Aussage: Ok dann lieber doch die If-bedigungen kannste gleich mal vergessen.
Versuch doch mal eine Lösung zu finden in dem du weniger Code benötigst wird aber trotzdem das gleiche Ergebniss erzielt wird.

Weil irgendwann biste an dem Punkta ngelangt da brauchste dann 40 IF Bedigungen. Und da hat dann auch keiner mehr Lust sich da durch zukämpfen.Außerdem geht das irgendwann auch auf die Rechenzeit.


edit: Schon wieder zu langsam -.-

8

12.01.2009, 16:23

Luca, wenn ich von Klassen und Pointer noch keine Ahnung hätte, dann würde ich mich nicht an ein Programm mit 20 Minispielen wagen. Lerne erstmal noch die Grundlagen, denn so wird das auf jedenfall scheitern. So schwer zu verstehen ist der Code von ul nämlich nicht...

Anonymous

unregistriert

9

12.01.2009, 16:26

Zitat von »"raXor"«

Luca, wenn ich von Klassen und Pointer noch keine Ahnung hätte, dann würde ich mich nicht an ein Programm mit 20 Minispielen wagen. Lerne erstmal noch die Grundlagen, denn so wird das auf jedenfall scheitern. So schwer zu verstehen ist der Code von ul nämlich nicht...


das progg is fast fertisch^^

Errschaffer

Alter Hase

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

10

12.01.2009, 16:31

Zitat von »"Luca"«

Zitat von »"raXor"«

Luca, wenn ich von Klassen und Pointer noch keine Ahnung hätte, dann würde ich mich nicht an ein Programm mit 20 Minispielen wagen. Lerne erstmal noch die Grundlagen, denn so wird das auf jedenfall scheitern. So schwer zu verstehen ist der Code von ul nämlich nicht...


das progg is fast fertisch^^


Ahja.Also bestehen deine "Mini-Spiele aus ca 5 Zeilen pro Spiel"?
Oder sind die auf andere Datein ausgelagert.?
Was verstehst du unter Mini-Spielen?

Werbeanzeige