-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGuiKonsole.java
217 lines (181 loc) · 6.72 KB
/
GuiKonsole.java
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
public class MissionPlayer {
// der MissionPlayer ist jene Klasse, die die Mission "abspielt"
private boolean fail = false; // falls ein MiniGame nicht erfolgreich abgeschlossen
// wird, wird "fail" true und die Mission gilt als
// gescheitert
private boolean fertig = false;
private GuiKonsole guiKonsole = new GuiKonsole();
// in der Konsole findet der Hackvorgang statt
private MiniGameLader lader;
private Mission mission; // speichern der übergebenen Mission
public MissionPlayer(Mission mission) {
this.mission = mission;
lader = new MiniGameLader(mission.getSchwierigkeit());
// hier werden alle MiniGames geladen mit der gegebenen Schwierigkeit
}
public void starten(int spielerGeld) {
// die Konsole sichtbar machen
guiKonsole.setVisible(true);
guiKonsole.addLine("Mission \""+mission.getName()+"\" gestartet...");
sleep(2);
for(int i = 1; i <= mission.getSpielzahl(); i++) {
// so lange MiniGames starten, bis die obere Grenze erreicht ist
guiKonsole.addLine("Starte Herausforderung "+i+" von "+mission.getSpielzahl()+"...");
while(guiKonsole.isQueueEmpty() == false) {
sleep(1);
}
// hier wird ein zufälliges Spiel aus den geladenen Spielen ausgesucht
AbstractMiniGame miniGame = lader.miniGameWaehlen();
miniGame.initialisieren(); // das Minigame initialisieren und z.B.
// Zufallszahlen bilden.
miniGame.setVisible(true); // Lasset die Spiele beginnen!
while(miniGame.fertig() == false && miniGame.isVisible() == true) {
// so lange das Spiel noch nicht fertig ist oder das Fenster nicht
// geschlossen wurde, wird gewartet
sleep(1);
}
if(miniGame.erfolgreichGeloest() == true) {
guiKonsole.addLine("Herausforderung "+i+" erfolgreich gelöst!");
sleep(1);
miniGame.setVisible(false);
miniGame.dispose();
} else {
guiKonsole.addLine("An der Herausforderung "+i+" gescheitert...");
sleep(1);
miniGame.setVisible(false);
miniGame.dispose();
sleep(1);
fail = true;
break;
}
}
if(fail == true) {
guiKonsole.addLine("Mission gescheitert!");
guiKonsole.addLine();
guiKonsole.addLine("Du hast für die Mission "+mission.getKosten()+"€ ausgegeben.");
} else {
guiKonsole.addLine("Du hast alle Herausforderungen gelöst!");
guiKonsole.addLine();
guiKonsole.addLine("Die Mission \""+mission.getName()+"\" ist erfolgreich abgeschlossen!");
guiKonsole.addLine("Folgende Belohnungen erwarten dich:");
guiKonsole.addLine("Geld:");
guiKonsole.addLine(" Ausgaben: "+mission.getKosten());
guiKonsole.addLine(" Einnahmen: "+mission.getGewinn());
guiKonsole.addLine(" -> Gewinn: "+(mission.getGewinn()-mission.getKosten()));
guiKonsole.addLine();
guiKonsole.addLine("Skillverbesserung: "+mission.getSkillverbesserung());
}
guiKonsole.addLine();
guiKonsole.addLine("Dein Schlafbedarf hat sich um "+mission.getSchlafbedarf()+" erhöht.");
if(mission.getName() == "Die NSA hacken" && fail == false) {
// GEWONNEN!!!
win();
} else if((spielerGeld - mission.getKosten() + mission.getGewinn()) <= 0) {
// Spieler ist pleite => verloren.
fail();
} else {
sleep(3);
fertig = true;
}
}
public static void main(String[] args) {
MissionPlayer mp = new MissionPlayer(new MissionLader().getMissionen().get(0));
mp.guiKonsole.setVisible(true);
//mp.win();
//mp.fail();
mp.credits();
}
private void credits() {
guiKonsole.addLine();
guiKonsole.addLine();
guiKonsole.addLine();
guiKonsole.addLine(" _ _ __ ___ _ _ ____ ____ ___ __ __ __ ____ ");
guiKonsole.addLine("( )_( ) /__\\ / __)( )/ )( ___)( _ \\ ___ / __) /__\\ ( \\/ )( ___)");
guiKonsole.addLine(" ) _ ( /(__)\\( (__ ) ( )__) ) /(___) ( (_-. /(__)\\ ) ( )__) ");
guiKonsole.addLine("(_) (_)(__)(__)\\___)(_)\\_)(____)(_)\\_) \\___/(__)(__)(_/\\/\\_)(____)");
guiKonsole.addLine();
guiKonsole.addLine("by Doran Nettig and Christopher Büchse, 2015");
sleep(7);
guiKonsole.addLine();
guiKonsole.addLine("Dieses Spiel entstand mit Java,");
sleep(3);
guiKonsole.addLine("Code, der vorher noch nicht da war.");
sleep(3);
guiKonsole.addLine("Viele Stunden Schweiß und Sorgen,");
sleep(3);
guiKonsole.addLine("Fertig sein solls heut', nicht morgen.");
sleep(3);
guiKonsole.addLine();
sleep(3);
guiKonsole.addLine("Der Lehrer hat nun Spaß und Pflicht,");
sleep(3);
guiKonsole.addLine("Die Spiele testen, sonst gehts nicht.");
sleep(3);
guiKonsole.addLine("Und wird er lesen diese Zeilen,");
sleep(3);
guiKonsole.addLine("Nicht mehr allzu lang beim Spiel verweilen.");
sleep(3);
guiKonsole.addLine();
sleep(3);
guiKonsole.addLine("Missionen gelöst oder Geld ist leer,");
sleep(3);
guiKonsole.addLine("Manche, waren wirklich schwer.");
sleep(3);
guiKonsole.addLine("Doch was ist's, was macht uns froh?");
sleep(3);
guiKonsole.addLine("'Ne gute Note, sowieso.");
sleep(3);
guiKonsole.addLine();
sleep(3);
guiKonsole.addLine("Christopher, 03.07.2015, 15:45");
sleep(60);
}
private void win() {
guiKonsole.clear();
// ASCII-Art von http://www.network-science.de/ascii/
guiKonsole.addLine(" _________ _ ");
guiKonsole.addLine("|\\ /|\\__ __/( ( /|");
guiKonsole.addLine("| ) ( | ) ( | \\ ( |");
guiKonsole.addLine("| | _ | | | | | \\ | |");
guiKonsole.addLine("| |( )| | | | | (\\ \\) |");
guiKonsole.addLine("| || || | | | | | \\ |");
guiKonsole.addLine("| () () |___) (___| ) \\ |");
guiKonsole.addLine("(_______)\\_______/|/ )_)");
guiKonsole.addLine();
credits();
System.exit(0);
}
private void fail() {
guiKonsole.clear();
// ASCII-Art von http://www.network-science.de/ascii/
guiKonsole.addLine(" _______ _______ _________ _ ");
guiKonsole.addLine(" ( ____ \\( ___ )\\__ __/( \\ ");
guiKonsole.addLine(" | ( \\/| ( ) | ) ( | ( ");
guiKonsole.addLine(" | (__ | (___) | | | | | ");
guiKonsole.addLine(" | __) | ___ | | | | | ");
guiKonsole.addLine(" | ( | ( ) | | | | | ");
guiKonsole.addLine(" | ) | ) ( |___) (___| (____/\\");
guiKonsole.addLine(" |/ |/ \\|\\_______/(_______/");
credits();
System.exit(0);
}
private void sleep(int sekunden) {
// kleine Methode, um redundante try-catches zu vermeiden
try {
Thread.sleep(sekunden*1000);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
public boolean isFertig() {
// erst ausschreiben lassen!
return fertig && guiKonsole.isQueueEmpty();
}
public boolean isFail() {
return fail;
}
public void beenden() {
guiKonsole.setVisible(false);
guiKonsole.clear();
}
}