C++ Dark GDK Problem

01/20/2013 19:05 Seife_#1
Hallo, hab mir was zusammen gecodet, woraus irgendwann mal ein 2D Jump'n'run werden soll, IRGENDWANN vielleicht mal, weil viel ist davon noch nicht da und ich bekomm jetzt schon Probleme. Aaalso, ich verwende Visual Studio Express 2008 und Dark GDK, hab an ner Vorlage bisschen rumgebastelt und in meinem Code steht jetzt:
Laut documentation gibt die Funktion dbMouseClicke einen Integer, je nachdem ob und welche Taste gedrückt wird, 0 bei keine, 1 bei der linken, usw. nur beschwert sich der Compiler jetzt.

/Edit: Hab den Fehler gefunden, dbMouseClick funktioniert jetzt nur meine selbst geschriebene Funktion die ein Objekt springen lassen soll geht noch nicht
PHP Code:
void jump (int objint height)
{
    
bool state true;
    if (
state true)
    {
        
state false;
        
int beg dbSpriteY(obj);
        
int end dbSpriteY(obj) + height;
        while(
dbSpriteY(obj) < end)
            
dbMoveSprite(obj,3);
        while(
dbSpriteY(obj) > beg)
            
dbMoveSprite(obj,-3);
        
state true;
    }

Woran liegt das? Ich hab wirklich keine Ahnung davon. Wäre sehr dankbar wenn mir jemand helfen würde.
01/21/2013 11:57 kissein#2
Quote:
bool state = true;
if (state = true)
{
state = false;
Die If Bedingung sollte ein Vergleichsoperator benutzt werden. Sieht nach einem Typo aus
01/21/2013 16:05 Seife_#3
Ja, das hab ich bemerkt ^^ aber das eigentliche Problem ist, dass die Funktion 60 mal die Sekunde ausgeführt wird und ich will das verhindern, also dass sie erst nochmal ausgeführt werden kann sobald die vorherige beendet ist.
01/21/2013 16:32 Elektrochemie#4
Jou. Geh mal ins gamecreators forum und such nach "Timer based movement". Dann ist es nicht FPS basierend, sondern nach Zeit.

Deine Funktionen müssten ca. so aussehen:
Code:
bool charjumping;
bool falling;
int charjump_end;
int charjump_start;

void main()
{
    if(mouseclick && !char_jumping)
    {
        char_jumping = true;
        falling = false;
        char_jumpend = spritepos + jumphigh;
        char_jumpstart = spritepos;
     }

    if(char_jumping)
        handle_charjump();
}


void handle_charjump();
{
        if(!falling)
        {
        if(dbSpriteY(obj) < end)
        {
            dbMoveSprite(obj,3);
        }else
        {
             falling = true;
         }
         }else // wieder runter
         {
             if(dbSpriteY(obj) > beg)
             {
                dbMoveSprite(obj,-3);
              }else
              {
                   char_jumping = false;
              }
         }

}

natürlich jetzt nicht copy & paste geeignet, aber dass du ne idee davon bekommst.
while ist eigentlich immer schlecht. Weil alles andere wärenddessen nicht "läuft". D.h. du bekommst garnicht mit wenn dein charakter (im programm) springt, weil es das garnicht rendert so wie du deine funktion hast.

Edit:
Hier meine Spiele die ich früher mit Dark GDK gebastelt (bzw angefangen) hatte.
[Only registered and activated users can see links. Click Here To Register...]
Bin dann aber auf ne andere Engine gestiegen.
Aber für den Anfang ist Dark GDK ganz gut :)

Nur wenn du halt absolut kein c++ kannst wirst du große Probleme haben.
01/21/2013 17:32 Seife_#5
Auf welche Engine bist du denn jetzt umgestiegen?
01/21/2013 17:43 Elektrochemie#6
SFML, würde ich aber als kompletter c++ Einsteiger nicht empfehlen.
Da passt Dark GDK eigentlich recht gut. Ist zwar etwas outdated, aber gefällt mir immer noch.
01/21/2013 18:21 Seife_#7
Ich kriegs nicht hin :/

Der Compiler meckert beim
PHP Code:
    while ( LoopGDK() ) 
01/21/2013 18:58 Elektrochemie#8
Die While schleife muss in die void DarkGDK ( void ) Funktion (an s ende), die is gerade ausserhalb ^^

Und die void jump muss über der void DarkGDK stehen, sonst findet er sie (so) nicht. (Ändert sich später mit Klassen, wenn du soweit bist)
01/21/2013 19:26 Seife_#9
Danke nochmal dafür :) Ich hab jetzt das Problem dass die Funktion nicht auf die bool Werte falling und jumping zugreifen kann um sie zu verändern. Wie würde man das machen? Mit Pointern?
01/26/2013 20:27 draqosss55#10
maybe
01/26/2013 23:40 Seife_#11
Das hättest du dir jetzt aber nicht sparen können, oder?