JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=1070feb09248262ee875bdaf6e883556Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

sternenfeld

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Bolle52
Mini JLI'ler



Anmeldedatum: 13.07.2007
Beiträge: 24

Medaillen: Keine

BeitragVerfasst am: 02.09.2007, 17:20    Titel: sternenfeld Antworten mit Zitat

hi @ all

wie muss ich den quellcode optimieren, damit die sterne sich auf der x-achse bewegen?

<edit TLoP>
Bitte in Zukunft cpp-Tags verwenden. Ist übersichtlicher.
</edit TLoP>

CPP:
void CStar::CalcNewPos()
{
    // x, y-Koordinate zufällig festlegen
    m_x = static_cast<float>((rand()%SCR_WIDTH));
    m_y = static_cast<float>((rand()%SCR_HEIGHT));

    // Geschwindigkeit bestimmen
    m_dy = static_cast<float>(rand()%MAX_SPEED + 1);
    m_dy /= 10.0f;

    m_Length = static_cast<int>(m_dy) + 1;

    // Position/Laenge auf Bildschirmhoehe beschraenken
    if(m_y + m_Length >= SCR_HEIGHT)
    {
        m_y = static_cast<float>(m_Length);
    }
}



void CStar::Move(void)
{
    // y-Koordinate erhoehen
    m_y += m_dy;

    // testen, ob sich der Stern ausserhalb
    // des Bildschirmes befindet
    if(m_y +  m_Length >= SCR_HEIGHT)
    {
       // wenn ja, neue Koordinaten berechnen
       CalcNewPos();

       // und y-Koordinate anpassen
       m_y = m_dy;
    }
}

void CStar::Draw(D3DCOLOR* Pixels, int Pitch)
{
    // Position fuer den Stern berechnen
    int index = static_cast<int>(m_y) * Pitch + static_cast<int>(m_x);

    // Laenge beruecksichtigen und Farbe waehlen
    for(int i=0;i<m_Length;i++)
    {
        Pixels[(index + i * Pitch)] = StarColors[i];
    }
}


danke schon mal für antworten
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 02.09.2007, 19:26    Titel: Antworten mit Zitat

Blöde Antwort, aber: Lese aufmerksam das Buch und versuche zu verstehen, was dort beschrieben ist. Dann schau dir den Quellcode an, und verstehe, was er tut. Dann ist es für dich ein leichtes, die Aufgabe zu lösen.

Kleiner Tip: Im Quelcode wird die X Position geändert. Würde man die y Position ändern, bewegten sich die Sterne nicht mehr entlang der y sondern der x Richtung.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Bolle52
Mini JLI'ler



Anmeldedatum: 13.07.2007
Beiträge: 24

Medaillen: Keine

BeitragVerfasst am: 02.09.2007, 19:44    Titel: Antworten mit Zitat

das habe ich schon mitbekommen, das sich die sterne entlang der y-achse bewegen. ich habe ach schon ein bisschen mit den code gespielt, um zu sehen, welche veränderung was bewirkt. bisher habe ich es geschafft, das sich die sterne in einem bestimmten bereich nur bewegen, aber nicht, das sie sich entlang der x.achse bewegen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Xibus
Junior JLI'ler


Alter: 33
Anmeldedatum: 18.02.2007
Beiträge: 91
Wohnort: Deutschland -> NRW -> OWL -> Paderborn -> Salzkotten
Medaillen: Keine

BeitragVerfasst am: 02.09.2007, 20:06    Titel: Antworten mit Zitat

Ich hatte damals die klasse so umgeschrieben das ich in grad angeben kann in welche richtung die sterne sich bewegen. und wenn ich das geschafft hab das kann das nit sehr schwer sein... Wink

Tip: mach dir klar was index und pitch bedeutet. wenn dus dann nit schafftst


ansonsten:

Star.h
CPP:
class CStar
{
    public:

        // Konstruktor
        CStar(void);

        // Stern bewegen
        void Move(void);

        // Berechne neue Position des Sterns
        void CalcNewPos(void);

        // Ausgabe des Sterns
        void Draw(D3DCOLOR* Pixels, int Pitch);

    protected:

        float m_x;       // x-Koordinate des Sterns
        float m_y;       // y-Koordinate des Sterns
        float m_dx;      // Bewegung in y-Richtung
        int   m_Length;  // Laenge des Schweifs
};



Star.cpp
CPP:
CStar::CStar()
{
    m_x      = 0;
    m_y      = 0;
    m_dx     = 0;
    m_Length = 0;


    // initiale Position fuer den Stern berechnen
    CalcNewPos();
}


void CStar::CalcNewPos()
{
    // x, y-Koordinate zufällig festlegen
    m_x = static_cast<float>((rand()%SCR_WIDTH));
    m_y = static_cast<float>((rand()%SCR_HEIGHT));

    // Geschwindigkeit bestimmen
    m_dx = static_cast<float>(rand()%MAX_SPEED + 1);
    m_dx /= 10.0f;

    m_Length = static_cast<int>(m_dx) + 1;

    // Position/Laenge auf Bildschirmhoehe beschraenken
    if(m_x + m_Length >= SCR_WIDTH)
    {
        m_x = static_cast<float>(m_Length);
    }
}



void CStar::Move(void)
{
    // y-Koordinate erhoehen
    m_x += m_dx;

    // testen, ob sich der Stern ausserhalb
    // des Bildschirmes befindet
    if(m_x +  m_Length >= SCR_WIDTH)
    {
       // wenn ja, neue Koordinaten berechnen
       CalcNewPos();

       // und y-Koordinate anpassen
       m_x = m_dx;
    }
}

void CStar::Draw(D3DCOLOR* Pixels, int Pitch)
{
    // Position fuer den Stern berechnen
    int index = static_cast<int>(m_y) * Pitch + static_cast<int>(m_x);

    // Laenge beruecksichtigen und Farbe waehlen
    for(int i=0;i<m_Length;i++)
    {
        Pixels[(index + i)] = StarColors[i];
    }
}

_________________
Signatur

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum