forked from giovifazi/knossos-bloodbath
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Menu.cpp
155 lines (126 loc) · 8.25 KB
/
Menu.cpp
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
#include "Menu.hpp"
void stampaMenu(std::string x,std::string y,std::string z,std::string w, int n){
int uno=31-x.size(); //variabili che contano il numero di spazi bianchi da stampare
int due=31-y.size();
int tre=31-z.size();
int quattro=31-w.size();
switch(n){
case 0:
std::cout
<<" _____ _____ \n"
<<"(@___@) (@___@)\n"
<<" ║ ║ ║ ║ ║ ║ \n"
<<" ║ ║ ║ ║ ║ ║ \n"
<<" ║ ║ ║╔═══════════════════════════════════╦══════════════════════════════════╗║ ║ ║ \n"
<<" ║ ║ ║║ ║ ║║ ║ ║ \n"
<<" ║ ║ ║║ ║ ↑ ║║ ║ ║ \n"
<<" ║ ║ ║║ "<<x<<std::string(uno,' ')<<"║ w ║║ ║ ║ \n"
<<" ║ ║ ║║ ║ ║║ ║ ║ \n"
<<" ║ ║ ║║ "<<y<<std::string(due,' ')<<"║ 1-conferma ║║ ║ ║ \n"
<<" ║ ║ ║║ "<<z<<std::string(tre,' ')<<"║ ║║ ║ ║ \n"
<<" ║ ║ ║║ "<<w<<std::string(quattro,' ')<<"║ s ║║ ║ ║\n"
<<" ║ ║ ║║ ║ ↓ ║║ ║ ║ \n"
<<" ║ ║ ║║ ║ ║║ ║ ║ \n"
<<" ║_║_║╚═══════════════════════════════════╩══════════════════════════════════╝║_║_║ \n"
<<"(_____) (_____)\n";
break;
case 1:
std::cout
<<" _____ _____ \n"
<<"(@___@) (@___@)\n"
<<" ║ ║ ║ ║ ║ ║ \n"
<<" ║ ║ ║ ║ ║ ║ \n"
<<" ║ ║ ║╔═══════════════════════════════════╦══════════════════════════════════╗║ ║ ║ \n"
<<" ║ ║ ║║ ║ ║║ ║ ║ \n"
<<" ║ ║ ║║ ║ Lo scopo del gioco e' ║║ ║ ║ \n"
<<" ║ ║ ║║ "<<x<<std::string(uno,' ')<<"║ rimanere l'unico ║║ ║ ║ \n"
<<" ║ ║ ║║ ║ giocatore sulla mappa. ║║ ║ ║ \n"
<<" ║ ║ ║║ "<<y<<std::string(due,' ')<<"║ ║║ ║ ║ \n"
<<" ║ ║ ║║ "<<z<<std::string(tre,' ')<<"║ Per farlo dovrai ║║ ║ ║ \n"
<<" ║ ║ ║║ "<<w<<std::string(quattro,' ')<<"║ sopravvivere ai pericoli ║║ ║ ║\n"
<<" ║ ║ ║║ ║ del labirinto. ║║ ║ ║ \n"
<<" ║ ║ ║║ ║ ║║ ║ ║ \n"
<<" ║_║_║╚═══════════════════════════════════╩══════════════════════════════════╝║_║_║ \n"
<<"(_____) (_____)\n";
break;
case 2:
std::cout
<<" _____ _____ \n"
<<"(@___@) (@___@)\n"
<<" ║ ║ ║ ║ ║ ║ \n"
<<" ║ ║ ║ ║ ║ ║ \n"
<<" ║ ║ ║╔═══════════════════════════════════╦══════════════════════════════════╗║ ║ ║ \n"
<<" ║ ║ ║║ ║ ║║ ║ ║ \n"
<<" ║ ║ ║║ ║ ║║ ║ ║ \n"
<<" ║ ║ ║║ "<<x<<std::string(uno,' ')<<"║ Sopravvivi al Minotauro, ║║ ║ ║ \n"
<<" ║ ║ ║║ ║ alle trappole ║║ ║ ║ \n"
<<" ║ ║ ║║ "<<y<<std::string(due,' ')<<"║ del labirinto, ║║ ║ ║ \n"
<<" ║ ║ ║║ "<<z<<std::string(tre,' ')<<"║ agli altri giocatori ║║ ║ ║ \n"
<<" ║ ║ ║║ "<<w<<std::string(quattro,' ')<<"║ e conquisterai la liberta'! ║║ ║ ║\n"
<<" ║ ║ ║║ ║ ║║ ║ ║ \n"
<<" ║ ║ ║║ ║ ║║ ║ ║ \n"
<<" ║_║_║╚═══════════════════════════════════╩══════════════════════════════════╝║_║_║ \n"
<<"(_____) (_____)\n";
break;
}
}
//Stampa il menu per la scelta fra Start e Quit
bool loadMenu()
{
bool start = true; // Cursore per selezionare start o quit
char command;
stampaMenu(" <START>","",""," QUIT", 0);
// Itera finche' non si seleziona qualcosa
while (command != '1')
{
std::cin>>command;
// Cambia posizione cursore in base a command
if (command == 'w')
{ for (int i=0; i<40; i++, std::cout<<"\n"); //spazio fra una schermata e l'altra
stampaMenu(" <START>","",""," QUIT", 0);
start = true;
}
else if (command == 's')
{
for (int i=0; i<40; i++, std::cout<<"\n");
stampaMenu(" START","",""," <QUIT>", 0);
start = false;
}
}
return (start);
}
//Stampa il menu per la selezione del numero di giocatori
int setPlayers()
{
int numberP = 0;
while (numberP < 2) //itero finche' il numero di giocatori e' <= a 2
{
for (int i=0; i<40; i++, std::cout<<"\n"); //spazio fra una schermata e l'altra
stampaMenu("Quanti giocatori?","","[minimo 2 giocatori]","", 1); //stampo il menu
std::cin>> numberP;
if(!std::cin){
std::cin.clear();
std::cin.ignore();
}
}
return (numberP);
}
//Stampa il menu per il nome
std::string setName(int num)
{
std::string name;
std::ostringstream convert;
convert<<num;
std::string stringa = "Giocatore "+convert.str();
std::string stringa2 = "inserisci il tuo nome:";
for (int i=0; i<40; i++, std::cout<<"\n"); //spazio fra una schermata e l'altra
stampaMenu(stringa,"",stringa2,"[max 10 caratteri]", 2);
std::cin>> name;
while (name.size() > lenght) //controllo lunghezza nome
{
for (int i=0; i<40; i++, std::cout<<"\n");
stampaMenu("Nome troppo lungo!","riprova con un nome piu corto","","",2);
std::cin>>name;
}
return name;
}