Du bist nicht angemeldet.

Werbeanzeige

1

10.02.2013, 18:49

Mein erstes kleines Spiel, (Echtzeit mobs laufen lassen) (auch wenn keine aktion vom Spieler)

Hey Leute

Ich habe mal wieder mal ne Menge an fragen ^^
Ich stehe momentan vor einem riesen problem.

Also erstmal so die beschreibung vom Projekt.

Ich habe eine Klasse für die Map, den Spieler und die Mobs b.z.w erstmal den mob :D.

So es läuft alles wunderbar soweit, der Mob läuft, wenn auch noch ein bisschen wirr, und auch der Spieler kann sich über die Map bewegen.
Das ganze ist in einer do while schleife, und die Map wird mit einer for schleife dann letzendlich wenn die x-y Koordindaten sind in dieser do while schleife
gezeichnet.

Jetzt hab ich das problem, das mein mob sich ja nicht bewegt, wenn ich nichts drücke.
In der do schleife, frage ich mittels einer switch anweisung ab, ob der spieler hoch runter links oder rechts laufen möchte.
Das ganze tu ich per getch().

Das Problem ist also, er wartet immer auf eine Eingabe und dann wird auch der Mob bewegt.

Ich schreib euch hier mal den Main quellcode hin.

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
#include <iostream>
#include "Map.hpp"
#include "Spieler.hpp"
#include "Mob.hpp"
#include <cstdlib>
using namespace std;
int Beenden();
int main()
{
    Karte Feld;
    Spieler Test;
    Mob First;
    First.SetCordfirst();

    do
    {
        system("cls");
    //Bewegt Mob mit der x Koordinate
    Feld.SetzeMobx(First.Movex());
    
    //Zeichnet das Spielfeld
    Feld.ZeichneFeld();
    
    //Bewegt Mob mit der y Koordinate
    Feld.SetzeMoby(First.Movey());
    
    //Bewegung des Spielers abfragen und in return funktion geben
    Test.Move();
    
    //Setzt Spielerdaten in die Map
    Feld.SetzeSpieler(Test.RMovex(), Test.RMovey());
    
    }while(Beenden()==false);

    return 0;
}
int Beenden()
{
    return false;
}



Ich hoffe ihr könnt mir bei dem Problem helfen

Gruß Leri :)

FSA

Community-Fossil

Beiträge: 1 931

Wohnort: Hessen

  • Private Nachricht senden

2

10.02.2013, 19:09

Und was genau ist jetzt die Frage? Ich sehe keine einzige.

Zitat von »LetsGo«

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veralteten strukturieren Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

patrick246

Treue Seele

Beiträge: 329

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

3

10.02.2013, 19:14

Der Mob wird nur bewegt, wenn es eine Eingabe gibt. Das liegt daran, dass getch() wartet, bis eine Eingabe erfolgt. Solange kann das Programm nichts anderes machen. Lösung: Vorher mit kbhit() abfragen, ob wirklich etwas eingegeben wurde und nur dann einlesen. Hier ein Link dazu: http://www.c-plusplus.de/forum/39320-full

4

10.02.2013, 19:16

danke erstmal, werds mir jetzt mal in Ruhe durchlesen :)

5

10.02.2013, 19:22

Ich arbeite mit Code Blocks und anscheinend, kennt er pc.h nicht, die ich ja für den Befehl includen muss

patrick246

Treue Seele

Beiträge: 329

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

6

10.02.2013, 19:25

ich denke kbhit sollte in der gleichen headerdatei wie getch sein.

7

10.02.2013, 19:30

entschuldigung habe falsch gelesen.

Die Funktion klappt nun, allerdings, springt mein mob nun wild umher, ich bräuchte also ne anweisung, die ihn sozusagen langsamer gehen lässt.

Um den Mob sich bewegen zu lassen, erhalte ich per s rand eine Zahl, die dann per switch und case verzweigt, und dann halt entweder x koordinate ++ b.z.w -- rechnet.

BlueCobold

Community-Fossil

Beiträge: 10 888

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

10.02.2013, 19:32

Float und += 0.1 ?
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]

9

10.02.2013, 19:34

Das Problem ist halt, egal wie ich nun Sleep oder so einbaue, es freezt mir ja dann auch den Spieler ein, weil die in ner do while schleife sind :D

10

10.02.2013, 19:35

float hab ich auch schon dran gedacht, habe aber rein die map mit int werten jetzt.

Werbeanzeige