Gegner Automatisch bewegen



  • Hallo ich habe ein Problem
    ich habe ein Spiel gemacht wo man auf einem Feld steht und immer wenn ich mich in irgendeine richtung bewege dann bewegt sich der Gegner auch aber wenn ich keine Taste drücke bewegt sich der Gegner ja auch nicht ich möchte aber das sich der Gegner immer bewegt
    die abfrage der Tasten sieht ja so aus

    if(pMsg->message == WM_KEYDOWN)
        {
             b = (rand() % (4 - 1)) + 1;//Hier ist Problem der teilt geht nur wenn
               switch (b)               // Ich was drücke 
               {  
                case 1:
                   monsterx++;
    
                case 2:
                   monsterx--;
    
                case 3:
                   monstery++;
    
                case 4:
                   monstery--;
    
            switch(pMsg->wParam)
            {
    
            case VK_NUMPAD6:
             m_figurx++; 
         figur(m_figurx, m_figury);
    
             .
             .
             .
            usw
    
        }
        return CDialog::PreTranslateMessage(pMsg);
    }
    

    wie kann ich das jetzt machen das sich das Monster kontuniirlich bewegt
    aber das wenn ich was drücke dann soll ich mich halt auch bewegen

    please help



  • Hallo !

    Kannst du das hier:

    b = (rand() % (4 - 1)) + 1;//Hier ist Problem der teilt geht nur wenn
    switch (b)               // Ich was drücke 
    {  
    case 1:
    monsterx++;
    
    case 2:
    monsterx--;
    
    case 3:
    monstery++;
    
    case 4:
    monstery--;
    

    (und soetwas wie monster(monsterx, monstery) gehört evtl. auch noch dazu)
    nicht einfach an eine andere Stelle im Programm schreiben, die ständig ausgeführt wird ? Es muss doch irgendeine Schleife (im Main() ???) geben, die so lange ausgeführt wird, bis das Monster tot ist oder so...

    Fällt mir gerade ein:
    vielleicht klappt es ja auch so:

    if(pMsg->message == WM_KEYDOWN)
    {
    b = (rand() % (4 - 1)) + 1;//Hier ist Problem der teilt geht nur wenn
    switch (b)               // Ich was drücke 
    {  
    case 1:
    monsterx++;
    
    case 2:
    monsterx--;
    
    case 3:
    monstery++;
    
    case 4:
    monstery--;
    
    switch(pMsg->wParam)
    {
    case VK_NUMPAD6:
    m_figurx++; 
    figur(m_figurx, m_figury);
    
    .
    .
    .
    usw
    
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
    else
    {
    b = (rand() % (4 - 1)) + 1;// wenn keine Taste gedrückt ist
    switch (b)               // trotzdem das Monster bewegen
    {  
    case 1:
    monsterx++;
    
    case 2:
    monsterx--;
    
    case 3:
    monstery++;
    
    case 4:
    monstery--;
    
    // monster(monsterx, monstery); oder so
    }
    

    Tschüss



  • stimmt kann sein ich probiers mal



  • ne geht so nicht dann bweget der sich am anfang voll scheiße und wenn ich mich bewege auch und der bewegt sich wenn ich die maus bewege aber wenn ich nichts mache dann bewegt der sich auch nicht mehr



  • Pack deinen Monster-Bewegen-Code in OnTimer
    mit SetTimer dann einen Intervall bestimmen z.B. alle 500 ms

    [ Dieser Beitrag wurde am 01.10.2002 um 12:35 Uhr von Nemesyzz editiert. ]



  • ...oder frag doch mal im Spiele-/Graphikforum nach, wie die ihre Gegner laufen lassen.



  • Mit nem Timer weiß ich leider nicht genau wie das geht

    @ RenéG, Unix-Tom, C-O-M-M-A-N-D-E-R oder dEUs
    Hallo hiermit bitte ich die Moderatoren diesen Thread in das Spiele Forum zu verschieben denn vielleicht kann mir da jemand genauer helfen.

    Danke

    [ Dieser Beitrag wurde am 01.10.2002 um 14:19 Uhr von King.Flo editiert. ]



  • Hat da eigentlich nix verloren. OnTimer war doch ok, wo ist das Problem?



  • Ich krieg das halt nicht hin weiß nicht wieso wenn mir jemand ein beispiel geben könnte wäre ganz nett



  • Hier braucht ihr euch nicht mehr bemühen ich habs geschafft


Anmelden zum Antworten