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

xxendlessxx

Treue Seele

  • »xxendlessxx« ist der Autor dieses Themas

Beiträge: 230

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

1

30.12.2009, 19:26

Grunddesign eines Jump and Run Spiels

Nabend Leute,
ich hab irgendwie ein riesen Chaos in meinem Spiel. Ich mach mir sau viele Gedanken und versuch zu planen wie ich alles programmieren soll. Aber während dem Programmieren merk ich das das so nicht geht, und immer mehr Chaos entsteht. Bis ich mir dann irgendwann das Bein brechen muss um an irgendwelche Variablen zu kommen.

Gibt es nicht eine einfache Grundstruktur für ein Jump and Run? Welche Klassen drin sein müssen und wie diese zusammenhängen sollten. Wo

Immoment sieht es bei mir so aus.

Object
Ich hab eine Klasse "Object" darin ist das Bild/Sprite, und dem zur folge auch die Maße und Position.

Player
Wird von Object abgeleitet. Es gibt eine Funktion WalkLeft und WalkRight. Die das Bild um 5 Pixel verschieben und die Stop Funktion.

Objectmanager
Enthält die ganzen Objekte die es in einem Level gibt, also Spieler, Kisten, Boden etc.

Nun kommt mein Problem das ich nicht weiß wie ich alles von einander trennen soll. Folgendes Beispiel: Ich hab immoment 2 GameStates (Menü und Stage), beide besitzen jeweils folgende Funktionen: Init, ManageEvents, UpdateLogic, Render, Terminate.

Die Update Funktion sieht wie folgt aus:

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
void GameStateStage::UpdateLogic(cGame &Game)
{
    if (Game.GetWindowHandler().GetInput().IsKeyDown(sf::Key::Left))
    {
        Game.GetPlayer()->WalkLeft();
    }
    else if(Game.GetWindowHandler().GetInput().IsKeyDown(sf::Key::Right))
    {
        Game.GetPlayer()->WalkRight();
    }
    if (Game.GetWindowHandler().GetInput().IsKeyDown(sf::Key::Up))
    {
        Game.GetPlayer()->Jump();
    }
    if( !Game.GetWindowHandler().GetInput().IsKeyDown(sf::Key::Right)&&
        !Game.GetWindowHandler().GetInput().IsKeyDown(sf::Key::Left)&&
        !Game.GetWindowHandler().GetInput().IsKeyDown(sf::Key::Up)&&
        !Game.GetWindowHandler().GetInput().IsKeyDown(sf::Key::Down))
    {
        Game.GetPlayer()->Stop();
    }
}


Ich find das alles total umständlich irgendwie. Wenn ich mir nun vorstelle das noch bald ein Level hinzukommt mit einer Menge stellen an denen Kollisionen auftreten, wüsste ich nicht wie und vorallem WO ich das alles abfragen soll.

Hoffe mir kann jemand helfen.
Gruß michi

2

30.12.2009, 19:35

hmm hast du das spiel von kalistas buch schon gemacht? ich glaube soviel ist da nichtmehr dran zu machen.
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

xxendlessxx

Treue Seele

  • »xxendlessxx« ist der Autor dieses Themas

Beiträge: 230

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

3

30.12.2009, 19:37

In welchem Buch war das?

4

31.12.2009, 09:26

In "C++ für Spieleprogrammierer"

Werbeanzeige