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

MrZylox1998

Treue Seele

Beiträge: 186

Wohnort: Bayern

Beruf: Schüler(9.Klasse)

  • Private Nachricht senden

11

10.02.2013, 19:39

Schau dir mal SFML an, da kannst du ja anstatt Sleep,
nen Timer einbauen und wenn er bei 0.5 sekunden ist das und das
machen^^
Jetzt -- ist schon vorbei.

Rechtschreibfehler sind Spezialeffekte meiner Tastatur!

12

10.02.2013, 19:42

ich glaub bei sfml bin ich noch nicht ^^ wie gesagt, das spiel ist rein in der Konsole, auch wenn es jetzt verlockend wäre.
Das problem ist ja, das mein Mob sich mit int werten sprich int x, int y bewegt und das halt auch über die schleife läuft.
Halte ich den mob jetzt mit sleep an, geht natürlich auch nicht der Spieler weiter.

mit float werten, hätte jetzt grad nicht so wirklich ahnung wie ich das realisieren sollte, da die map ja mit x-y Koordindaten in int gezeichnet wird

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

13

10.02.2013, 19:57

Als float speichern und als int "rendern"

3.9 ist noch 3, 4.1 aber dann 4
Flüssiger gehts in der Konsole halt nicht

14

10.02.2013, 20:15

verstehe schon wie es gemeint ist, aber wie sollte ich dann denn jetzt machen? :)

Hier der Code für die Karte also funktion die die Karte zeichnet


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
    void Karte::ZeichneFeld()
    {
        for(int i=0; i<breite; i++)
        {
            for(int j=0; j<hoehe; j++)
            {
                if(i==PCordx && j==PCordy)
                {



                    cout <<"X";

                }
                else
                {
                    cout <<".";
                }
                if(i==mPCordx && j==mPCordy)
                    {
                        cout <<"m";
                    }
                else
                {
                    cout <<".";
                }
            }
            cout << endl;
        }
    }






Und hier der für den Mob sind 2 einer für die abgabe der werte und der andere für sozusagen zufall ob der mob gehen kann oder nicht

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
int Mob::Movey()
{
    int Zufally=3;
    int ergebnis;

    ergebnis = (rand()%Zufally)+1;

    if(my_Cord<0)
    {
        my_Cord++;
    }

    if(my_Cord>=15)
    {
        my_Cord--;
    }

    cout << "Ergebnis Y" << ergebnis << endl;

    switch(ergebnis)
    {
    case(0):
        {

        }break;
    case(1):
        {
            my_Cord++;
        }break;
    case(2):
        {
            my_Cord--;
        }break;
    default:
        {

        }
    }
    return my_Cord;
}






Wenn srand Zahl 1 oder 2 ausgibt, bewegt der mob sich, so sollst jedenfalls sein :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void   Karte::SetzeMoby(int y)
    {
        Sleep(3000);
        int Bereich = 6;
        int x;
    srand(timeGetTime());
    x = (rand()%Bereich)+1;

    if(x==1||2)
    {
        mPCordy=y;
    }
    else
    {
    mPCordy+=0;
    }
    }

15

10.02.2013, 20:22

Abgesehen von deinen anderen Problemen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
if(x==1||2)
{
    mPCordy=y;
}
else
{
    mPCordy+=0;
}

1. Den else-Teil kannst du weglassen.
2. if(x==1||2) ist immer wahr (Zahlen ungleich 0 werden implizit in true konvertiert). Du willst wohl if(x==1||x==2) oder if(x<=2).
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

16

10.02.2013, 20:23

Ich würde ihn für eine bestimmte Anzahl an Frames in eine Richtung bewegen lassen und danach die Richtung wechseln. In diese Richtung bewegen lassen und wieder wechseln. Also wenn richtung == 1, dann my_coord++; wenn richtung == 2, dann my_coord--;

17

10.02.2013, 20:41

wie gesagt, das bewegen ist ja momentan nicht mein problem, mein problem ist es nun, das der mob sich zu schnell bewegt.

Und ich weiß nicht wie ich ihn langsamer bewegen kann ^^.
Mir fällt auch grad nicht ein, wie ich das ganze mit float lösen sollte, ohne die kompletten interger in floats umzuwandeln

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

10.02.2013, 20:58

Eben. Anders wird's wohl auch höchstens nur gehen, indem Du sie nicht jeden Frame eine Bewegung machen lässt, sondern eben seltener.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

19

10.02.2013, 21:18

wie kann ich das denn dann bewerkstelligen, die sind ja in der do schleife mit drinne

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

20

10.02.2013, 21:23

eine int variable namens frame wird bei jedem Durchlauf erhöht. Dann wird entsprechend nur jeden 3. oder 4. Frame das mob bewegt.

Werbeanzeige