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

11.02.2011, 09:38

Für sowas könnte man das Menusystem auch einfach mit einem Stack machen auf dem einfach immer wieder das aktuelle Menu draufgelegt wird.

Aber um mal wieder bisschen Flame reinzubringen, warum kein SFML? ;)
Hat aber glaub ich Probleme wenn man da was mit Schriften machen will das man dann nur die static libs nehmen kann? Kann auch sein das das schon behoben wurde.

Und NachoMan: Er hat gesagt alles außer Poposhop.

Nagamono

Frischling

  • »Nagamono« ist der Autor dieses Themas

Beiträge: 32

Wohnort: Düsseldorf

Beruf: Schüler

  • Private Nachricht senden

12

11.02.2011, 10:38

Und NachoMan: Er hat gesagt alles außer Poposhop.
Ich wollt nur kein Photoshop, weil ich dachte, dass es zu kompliziert sei^^ aber wenn er mir jetzt sagt, dass es garnicht so schwer ist, kann ich mir es ja auch mal angucken ;)

An die Anderen: Danke für eure Hilfe^^ Brauchte halt mal ein paar Ansätze, da ich halt grade erst das Buch durchhabe und halt ein totaler Anfänger bin :)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

13

11.02.2011, 10:49

Normalerweise ist die einzige Hürde bei Photoshop der Preis...

14

11.02.2011, 11:56

Als Student/Schueler ist es sogar sehr erschwinglich vom Preis her. Wobei ich da allerdings dann auch zur ganzen Master Suite tendieren wuerde und nicht nur Poposhop allein.

15

11.02.2011, 11:58

Als Student/Schueler ist es sogar sehr erschwinglich vom Preis her. Wobei ich da allerdings dann auch zur ganzen Master Suite tendieren wuerde und nicht nur Poposhop allein.


Warum eigentlich Poposhop? So wie Windoof? Aber ja, man bekommt 'ne Version ja schon ab 149€ und 'ne kommerziell nutzbare Variante für ein bisschen mehr.

16

11.02.2011, 12:01

Der Begriff Poposhop hat sich ueber die letzten Jahre bei mir und meinen Kollegen irgendwie so eingebuergert, das geht in Fleisch und Blut ueber ;)

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

17

11.02.2011, 12:08

Photoshop ist vor allem nicht viel komplizierter als bspw. Gimp. Aber Gimp kostet halt nichts :).
Also wenn ich wirklich professionelle Bildbearbeitung mache und bei anderen Programmen wirklich Features vermisse, die ich bei Photoshop habe, dann würde ich es mir vielleicht kaufen, aber solange ich einfach nur ein paar Grafiken für Spiele oder dergleichen machen will, brauche ich kein Geld ausgeben. Da reichen Gimp und Konsorten alle Mal.

Lares

1x Contest-Sieger

  • Private Nachricht senden

18

11.02.2011, 12:46


Aber um mal wieder bisschen Flame reinzubringen, warum kein SFML? ;)


Ich will SFML nicht schlecht reden, aber ich bin der Meinung, dass man sich, sobald man das Buch durch hat, erstmal weiter mit SDL arbeiten sollte.
Aus zwei Gründen:

1.) Man kennt sich bereits ansatzweise damit aus
2.) Man lernt eigene Lösungen für elementare Probleme zu programmieren (z.B. sucht man nach eine Möglichkeit Sound abzuspielen
und wenn man eine gefunden hat, schaut man wie man diese Lösung ins Framework einbinden kann, stellt fest, dass die Lösung
nicht die Beste ist und optimiert sie. Kurz: Man lernt bzw. festigt wie man seinen Code aufbauen sollte)

MMn sollte man also zumindest das erste Spiel aus dem Buch in SDL (+ extra-libs) lassen. Sobald man sich aber im Programmieren "sicher" fühlt, kann man ruhig auf SFML wechseln.

Nagamono

Frischling

  • »Nagamono« ist der Autor dieses Themas

Beiträge: 32

Wohnort: Düsseldorf

Beruf: Schüler

  • Private Nachricht senden

19

11.02.2011, 13:39

