Advertisement
Guest User

Untitled

a guest
May 3rd, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.99 KB | None | 0 0
  1. /**
  2. Autore: Mirco Springhetti
  3. Consegna: Progetto.
  4. **/
  5.  
  6. #include <stdlib.h>
  7. #include <stdio.h>
  8. #include <math.h>
  9. #include <time.h>
  10. #include <string.h>
  11. #define N 10
  12.  
  13. int tabellauser [N][N];
  14. int tabellacpu [N][N];
  15. int c;
  16.  
  17. void initialize ()
  18. {
  19. int i,j;
  20. for (i=0;i<N;i++)
  21. {
  22. for (j=0;j<N;j++)
  23. {
  24. tabellauser[i][j]=0;
  25. tabellacpu[i][j]=0;
  26.  
  27. }
  28. }
  29. }
  30.  
  31. void debugprint()
  32. {
  33. int i,j,s=1;
  34. system("clear");
  35. printf("\t\t\t 1 2 3 4 5 6 7 8 9 10\n ╔════════════════════╗\n");
  36. for (i=0;i<N;i++)
  37. {
  38. printf("\t\t %d ║",s);
  39. for (j=0;j<N;j++)
  40. {
  41. if(tabellacpu[i][j]==1) printf ("■ ");
  42. else printf ("□ ");
  43. }
  44. s++;
  45. printf ("║\n");
  46. }
  47. printf (" ╚════════════════════╝");
  48. }
  49.  
  50. void insertcoords()
  51. {
  52. int x,g,n,y,i;
  53. char dir;
  54. n=4;
  55. g=2;
  56. for(c=0;c<n;c++)
  57. {
  58. start:
  59. //coordinata X
  60. printf ("\n\nInserire la coordinata X della nave da dimensione %d numero %d: ",g,c+1);
  61. scanf("%d",&y);
  62. if (y>N||y<1)
  63. {
  64. do
  65. {
  66. printf("Valore non valido(Valore dev'essere maggiore di 0 e minore di 10)");
  67. scanf("%d",&y);
  68. }
  69. while (y>N||y<1);
  70. }
  71.  
  72. //coordinata Y
  73. printf ("\n\nInserire la coordinata Y della nave di dimensione %d numero %d: ",g,c+1);
  74. scanf("%d",&x);
  75. getchar();
  76. //Guarda se il carattere inserito è una direzione cardinale
  77. if (x>N||x<1)
  78. {
  79. do
  80. {
  81. printf("Valore non valido(Valore dev'essere maggiore di 0 e minore di 10)");
  82. scanf("%d",&x);
  83. }
  84. while (x>N||x<1);
  85. }
  86.  
  87. //Direzione della barca
  88. printf ("\n\nInserire la direzione in cui si espanderà la barca [N(ord),S(ud),E(st),O(vest)] ");
  89. scanf ("%c",&dir);
  90. getchar();
  91. if (dir!='n'&& dir!='N'&&dir!='s'&& dir!='S'&&dir!='e'&& dir!='E'&&dir!='o'&& dir!='O')
  92. {
  93. do
  94. {
  95. printf("\nValore invalido(Valore dev'essere la prima lettera di una direzione cardinale\n");
  96. scanf("%c",&dir);
  97. }
  98. while (dir!='n'&& dir!='N'&&dir!='s'&& dir!='S'&&dir!='e'&& dir!='E'&&dir!='o'&& dir!='O');
  99. }
  100.  
  101. //Evitare che le barche si sovrappongono.
  102. if (tabellauser[x-1][y-1]==1)
  103. {
  104. printf ("\nErrore: Le barche si sovrappongono.\n");
  105. goto start;
  106. }
  107. for (i=1;i<g;i++)
  108. {
  109. if(dir=='n'||dir=='N')
  110. {
  111. if(tabellauser[x-1-i][y-1]==1)
  112. {
  113. printf ("\nErrore: Le barche si sovrappongono.\n");
  114. goto start;
  115. }
  116. }
  117. if(dir=='s'||dir=='S')
  118. {
  119. if(tabellauser[x-1+i][y-1]==1)
  120. {
  121. printf ("\nErrore: Le barche si sovrappongono.\n");
  122. goto start;
  123. }
  124. }
  125. if(dir=='e'||dir=='E')
  126. {
  127. if(tabellauser[x-1][y-1+i]==1)
  128. {
  129. printf ("\nErrore: Le barche si sovrappongono.\n");
  130. goto start;
  131. }
  132. }
  133. if(dir=='o'||dir=='O')
  134. {
  135. if(tabellauser[x-1][y-1-i]==1)
  136. {
  137. printf ("\nErrore: Le barche si sovrappongono.\n");
  138. goto start;
  139. }
  140. }
  141. }
  142. //Evitare che le barche siano fuori dalle coordinate.
  143. for (i=1;i<g;i++)
  144. {
  145. if(dir=='n'||dir=='N')
  146. {
  147. if(x-g<0)
  148. {
  149. printf ("\nErrore: La barca è fuori dalle coordinate.\n");
  150. goto start;
  151. }
  152. }
  153. if(dir=='s'||dir=='S')
  154. {
  155. if(x-1+g>10)
  156. {
  157. printf ("\nErrore: La barca è fuori dalle coordinate.\n");
  158. goto start;
  159. }
  160. }
  161. if(dir=='e'||dir=='E')
  162. {
  163. if(y-1+g>10)
  164. {
  165. printf ("\nErrore: La barca è fuori dalle coordinate.\n");
  166. goto start;
  167. }
  168. }
  169. if(dir=='o'||dir=='O')
  170. {
  171. if(y-g<0)
  172. {
  173. printf ("\nErrore: La barca è fuori dalle coordinate.\n");
  174. goto start;
  175. }
  176. }
  177. }
  178.  
  179. //Se tutto è andato a buon fine,Inserimento nella matrice.
  180. tabellauser[x-1][y-1]=1;
  181. switch (dir) {
  182. case 'n':
  183. for (i=1;i<g;i++)
  184. {
  185. tabellauser[x-1-i][y-1]=1;
  186. }
  187. break;
  188. case 'N':
  189. for (i=1;i<g;i++)
  190. {
  191. tabellauser[x-1-i][y-1]=1;
  192. }
  193. break;
  194. case 's':
  195. for (i=1;i<g;i++)
  196. {
  197. tabellauser[x-1+i][y-1]=1;
  198. }
  199. break;
  200. case 'S':
  201. for (i=1;i<g;i++)
  202. {
  203. tabellauser[x-1+i][y-1]=1;
  204. }
  205. break;
  206. case 'e':
  207. for (i=1;i<g;i++)
  208. {
  209. tabellauser[x-1][y-1+i]=1;
  210. }
  211. break;
  212. case 'E':
  213. for (i=1;i<g;i++)
  214. {
  215. tabellauser[x-1][y-1+i]=1;
  216. }
  217. break;
  218. case 'o':
  219. for (i=1;i<g;i++)
  220. {
  221. tabellauser[x-1][y-1-i]=1;
  222. }
  223. break;
  224. case 'O':
  225. for (i=1;i<g;i++)
  226. {
  227. tabellauser[x-1][y-1-i]=1;
  228. }
  229. break;
  230. }
  231. debugprint(); //Stampa della matrice.
  232. }
  233. //Aumento grandezza barca, diminuzione numero barche da inserire
  234. g++;
  235. n--;
  236. c=0;
  237. if (n==0) return 0; //Guarda se il numero di barche da inserire è 0 (L'ultima barca da 5 è stata inserita). Se sì, termina la funzione.
  238. else goto start; //Se no, ritorna a start, ovvero l'inserimento delle nuove coordinate.
  239. }
  240.  
  241. void insertcoordscpu()
  242. {
  243. int x,g,n,y,i,dir;
  244. n=4;
  245. g=2;
  246. srand(time(NULL));
  247. for(c=0;c<n;c++)
  248. {
  249. start:
  250. //coordinata X
  251. y=rand()%9+1;
  252. //coordinata Y
  253. x=rand()%9+1;
  254. //direzione della barca
  255. dir=rand()%3+1;
  256. //Evitare che le barche si sovrappongono.
  257. if (tabellacpu[x-1][y-1]==1)
  258. {
  259. goto start;
  260. }
  261. for (i=1;i<g;i++)
  262. {
  263. if(dir==1)
  264. {
  265. if(tabellacpu[x-1-i][y-1]==1)
  266. {
  267. goto start;
  268. }
  269. }
  270. if(dir==3)
  271. {
  272. if(tabellacpu[x-1+i][y-1]==1)
  273. {
  274. goto start;
  275. }
  276. }
  277. if(dir==2)
  278. {
  279. if(tabellacpu[x-1][y-1+i]==1)
  280. {
  281. goto start;
  282. }
  283. }
  284. if(dir==4)
  285. {
  286. if(tabellacpu[x-1][y-1-i]==1)
  287. {
  288. goto start;
  289. }
  290. }
  291. }
  292. //Evitare che le barche siano fuori dalle coordinate.
  293. for (i=1;i<g;i++)
  294. {
  295. if(dir==1)
  296. {
  297. if(x-g<0)
  298. {
  299. goto start;
  300. }
  301. }
  302. if(dir==3)
  303. {
  304. if(x-1+g>10)
  305. {
  306. goto start;
  307. }
  308. }
  309. if(dir==2)
  310. {
  311. if(y-1+g>10)
  312. {
  313. goto start;
  314. }
  315. }
  316. if(dir==4)
  317. {
  318. if(y-g<0)
  319. {
  320. goto start;
  321. }
  322. }
  323. }
  324.  
  325. //Se tutto è andato a buon fine,Inserimento nella matrice.
  326. tabellacpu[x-1][y-1]=1;
  327. switch (dir) {
  328. case 1:
  329. for (i=1;i<g;i++)
  330. {
  331. tabellacpu[x-1-i][y-1]=1;
  332. }
  333. break;
  334. case 3:
  335. for (i=1;i<g;i++)
  336. {
  337. tabellacpu[x-1+i][y-1]=1;
  338. }
  339. break;
  340. case 2:
  341. for (i=1;i<g;i++)
  342. {
  343. tabellacpu[x-1][y-1+i]=1;
  344. }
  345. break;
  346. case 4:
  347. for (i=1;i<g;i++)
  348. {
  349. tabellacpu[x-1][y-1-i]=1;
  350. }
  351. break;
  352. }
  353. }
  354. //Aumento grandezza barca, diminuzione numero barche da inserire
  355. g++;
  356. n--;
  357. c=0;
  358. system("clear");
  359. if (n==0)
  360. {
  361. debugprint(); //Stampa della matrice.
  362. return 0; //Guarda se il numero di barche da inserire è 0 (L'ultima barca da 5 è stata inserita). Se sì, termina la funzione.
  363. }
  364. else goto start; //Se no, ritorna a start, ovvero l'inserimento delle nuove coordinate.
  365.  
  366. }
  367.  
  368.  
  369. int main (){
  370.  
  371. initialize(); //rende tutte le variabili della matrice 0.
  372. debugprint(); //stampa la matrice per la prima volta.
  373. insertcoordscpu();
  374. return 0;
  375.  
  376. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement