corrà 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. sinkeynes.cpp : Defines the entry point for the console application.
  2. //
  3. /*
  4. simula la costruzione di una città
  5. la città è definita da una matrice
  6. ogni luogo è caratterizzato da una valore , un tipo di terreno e da un numero di occupanti il giocatore ha un buget iniziale,
  7. il gioco si avvia crea una città base inizzializzando a caso il 50% dei suoi luoghi
  8. il giocatore può acquistare un nuovo territorio, visualizzare la mappa della città e dei suoi terreni premendo un tasto può passare al turno
  9. successivo che comprende il pagamento delle tasse (dipendente dalla proprierà e gli incassi guadagnat iin base agli abitanti delle sue prorpietà
  10. */
  11. #include "stdafx.h"
  12. #include <iostream>
  13. #include <time.h>
  14. #define NR 20
  15. #define NC 10
  16. using namespace std;
  17. typedef struct {
  18. float val = 0;
  19. char tipo = 0;
  20. int occupanti = 0;
  21. bool libero=true;
  22. }LUOGO;
  23. void carica(LUOGO matr[NR][NC],float *credito);
  24. void inizio();
  25. int inizializzazione(LUOGO matr[NR][NC]);
  26. void visualizza(LUOGO matr[NR][NC]);
  27. void tasse(LUOGO matr[NR][NC], float *credito);
  28. int main()
  29. {
  30. LUOGO matr[NR][NC];
  31. inizio();
  32. system("pause");
  33. return 0;
  34. }
  35. void inizio() {
  36. int scelta = 0;
  37. LUOGO matr[NR][NC];
  38. LUOGO matr1[NR][NC];
  39. printf("benvenuti in slimcamp!!!!!\n");
  40. printf(" potete decire se iniziare una nuova partita o continuare quella esistente\n");
  41. printf("0.uscire dal game\n");
  42. printf("1.iniziare una nuova partita\n");
  43. printf("2.continuare la partita gia iniziaa in precedenza\n");
  44. scanf_s("%d", &scelta, sizeof(int));
  45. switch (scelta) {
  46. case 0:
  47. printf("arrivederci e lasciate la mancia\n");
  48. system("pause");
  49. break;
  50. case 1:
  51. inizializzazione(matr1);
  52. if (inizializzazione(matr1) == 0) {
  53. printf("arrivederci");
  54. break;
  55. }
  56. break;
  57. //case 2://non so se va fatto
  58. //break;
  59. default:
  60. printf("numero non valido\n");
  61. }
  62. }
  63. int inizializzazione(LUOGO matr[NR][NC]) {
  64. int turno = 0;
  65. int x = 0;
  66. int y = 0;
  67. float credito;
  68. int scelta=0;
  69. credito = 60.0;
  70. do{
  71. printf("ciao, ora hai un credito di %f e puoi acquistare solo fattorie\n", credito);
  72. visualizza(matr);
  73. printf("\n");
  74. printf("1.un casa occupa 4 posti, e ha un costo di 20§, occupa 4 persone, guadagnio totale 15§\n");
  75. printf("inserire le cordiante x,y \n");
  76. printf("x:\n");
  77. scanf_s("%d", &x, sizeof(int));
  78. printf("y:\n");
  79. scanf_s("%d", &y, sizeof(int));
  80. if (credito == 20) {
  81. matr[x][y].tipo = '▲';
  82. matr[x + 1][y].tipo = '▲';
  83. matr[x][y - 1].tipo = '▲';
  84. matr[x + 1][y - 1].tipo = '▲';
  85. matr[x][y].val = 5;
  86. matr[x + 1][y].val = 5;
  87. matr[x][y - 1].val = 5;
  88. matr[x + 1][y - 1].val = 5;
  89. matr[x][y].occupanti = 1;
  90. matr[x + 1][y].occupanti = 1;
  91. matr[x][y - 1].occupanti = 1;
  92. matr[x + 1][y - 1].occupanti = 1;
  93. matr[x][y].libero = false;
  94. matr[x + 1][y].libero = false;
  95. matr[x][y - 1].libero = false;
  96. matr[x + 1][y - 1].libero = false;
  97. credito -= 20;
  98. }
  99. } while ((turno!=0)||(credito != 20));
  100. turno++;//turno
  101. bool risposta = false;
  102. int r = 0;
  103. do {
  104. printf("se vuoi continuare il gioco premi 1");
  105. printf("se vuoi uscire dal gioco premi 2");
  106. scanf_s("%d", &r, sizeof(int));
  107. if (r == 1) {
  108. tasse(matr, &credito);
  109. printf("%f", credito);
  110. system("cls");
  111. printf("se vuoi inserire edifici premi 1\n");
  112. printf("se vuoi andare avanti senza inserire niente premi 0\n");
  113. scanf_s("%d", &scelta, sizeof(int));
  114. switch (scelta) {
  115. case 0:
  116. turno++;
  117. break;
  118. case 1:
  119. carica(matr, &credito);
  120. break;
  121. default:
  122. printf("valore non valido");
  123. }
  124. risposta = false;
  125. }
  126. if (r == 2) {
  127. risposta = true;
  128. }
  129. } while (risposta != false);
  130. int o = 0;
  131. printf("vuoi uscire dal gioco?,\n se si premi 1 se no premi 3\n");
  132. scanf_s("%d", &o, sizeof(int));
  133. if (o == 1) {
  134. return 0;
  135. }
  136. }
  137. void visualizza(LUOGO matr[NR][NC]){
  138. for (int i = 0; i < NR; i++) {
  139. for (int j = 0; j < NC; j++) {
  140. printf("%c", matr[i][j].tipo);
  141. }
  142. }
  143. }
  144. void tasse(LUOGO matr[NR][NC], float *credito) {
  145. for (int x = 0; x < NR; x++) {
  146. for (int y = 0; y < NC; y++) {
  147. if ((matr[x][y].tipo == '▲') && (matr[x + 1][y].tipo == '▲') && (matr[x][y - 1].tipo == '▲') && (matr[x + 1][y - 1].tipo == '▲')) {
  148. credito = credito + 15;
  149. }
  150. if ((matr[x][y].tipo == '▄') && (matr[x + 1][y].tipo == '▄') && (matr[x + 2][y].tipo == '▄') && (matr[x][y - 1].tipo == '▄') && (matr[x + 1][y - 1].tipo == '▄') && (matr[x + 2][y - 1].tipo == '▄')) {
  151. credito = credito + 25;
  152. }
  153. if ((matr[x][y].tipo == '█') && (matr[x + 1][y].tipo == '█') && (matr[x + 2][y].tipo == '█') && (matr[x][y - 1].tipo == '█') && (matr[x][y - 2].tipo == '█') && (matr[x + 1][y - 1].tipo == '█') && (matr[x + 2][y - 1].tipo == '█') && (matr[x + 1][y - 2].tipo == '█') && (matr[x + 2][y - 2].tipo == '█')) {
  154. credito = credito + 35;
  155. }
  156. }
  157. }
  158. }
  159. void carica(LUOGO matr[NR][NC],float *credito) {
  160. int x = 0;
  161. int y = 0;
  162. // valore tipo ok
  163. // § combinazione alt+245
  164. int scelta = 0;
  165. bool trovato = false;
  166. printf("1.un casa occupa 4 posti, e ha un costo di 20§, occupa 4 persone, guadagnio totale 15§\n");
  167. printf("2.una industria occupa 6 posti costo 30§, occupa 15 persone con un guadagno di 25§\n");
  168. printf("3.una fattoria occupa 9 posti costo 45§,occupa 20 persone con un guadagno di 35§\n");
  169. printf("inserire il tipo di edificio\n");
  170. scanf_s("%d", &scelta, sizeof(int)); // tipo di edificio
  171. do {
  172. printf(" tenedo a mente quello detto qui sopra\n inserire le cordinate del terreno\n");
  173. printf("x\n");
  174. scanf_s("%d", &x, sizeof(int));
  175. printf("y\n");
  176. scanf_s("%d", &y, sizeof(int));
  177. if (matr[x][y].libero == true) {
  178. trovato = true;
  179. }
  180. } while (trovato !=true);
  181. if (scelta == 1) {
  182. if (*credito >= 20) {
  183. matr[x][y].tipo = '▲';
  184. matr[x + 1][y].tipo = '▲';
  185. matr[x][y - 1].tipo = '▲';
  186. matr[x + 1][y - 1].tipo = '▲';
  187. matr[x][y].val = 5;
  188. matr[x + 1][y].val = 5;
  189. matr[x][y - 1].val = 5;
  190. matr[x + 1][y - 1].val = 5;
  191. matr[x][y].occupanti = 1;
  192. matr[x + 1][y].occupanti = 1;
  193. matr[x][y - 1].occupanti = 1;
  194. matr[x + 1][y - 1].occupanti = 1;
  195. matr[x][y].libero = false;
  196. matr[x + 1][y].libero = false;
  197. matr[x][y - 1].libero = false;
  198. matr[x + 1][y - 1].libero = false;
  199. *credito -= 20;
  200. }
  201. else
  202. printf("credito insufficente\n");
  203. }
  204. if (scelta == 2) {
  205. if (*credito >= 30) {
  206. // tipo
  207. matr[x][y].tipo = '▄';
  208. matr[x + 1][y].tipo = '▄';
  209. matr[x + 2][y].tipo = '▄';
  210. matr[x][y - 1].tipo = '▄';
  211. matr[x + 1][y - 1].tipo = '▄';
  212. matr[x + 2][y - 1].tipo = '▄';
  213. //val
  214. matr[x][y].val = 5;
  215. matr[x + 1][y].val = 5;
  216. matr[x + 2][y].val = 5;
  217. matr[x][y - 1].val = 5;
  218. matr[x + 1][y - 1].val = 5;
  219. matr[x + 2][y - 1].val = 5;
  220. // occupanti
  221. matr[x][y].occupanti = 2;
  222. matr[x + 1][y].occupanti = 3;
  223. matr[x + 2][y].occupanti = 3;
  224. matr[x][y - 1].occupanti = 2;
  225. matr[x + 1][y - 1].occupanti = 3;
  226. matr[x + 2][y - 1].occupanti = 2;
  227. // occupato
  228. matr[x][y].libero = false;
  229. matr[x + 1][y].libero = false;
  230. matr[x + 2][y].libero = false;
  231. matr[x][y - 1].libero = false;
  232. matr[x + 1][y - 1].libero = false;
  233. matr[x + 2][y - 1].libero = false;
  234. *credito -= 30;
  235. }
  236. printf("credito insufficente\n");
  237. }
  238. if (scelta == 3) {
  239. if (*credito >= 45) {
  240. //tipo
  241. matr[x][y].tipo = '█';
  242. matr[x + 1][y].tipo = '█';
  243. matr[x + 2][y].tipo = '█'; //prima riga
  244. matr[x][y - 1].tipo = '█';
  245. matr[x][y - 2].tipo = '█';
  246. matr[x + 1][y - 1].tipo = '█';
  247. matr[x + 2][y - 1].tipo = '█';
  248. matr[x + 1][y - 2].tipo = '█';
  249. matr[x + 2][y - 2].tipo = '█';
  250. //valore
  251. matr[x][y].val = 5;
  252. matr[x + 1][y].val = 5;
  253. matr[x + 2][y].val = 5;
  254. matr[x][y - 1].val = 5;
  255. matr[x][y - 2].val = 5;
  256. matr[x + 1][y - 1].val = 5;
  257. matr[x + 2][y - 1].val = 5;
  258. matr[x + 1][y - 2].val = 5;
  259. matr[x + 2][y - 2].val = 5;
  260. // occupanti
  261. matr[x][y].occupanti = 2;
  262. matr[x + 1][y].occupanti = 2;
  263. matr[x + 2][y].occupanti = 2;
  264. matr[x][y - 1].occupanti = 3;
  265. matr[x][y - 2].occupanti = 2;
  266. matr[x + 1][y - 1].occupanti = 2;
  267. matr[x + 2][y - 1].occupanti = 3;
  268. matr[x + 1][y - 2].occupanti = 2;
  269. matr[x + 2][y - 2].occupanti = 2;
  270. matr[x][y].libero = false;
  271. matr[x + 1][y].libero = false;
  272. matr[x + 2][y].libero = false;//prima riga
  273. matr[x][y - 1].libero = false;
  274. matr[x][y - 2].libero = false;
  275. matr[x + 1][y - 1].libero = false;
  276. matr[x + 2][y - 1].libero = false;
  277. matr[x + 1][y - 2].libero = false;
  278. matr[x + 2][y - 2].libero = false;
  279. *credito -= 45;
  280. }
  281. printf("credito insufficente \n");
  282. }
  283. }