Forum: PC-Programmierung Timer funktion und Eingabe abfrage


von Daniel (Gast)


Lesenswert?

Hallo,

ich versuche zurzeit in der Konsole ein Spiel zu entwickeln
ähnlich wie pack-man bin zurzeit dabei die "KI" zu programmieren
das sie ganz simpel denn Bildschirmrand abläuft. Das man
auch sieht wie er "geht" hab ich Sleep(xxx) eingebaut jedoch
stoppt nun immer das komplette Programm und ich kann natürlich auch
keine Eingabe tätigen.

- Einmal möchte ich gerne wissen wie man einen timer programmiert
  der dann auch Aktionen ausführen/steuern kann bzw. Bei der ersten
  Sekunde Beginnt er zu "laufen" bei der fünften "stoppt" er.

- Dann würde ich noch gerne wissen wie man einbaun kann, das abge-
  fragt wird, ob und welche Eingabe man getätigt hat

Ich Programmiere auf Windows mit CodeBlocks



Mit freundlichen Grüßen
Daniel


P.S. Damit ihr meine Frage besser verstehn könnt hier mein Programm
     und ich hoffe auf nicht zu hart Kritik...
1
#include <iostream>
2
#include <windows.h>
3
#include <stdlib.h>
4
5
using namespace std;
6
7
const int X=10;
8
const int Y=10;
9
char Spielfeld[X][Y]; // Spielfeld = Mehrdimensionales Array
10
11
int Merker;
12
13
void Bildschirm_Leeren(); // Kleine Funktion um die Konsole zu Leeren
14
void Spielfeld_anzeigen(); // Spielfeld anzeigen
15
void Spielfeld_erstellen(); // Spielfeld erstellen
16
void KI_1();
17
18
19
int main()
20
{
21
22
23
    Spielfeld_erstellen();
24
    Spielfeld_anzeigen();
25
    KI_1();
26
27
28
29
30
31
    return 0;
32
}
33
34
void Bildschirm_Leeren() // Kleine Funktion um die Konsole zu Leeren
35
{
36
        system("cls");
37
}
38
39
void Spielfeld_erstellen() //
40
{
41
    int u,r; //u = nach unten // r = nach rechts
42
43
    for (u=0;u<Y;u++)
44
    {
45
        Spielfeld[u][X]='|';
46
    }
47
48
    // Spielfeld erstellen
49
    for (u=0;u<Y;u++)
50
    {
51
        for (r=0;r<X;r++)
52
        {
53
            Spielfeld[u][r]= 'o';
54
        }
55
        cout << endl;
56
    }
57
    // Spielfeld erstellt
58
59
    // Spielfeld Rand erstellen
60
    for (u=0;u<Y;u++)
61
    {
62
        Spielfeld[u][0]='|';
63
    }
64
65
    for (u=0;u<Y;u++)
66
    {
67
        Spielfeld[u][9]='|';
68
    }
69
70
    for (r=0;r<X;r++)
71
    {
72
        Spielfeld[0][r]='_';
73
    }
74
75
    for (r=0;r<X;r++)
76
    {
77
        Spielfeld[9][r]='_';
78
    }
79
    // Spielfeld Rand fertig erstellt
80
    // KI_1 generiert
81
    u=1;
82
    r=1;
83
    Spielfeld[u][r] = 'X';
84
    // KI_1 generieren abgeschlossen
85
86
}
87
88
void Spielfeld_anzeigen()
89
{
90
    Bildschirm_Leeren();
91
    int u,r; //u = nach unten // r = nach rechts
92
93
        for (u=0;u<Y;u++) // Y ist das Limit des Arrays
94
    {
95
        for (r=0;r<X;r++) // X ist das Limit des Arrays
96
        {
97
            cout << Spielfeld[u][r] << " "; // Zur übersichtlichkeit ein kleiner Abstand
98
        }
99
        cout << endl;
100
    }
101
}
102
103
void KI_1()
104
{
105
    int u,r,i;
106
    u=1;
107
    r=1;
108
    Merker=1;
109
    for (i=0;;)
110
    {
111
    if(Spielfeld[u+1][r]=='o' && Merker ==1) // er läuft die erste Wand ab
112
    {
113
        Merker=1;
114
115
        Spielfeld[u][r]='o';
116
        u++;
117
        Spielfeld[u][r]='X';
118
        Sleep(250);
119
        Spielfeld_anzeigen();
120
    }
121
    else if (Spielfeld[u][r+1]=='o' && Merker==1 || Spielfeld[u][r+1]=='o' && Merker==2) // er läuft die zweite Wand ab
122
    {
123
        Merker=2;
124
125
        Spielfeld[u][r] ='o';
126
        r++;
127
        Spielfeld[u][r] ='X';
128
        Sleep(250);
129
        Spielfeld_anzeigen();
130
    }
131
    else if (Spielfeld[u-1][r] =='o' && Merker==2 || Spielfeld[u-1][r] =='o' && Merker==3) // er läuft die dritte Wand ab
132
    {
133
        Merker=3;
134
135
        Spielfeld[u][r] ='o';
136
        u--;
137
        Spielfeld[u][r] ='X';
138
        Sleep(250);
139
        Spielfeld_anzeigen();
140
    }
141
    else if (Spielfeld[u][r-1] =='o' && Merker==3 || Spielfeld[u][r-1] =='o' && Merker==4) // er läuft die vierte Wand ab
142
    {
143
        Merker=4;
144
145
        Spielfeld[u][r] ='o';
146
        r--;
147
        Spielfeld[u][r] ='X';
148
        Sleep(250);
149
        Spielfeld_anzeigen();
150
        }
151
        else
152
        {
153
            Merker=1;
154
        }
155
    }
156
157
158
159
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.