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 | }
|