Alsoo :)
Ich hab jetzt mal ein bisschen rumgespielt. Ich hoffe mal ihr kennt das "Spiel" aus dem Buch und wisst ungefähr wie das aufgebaut ist.
Hab erstmal nur als Menü das Hintergrundbild, und einen Schriftzug "(S)-Spiel starten". Das Spiel startet man halt indem man auf "s" drückt.

Hab mich erstmal daran orientiert, wie das Spiel aufgebaut ist.

Das hier ist die Funktion die das Menü laufen lässt:

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 CGame::Menu ()
{
    while (m_bMenuRun == true)
    {
        // Events bearbeiten
        ProcessEvents ();

        // Framework updaten und Buffer löschen
        g_pFramework->Update ();
        g_pFramework->Clear ();

        // Hintergrundbild rendern
        m_pSpriteBackground->Render ();

        // Menu rendern
        m_pSpriteMenu->Render ();
        m_pSpriteMenu->SetPos (176.0f, 300.0f); 

        //Buffer flippen
        g_pFramework->Flip ();
    }
}


Die Funktion "ProcessEvents" 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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
void CGame::ProcessEvents ()
{
    SDL_Event Event;

    // Gab es ein Event?
    if (SDL_PollEvent (&Event))
    {
        // Ja, also schauen welches
        switch (Event.type)
        {
            // Beenden?
        case (SDL_QUIT):
            {
                m_bMenuRun = false;
                m_bGameRun = false;

            } break;


            // Wurde eine Taste gedrückt?
        case (SDL_KEYDOWN):
            {
                switch (Event.key.keysym.sym)
                {
                case (SDLK_ESCAPE):
                    {
                        // Ja, also Spiel beenden
                        m_bMenuRun = false;
                        m_bGameRun = false;

                    } break;

                case (SDLK_s):
                    {
                        //Ja, also Spiel starten
                        m_bMenuRun = false;
                        m_bGameRun = true;
                    }
                }
            } break;
        }
    }

} // ProcessEvents


Die Funktion die das Spiel laufen lässt zeig ich euch auch nochmal :)

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
35
void CGame::Run ()
{
    // Hauptschleife des Spiels durchlaufen
    //
    while (m_bGameRun == true)
    {
        // Events bearbeiten
        ProcessEvents ();

        // Framework updaten und Buffer löschen
        g_pFramework->Update ();
        g_pFramework->Clear ();

        // Hintergrundbild rendern
        m_pSpriteBackground->Render ();

        // Spieler updaten und rendern
        m_pPlayer->Update ();
        m_pPlayer->Render ();

        // Neue Asteroiden hinzufügen
        SpawnAsteroids ();

        // Kollisionen prüfen
        CheckCollisions ();

        // Asteroiden rendern
        RenderAsteroids ();

        // Buffer flippen
        g_pFramework->Flip ();

    }

} // Run


Läuft auch so wie ich es mir vorgestellt habe :) Will das halt noch so ändern, dass ich den Menüpunkt per Maus auswählen kann, aber ich mach
lieber erstmal kleine Schritte :) Da das wahrscheinlich keine sehr elegante Lösung (also vom ablauf her) ist, würd ich gerne wissen was ich ändern kann. Abgesehen davon, dass ich den Menüpünkt nicht mit der Maus auswähle oder per Tastatur dadurch schalten kann.

Lares

1x Contest-Sieger

  • Private Nachricht senden

20

11.02.2011, 17:23

Für das erste Menü ist es ok, solange es so funktioniert, wie du es willst.
Wenn du aber mehr Spielabschnitte implementieren willst, bietet es sich an diese je als eigene Klasse zu programmieren und Instanzen
von ihnen in der Game-Klasse anzulegen.
Je nachdem welcher Spielabschnitt aktiv ist rufst du dann in CGame.Run() CMenu.Run() oder die Run()-Methode eines anderen Spielabschnitts auf.
Du könntest zusätzlich noch den Render- und Update-Teil in zwei Funktionen aufteilen
(Das erleichtert später zB ein "Spiel pausieren"-Feature zu implementieren).

Werbeanzeige