-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrainSimulator.h
317 lines (280 loc) · 10.6 KB
/
trainSimulator.h
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
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
#include <stdio.h>
#include <string.h>
//#include "APIStasiun.h"
struct apiStasiun{
int jumlahStasiunKeUI;
};
void perhitunganPenumpangNaikTurun(
int jumlahStasiunYangDilewati,
int jumlahOrangKeluar,
int jumlahOrangMasuk,
int jumlahPenumpang);
void gpsLocator(int i);
void trainSimulator(){ //Potongan Program Untuk Masuk ke Game Train Simulator
int jumlahOrangKeluar = 0, jumlahOrangMasuk = 0, i, jumlahPenumpang = 0;
int jumlahStasiunYangDilewati = 0;
char namaStasiun[50];
printf("Selamat datang di permainan Simulator KRL menuju stasiun\n");
printf("|><|><|><|><|><|><|><|><|><|><|><|><|><|><|><|><|><|><|><|\n");
printf(" UNIVERSITAS INDONESIA \n");
printf("|><|><|><|><|><|><|><|><|><|><|><|><|><|><|><|><|><|><|><|\n");
printf("==========================================================\n\n");
printf("Masukkan dari stasiun mana Anda hendak berangkat : ");
scanf("%255[^\n]s",&namaStasiun);
fflush(stdin); //input stasiun
while(jumlahStasiunYangDilewati == 0 || jumlahStasiunYangDilewati > 16){
jumlahStasiunYangDilewati = jumlahStasiun(namaStasiun);
if(jumlahStasiunYangDilewati == 0){
printf("\nMaaf! Anda tidak bisa naik dan turun Stasiun Universitas Indonesia\n");
printf("Masukkan kembali dari stasiun mana Anda hendak berangkat : ");
scanf("%255[^\n]s",&namaStasiun);
fflush(stdin); //input stasiun
}
else if(jumlahStasiunYangDilewati == 17){
printf("\nMaaf! Harap memasukkan stasiun yang berada di jalur Jakarta Kota");
printf(" menuju Bogor\n");
printf("Masukkan kembali dari stasiun mana Anda hendak berangkat : ");
scanf("%255[^\n]s",&namaStasiun);
fflush(stdin); //input stasiun
}
}
printf("\nJumlah stasiun yang dilewati adalah %d stasiun.\n", abs(jumlahStasiunYangDilewati));
perhitunganPenumpangNaikTurun( //pemanggilan fungsi perhitungan jumlah penumpang
jumlahStasiunYangDilewati,
jumlahOrangKeluar,
jumlahOrangMasuk,
jumlahPenumpang
);
}
void perhitunganPenumpangNaikTurun(
int jumlahStasiunYangDilewati,
int jumlahOrangKeluar,
int jumlahOrangMasuk,
int jumlahPenumpang)
{
int jumlahPenumpangAwal, i, bisaTidak;
float totalRevenueKereta = 0;
printf("\nHitunglah berapa orang yang berada di gerbong!");
printf("\nApakah anda bisa berhitung? 1 untuk bisa dan 0 untuk tidak\n");
printf(">> ");
scanf("%d", &bisaTidak);
while(bisaTidak > 1 || bisaTidak < 0){
printf("\nHarap memilih salah satu dari kedua pilihan di atas");
printf("\nApakah anda bisa berhitung? 1 untuk bisa dan 0 untuk tidak\n");
printf(">> ");
scanf("%d", &bisaTidak);
}
bisaTidak == 1 ? printf("\nHasil Perhitungan Anda : ") : printf("\nPerkiraan Jumlah Penumpang : ") ;
scanf("%d", &jumlahPenumpang);
totalRevenueKereta += 3*jumlahPenumpang;
if(jumlahStasiunYangDilewati > 0){
for(i=jumlahStasiunYangDilewati; i>0; i--){
gpsLocator(i);
printf("\nMasukkan berapa orang yang hendak keluar dari gerbong \n");
printf(">> ");
scanf("%d", &jumlahOrangKeluar);
while(jumlahPenumpang < jumlahOrangKeluar){ //error handling saat pemain transit di sejumlah stasiun
printf("\nMaaf! Penumpang gerbong adalah manusia dan bukan hantu\n");
printf("Jumlah penumpang saat ini adalah %d\n", jumlahPenumpang);
printf("\nMasukkan kembali berapa orang yang hendak keluar dari gerbong \n");
printf(">> ");
scanf("%d", &jumlahOrangKeluar);
}
jumlahPenumpang -= jumlahOrangKeluar;
printf("Masukkan berapa orang yang hendak masuk ke dalam gerbong\n");
printf(">> ");
scanf("%d", &jumlahOrangMasuk);
totalRevenueKereta += 3*jumlahOrangMasuk;
jumlahPenumpang += jumlahOrangMasuk;
}
}
else if(jumlahStasiunYangDilewati < 0){
for(i=jumlahStasiunYangDilewati; i<0; i++){
gpsLocator(i);
printf("\nMasukkan berapa orang yang hendak keluar dari gerbong");
printf("\n>> ");
scanf("%d", &jumlahOrangKeluar);
while(jumlahPenumpang < jumlahOrangKeluar){ //error handling saat pemain transit di sejumlah stasiun
printf("\nMaaf! Penumpang kereta adalah manusia dan bukan hantu\n");
printf("Jumlah penumpang saat ini adalah %d\n", jumlahPenumpang);
printf("Masukkan kembali berapa orang yang hendak keluar dari gerbong");
printf("\n>> ");
scanf("%d", &jumlahOrangKeluar);
}
jumlahPenumpang = jumlahPenumpang - jumlahOrangKeluar;
printf("Masukkan berapa orang yang hendak masuk ke dalam gerbong\n");
printf(">> ");
scanf("%d", &jumlahOrangMasuk);
totalRevenueKereta += 3*jumlahOrangMasuk;
jumlahPenumpang += jumlahOrangMasuk;
}
}
printf("\nSelamat Datang di Universitas Indonesia!\n");
printf("Saat sampai di Universitas Indonesia, jumlah penumpang yang berada di dalam gerbong ada %d orang.\n", jumlahPenumpang);
if(totalRevenueKereta<1000){
printf("Revenue dari gerbong ketika anda berada di dalam kereta adalah Rp%.0f.000,00", totalRevenueKereta);
}else if(totalRevenueKereta<10000){
totalRevenueKereta/=1000;
printf("Revenue dari gerbong ketika anda berada di dalam kereta adalah Rp%.3f.000,00", totalRevenueKereta);
}else if(totalRevenueKereta<100000){
totalRevenueKereta/=1000;
printf("Revenue dari gerbong ketika anda berada di dalam kereta adalah Rp%.3f.000,00", totalRevenueKereta);
}
sleep(5);
}
void gpsLocator(int i){ //gps penentu pemain sedang berada di titik lokasi
switch(i){
case 16:
printf("\nSekarang Anda Berada di Stasiun Jakarta Kota.");
break;
case 15:
printf("\nSekarang Anda Berada di Stasiun Jayakarta.");
break;
case 14:
printf("\nSekarang Anda Berada di Stasiun Mangga Besar.");
break;
case 13:
printf("\nSekarang Anda Berada di Stasiun Sawah Besar.");
break;
case 12:
printf("\nSekarang Anda Berada di Stasiun Juanda.");
break;
case 11:
printf("\nSekarang Anda Berada di Stasiun Gondangdia.");
break;
case 10:
printf("\nSekarang Anda Berada di Stasiun Cikini.");
break;
case 9:
printf("\nSekarang Anda Berada di Stasiun Manggarai.");
break;
case 8:
printf("\nSekarang Anda Berada di Stasiun Tebet.");
break;
case 7:
printf("\nSekarang Anda Berada di Stasiun Cawang.");
break;
case 6:
printf("\nSekarang Anda Berada di Stasiun Duren Kalibata.");
break;
case 5:
printf("\nSekarang Anda Berada di Stasiun Pasar Minggu Baru.");
break;
case 4:
printf("\nSekarang Anda Berada di Stasiun Pasar Minggu.");
break;
case 3:
printf("\nSekarang Anda Berada di Stasiun Tanjung Barat.");
break;
case 2:
printf("\nSekarang Anda Berada di Stasiun Lenteng Agung.");
break;
case 1:
printf("\nSekarang Anda Berada di Stasiun Universitas Pancasila.");
break;
case 0:
printf("\nSekarang Anda Berada di Stasiun Universitas Indonesia.");
break;
case -1:
printf("\nSekarang Anda Berada di Stasiun Pondok Cina.");
break;
case -2:
printf("\nSekarang Anda Berada di Stasiun Depok Baru.");
break;
case -3:
printf("\nSekarang Anda Berada di Stasiun Depok.");
break;
case -4:
printf("\nSekarang Anda Berada di Stasiun Citayam.");
break;
case -5:
printf("\nSekarang Anda Berada di Stasiun Bojong Gede.");
break;
case -6:
printf("\nSekarang Anda Berada di Stasiun Cilebut.");
break;
case -7:
printf("\nSekarang Anda Berada di Stasiun Bogor.");
break;
}
}
int jumlahStasiun(char *namaStasiun){ //kumpulan informasi stasiun
int totalStasiun;
struct apiStasiun JakartaKota = {16};
struct apiStasiun Jayakarta = {15};
struct apiStasiun ManggaBesar = {14};
struct apiStasiun SawahBesar = {13};
struct apiStasiun Juanda = {12};
struct apiStasiun Gondangdia = {11};
struct apiStasiun Cikini = {10};
struct apiStasiun Manggarai = {9};
struct apiStasiun Tebet = {8};
struct apiStasiun Cawang = {7};
struct apiStasiun DurenKalibata = {6};
struct apiStasiun PasarMingguBaru = {5};
struct apiStasiun PasarMinggu = {4};
struct apiStasiun TanjungBarat = {3};
struct apiStasiun LentengAgung = {2};
struct apiStasiun UniversitasPancasila = {1};
struct apiStasiun UniversitasIndonesia = {0};
struct apiStasiun PondokCina = {-1};
struct apiStasiun DepokBaru = {-2};
struct apiStasiun Depok = {-3};
struct apiStasiun Citayam = {-4};
struct apiStasiun BojongGede = {-5};
struct apiStasiun Cilebut = {-6};
struct apiStasiun Bogor = {-7};
struct apiStasiun stasiunTidakDikenal = {17};
if(strcmp(namaStasiun, "Jakarta Kota") == 0){
totalStasiun = JakartaKota.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Jayakarta") == 0){
totalStasiun = Jayakarta.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Mangga Besar") == 0){
totalStasiun = ManggaBesar.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Sawah Besar") == 0){
totalStasiun = SawahBesar.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Juanda") == 0){
totalStasiun = Juanda.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Gondangdia") == 0){
totalStasiun = Gondangdia.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Cikini") == 0){
totalStasiun = Cikini.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Manggarai") == 0){
totalStasiun = Manggarai.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Tebet") == 0){
totalStasiun = Tebet.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Cawang") == 0){
totalStasiun = Cawang.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Duren Kalibata") == 0){
totalStasiun = DurenKalibata.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Pasar Minggu Baru") == 0){
totalStasiun = PasarMingguBaru.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Pasar Minggu") == 0){
totalStasiun = PasarMinggu.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Tanjung Barat") == 0){
totalStasiun = TanjungBarat.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Lenteng Agung") == 0){
totalStasiun = LentengAgung.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Universitas Pancasila") == 0){
totalStasiun = UniversitasPancasila.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Universitas Indonesia") == 0){
totalStasiun = UniversitasIndonesia.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Pondok Cina") == 0){
totalStasiun = PondokCina.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Depok Baru") == 0){
totalStasiun = DepokBaru.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Depok") == 0){
totalStasiun = Depok.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Citayam") == 0){
totalStasiun = Citayam.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Bojong Gede") == 0){
totalStasiun = BojongGede.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Cilebut") == 0){
totalStasiun = Cilebut.jumlahStasiunKeUI;
}else if(strcmp(namaStasiun, "Bogor") == 0){
totalStasiun = Bogor.jumlahStasiunKeUI;
}else{
totalStasiun = stasiunTidakDikenal.jumlahStasiunKeUI;
}
return totalStasiun;
}