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

BK Simon

Treue Seele

  • »BK Simon« ist der Autor dieses Themas

Beiträge: 151

Beruf: Student

  • Private Nachricht senden

51

30.07.2013, 21:05

War das eine Antwort auf mein Problem? Dann muss ich sagen, dass ich nun leider nicht genau weiß, was ich nun aendern soll :)

BK Simon

Treue Seele

  • »BK Simon« ist der Autor dieses Themas

Beiträge: 151

Beruf: Student

  • Private Nachricht senden

52

30.07.2013, 21:12

Wenn erwuenscht, kann ich auch gerne mal den ganzen Code hier reinposten :)

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

53

30.07.2013, 21:37

Das was du hier gemacht hast ist als wenn du in der Werkstatt anrufst und sagst "Mein Auto fährt nicht mehr". Was glaubst du wie die dir helfen könnten? Genau so gut können wir dir grad helfen;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BK Simon

Treue Seele

  • »BK Simon« ist der Autor dieses Themas

Beiträge: 151

Beruf: Student

  • Private Nachricht senden

54

30.07.2013, 21:59

Spieler.h

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
#ifndef SPIELER_H
#define SPIELER_H
#include <SFML/Graphics.hpp>
#include "Schuss.h"
#include <list>

class Spieler
{
private:
    sf::RectangleShape Player_Shape;
    std::list<Schuss> Schussliste;
    sf::RenderWindow &window;
    sf::Event &event;
    bool Schuss_Sperren;



public:
    Spieler ( sf::RenderWindow &window, sf::Event &event );
    
    void Render ( sf::Time elapsed );
    void Update ( sf::Time elapsed );
    void Wurde_geschossen ();
    void Bewegen ( sf::Time elapsed );
    std::list<Schuss> *Get_Schussliste ();

    sf::RectangleShape& GetShape ();
    float GetPosition_x ();
    float GetPosition_y ();
};

#endif


Spieler.cpp

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include "Spieler.h"
#include <SFML/Graphics.hpp>
#include <iostream>
#include "Schuss.h"
#include <list>

Spieler::Spieler ( sf::RenderWindow &window, sf::Event &event ) : window ( window ), event (event)
{
    Player_Shape.setPosition ( 275, 550 );
    Player_Shape.setSize ( sf::Vector2f ( 50, 50 ) );
    Player_Shape.setFillColor ( sf::Color::Green );
}

void Spieler::Render ( sf::Time elapsed )
{

    std::list<Schuss>::iterator i = Schussliste.begin ();

    while ( i != Schussliste.end () )
    {
        i->Update ( elapsed );

        if ( i->GetAlive () )
        {
            i->Render ( window );
            i++;
        }
        else
        {
            i = Schussliste.erase (i);
        }
    }

    window.draw ( Player_Shape );
}

void Spieler::Update ( sf::Time elapsed )
{
    Bewegen ( elapsed );

    Wurde_geschossen ();
}

void Spieler::Wurde_geschossen ()
{
    if ( sf::Keyboard::isKeyPressed ( sf::Keyboard::Space ) && Schuss_Sperren == true )
    {
        Schuss_Sperren = false;

        Schuss Schuss_temp ( -500 );

        Schuss_temp.SetPosition ( Player_Shape.getPosition ().x + 25, Player_Shape.getPosition ().y );

        Schussliste.push_back ( Schuss_temp );
    }
    if ( event.type == sf::Event::KeyReleased )
    {
        if ( event.key.code == sf::Keyboard::Space )
        {
            Schuss_Sperren = true;
        }
    }   
}

void Spieler::Bewegen ( sf::Time elapsed )
{
    if ( sf::Keyboard::isKeyPressed ( sf::Keyboard::Right ) && Player_Shape.getPosition ().x <= 750 )
    {
        Player_Shape.move ( 1000 * elapsed.asSeconds () , 0 );
    }
    if ( sf::Keyboard::isKeyPressed ( sf::Keyboard::Left ) && Player_Shape.getPosition ().x >= 0 )
    {
        Player_Shape.move ( -1000 * elapsed.asSeconds() , 0 );
    }
}



sf::RectangleShape& Spieler::GetShape ()
{
    return Player_Shape;
}

std::list<Schuss>* Spieler::Get_Schussliste ()
{
    return &Schussliste;
}

float Spieler::GetPosition_x ()
{
    return Player_Shape.getPosition ().x;
}
float Spieler::GetPosition_y ()
{
    return Player_Shape.getPosition ().y;
}


Fuege ich nun in der Spieler.hpp einfach nur eine int Variable im private oder public Bereich zu, kommt während des ausführens ein Run-Time Error, leider habe ich keinen weiteren Fehlerbericht gesehen.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »BK Simon« (30.07.2013, 23:16)


BK Simon

Treue Seele

  • »BK Simon« ist der Autor dieses Themas

Beiträge: 151

Beruf: Student

  • Private Nachricht senden

55

31.07.2013, 00:43

Problem gelöst :)

Lag an der einer itoa Funktion in der Gegner.cpp, die aber warum auch immer erst Probleme macht, wenn ich eine neue Variable anlege.
Der Buffer den ich für die Funktion benutzt habe war nur ein char Pointer, der dann wahrscheinlich nicht genug Speicherplatz hatte :)
Habe nun einfach ein Char Array verwendet.

Hier die neue Version zum Spielen wer mag :)
»BK Simon« hat folgendes Bild angehängt:
  • Snapshot.png
»BK Simon« hat folgende Datei angehängt:

BK Simon

Treue Seele

  • »BK Simon« ist der Autor dieses Themas

Beiträge: 151

Beruf: Student

  • Private Nachricht senden

56

01.08.2013, 10:05

Mag mir jemand kleines Feedback geben, ob die neue Version "spielbar" ist oder ob da irgendwelche schwerwiegenden Fehler sind :)

57

01.08.2013, 10:42

Also Fehler habe ich nicht entdeckt, aber du könntest die Schüsse etwas verbessern, die schießen nämlich immer an eine bestimmte Position was natürlich nicht optimal ist.

BK Simon

Treue Seele

  • »BK Simon« ist der Autor dieses Themas

Beiträge: 151

Beruf: Student

  • Private Nachricht senden

58

01.08.2013, 11:04

Danke fuers Feedback :)

Ja das mit den Schissen, da stimme ich dir zu, dass ist noch nicht so optimal und liegt noch daran, dass bis jetzt die "KI" so ist, dass sie einfach nur jede 0.5 Sekunden schiesst und da sie dann noch eine konstante Geschwindigkeit hat kommen die Schuesse nahezu auf die gleiche Position.

Zurzeit habe ich nur die Idee, dass sich der Gegnerblock einfach immer richtung x-Koordinate vom Spieler bewegt und somit kann man als Spieler nicht einfach nur auf der selben Position stehen bleiben :)

Werbeanzeige