Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.54 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5. #include <ctype.h>
  6.  
  7. int **alokaciaNapln(){
  8. int i,j,**pole;
  9. pole=(int **)malloc(12*sizeof(int*));
  10. for(i=0;i<12;i++){
  11. pole[i]=(int *)malloc(12*sizeof(int));
  12. }
  13. for(i=0;i<12;i++){
  14. pole[i][0]=8;
  15. pole[0][i]=8;
  16. pole[11][i]=8;
  17. pole[i][11]=8;
  18. }
  19. for(i=1;i<11;i++){
  20. for(j=1;j<11;j++){
  21. pole[i][j]=0;
  22. }
  23. }
  24. return pole;
  25. }
  26.  
  27. int volneMiesto(int **pole,int velkostLode,int radStlp, int pozicia,int orientacia){
  28. int i;
  29. for(i=0;i<velkostLode;i++){
  30. if(orientacia){
  31. if(pole[radStlp+1][pozicia+1+i] != 0){
  32. return 0;
  33. }
  34. }
  35. else{
  36. if(pole[radStlp+1+i][pozicia+1] != 0) {
  37. return 0;
  38. }
  39. }
  40. }
  41.  
  42. return 1;
  43. }
  44.  
  45. int **umiestnenieLode(int **hraciaplocha,int velkostLode){
  46. int radStlp,pozicia,i,orientacia,koniecCyklu=0;
  47. int generovaniePozicie=11-velkostLode;
  48. while(!koniecCyklu){
  49. orientacia=rand() % 2;
  50. if(orientacia){
  51. radStlp=rand() % 10;
  52. pozicia=rand() % generovaniePozicie;
  53. //horizontalne
  54. if(volneMiesto(hraciaplocha,velkostLode,radStlp,pozicia,orientacia)){
  55.  
  56. hraciaplocha[radStlp+1][pozicia]=8;
  57. hraciaplocha[radStlp][pozicia]=8;
  58. hraciaplocha[radStlp+2][pozicia]=8;
  59.  
  60. for(i=0;i<velkostLode;i++){
  61. hraciaplocha[radStlp+1][pozicia+i+1]=1;
  62. hraciaplocha[radStlp][pozicia+i+1]=8;
  63. hraciaplocha[radStlp+2][pozicia+i+1]=8;
  64. }
  65. hraciaplocha[radStlp+1][pozicia+i+1]=8;
  66. hraciaplocha[radStlp][pozicia+i+1]=8;
  67. hraciaplocha[radStlp+2][pozicia+i+1]=8;
  68. koniecCyklu++;
  69. }
  70. }
  71.  
  72. else {
  73. //vertikalne
  74. radStlp=rand() % generovaniePozicie;
  75. pozicia=rand() % 10;
  76. if(volneMiesto(hraciaplocha,velkostLode,radStlp,pozicia,orientacia)){
  77. hraciaplocha[radStlp][pozicia+1]=8;
  78. hraciaplocha[radStlp][pozicia]=8;
  79. hraciaplocha[radStlp][pozicia+2]=8;
  80.  
  81. for(i=0;i<velkostLode;i++){
  82. hraciaplocha[radStlp+i+1][pozicia+1]=1;
  83. hraciaplocha[radStlp+1+i][pozicia]=8;
  84. hraciaplocha[radStlp+1+i][pozicia+2]=8;
  85. }
  86. hraciaplocha[radStlp+1+i][pozicia+1]=8;
  87. hraciaplocha[radStlp+1+i][pozicia]=8;
  88. hraciaplocha[radStlp+1+i][pozicia+2]=8;
  89. koniecCyklu++;
  90. }
  91. }
  92. }
  93. return hraciaplocha;
  94. }
  95.  
  96. void kontrolnyVypis(int **hraciaplocha){
  97. int i,j;
  98. printf(" ");
  99. for(i='A';i<('A'+10);i++){
  100. printf(" %c",(char)i);
  101. }
  102. for(i=0;i<12;i++){
  103. for(j=0;j<12;j++){
  104. if(hraciaplocha[i][j]!=8){
  105. printf(" %d",hraciaplocha[i][j]);
  106. }
  107. else{
  108. printf(" ");
  109. }
  110. }
  111. printf("\n");
  112. }
  113. printf("\n");
  114. }
  115.  
  116. int **start(void){
  117. int **hraciaplocha,pocLodi;
  118. hraciaplocha=alokaciaNapln();
  119. hraciaplocha=umiestnenieLode(hraciaplocha,5);
  120.  
  121. for(pocLodi=0;pocLodi<2;pocLodi++){
  122. hraciaplocha=umiestnenieLode(hraciaplocha,4);
  123. }
  124.  
  125. for(pocLodi=0;pocLodi<3;pocLodi++){
  126. hraciaplocha=umiestnenieLode(hraciaplocha,3);
  127. }
  128.  
  129. for(pocLodi=0;pocLodi<4;pocLodi++){
  130. hraciaplocha=umiestnenieLode(hraciaplocha,2);
  131. }
  132. //kontrola lodi
  133. //kontrolnyVypis(hraciaplocha);
  134. return hraciaplocha;
  135. }
  136.  
  137. void vypis(int **pole){
  138. int i,j;
  139. printf(" ");
  140. for(i='A';i<('A'+10);i++){
  141. printf(" %c",(char)i);
  142. }
  143. printf("\n");
  144. for(i=0;i<10;i++){
  145. if(i!=9){
  146. printf(" ");
  147. }
  148. printf(" %d",i+1);
  149. for(j=0;j<10;j++){
  150. printf(" -");
  151. }
  152. printf("\n");
  153. }
  154. }
  155.  
  156. void vypisHracichPloch(int **hraciaplocha,int **pocitac,int endGameCount,int pocitacZasahy,int vystrely){
  157. int i,j,s,k;
  158. printf(" ");
  159. for(i='A';i<('A'+10);i++){
  160. printf(" %c",(char)i);
  161. }
  162. printf(" ");
  163. for(i='A';i<('A'+10);i++){
  164. printf(" %c",(char)i);
  165. }
  166. printf(" ");
  167. for(i='A';i<('A'+10);i++){
  168. printf(" %c",(char)i);
  169. }
  170. printf("\n");
  171. for(i=0;i<10;i++){
  172. if(i!=9){
  173. printf(" ");
  174. }
  175. printf(" %d",i+1);
  176. for(j=0;j<10;j++){
  177. if(hraciaplocha[i+1][j+1]==2){
  178. printf(" X");
  179. }
  180. if(hraciaplocha[i+1][j+1]==3){
  181. printf(" O");
  182. }
  183. if(hraciaplocha[i+1][j+1]==0 || hraciaplocha[i+1][j+1]==8 || hraciaplocha[i+1][j+1]==1){
  184. printf(" -");
  185. }
  186.  
  187. }
  188. printf(" ");
  189. if(i!=9){
  190. printf(" ");
  191. }
  192. printf(" %d",i+1);
  193. for(k=0;k<10;k++){
  194. if(pocitac[i+1][k+1]==2){
  195. printf(" X");
  196. }
  197. if(pocitac[i+1][k+1]==3){
  198. printf(" O");
  199. }
  200. if(pocitac[i+1][k+1]==0 ||pocitac[i+1][k+1]==8 || pocitac[i+1][k+1]==1){
  201. printf(" -");
  202. }
  203. }
  204.  
  205. printf(" ");
  206. if(i!=9){
  207. printf(" ");
  208. }
  209. printf(" %d",i+1);
  210. for(s=0;s<10;s++){
  211. if(pocitac[i+1][s+1]==2){
  212. printf(" X");
  213. }
  214. if(pocitac[i+1][s+1]==3){
  215. printf(" O");
  216. }
  217. if(pocitac[i+1][s+1]==0 ||pocitac[i+1][s+1]==8){
  218. printf(" -");
  219. }
  220. if(pocitac[i+1][s+1]==1){
  221. printf(" #");
  222. }
  223. }
  224. printf("\n");
  225. }
  226. printf("Pocet trafenych cielov: %d/30 Pocet zasahov protihraca: %d\nPocet vystrelov: %d\n",endGameCount,pocitacZasahy,vystrely);
  227. }
  228.  
  229. int **pocitacVystrely(int **pocitac,int *pocitacZasahy){
  230. int pocitacRiad=rand() % 10;
  231. int pocitacStlpec=rand() % 10;
  232. while(pocitac[pocitacRiad+1][pocitacStlpec+1]==2 || pocitac[pocitacRiad+1][pocitacStlpec+1]==3){
  233. pocitacRiad=rand() % 10;
  234. pocitacStlpec=rand() % 10;
  235. }
  236.  
  237. if (pocitac[pocitacRiad+1][pocitacStlpec+1]==1){
  238. pocitac[pocitacRiad+1][pocitacStlpec+1]=2;
  239. (*pocitacZasahy)++;
  240. }
  241. else{
  242. pocitac[pocitacRiad+1][pocitacStlpec+1]=3;
  243. }
  244. return pocitac;
  245. }
  246.  
  247. void hra(){
  248. int **hraciaplocha,**pocitac;
  249. int surRiadok,surIntStlpec,endGameCount=0,vstupy=0,vystrely=0,pocitacZasahy=0;
  250. char surStlpec;
  251. hraciaplocha=start();
  252. pocitac=start();
  253. //system("cls");
  254. vypis(hraciaplocha);
  255. while(endGameCount!=30){
  256. printf("Zadaj suradnice v tvare [Pismeno Cislo]\n");
  257. while(vstupy==0){
  258. scanf("\n");
  259. scanf("%c",&surStlpec);
  260. surStlpec=toupper(surStlpec);
  261. surIntStlpec=((int)surStlpec)-64;
  262. while(surIntStlpec>10 || surIntStlpec<1){
  263. printf("Zadal si nespravne pismeno\nOpakuj vstup pismena!\n");
  264. scanf("\n");
  265. scanf("%c",&surStlpec);
  266. surStlpec=toupper(surStlpec);
  267. surIntStlpec=((int)surStlpec)-64;
  268. }
  269. scanf("%d",&surRiadok);
  270. while(surRiadok>10 || surRiadok<1){
  271. printf("Zadal si nespravne cislo riadku\nOpakuj vstup cisla!\n");
  272. scanf("%d",&surRiadok);
  273. }
  274. if (hraciaplocha[surRiadok][surIntStlpec]==2 || hraciaplocha[surRiadok][surIntStlpec]==3) {
  275. printf("Tento vstup si uz pred tym zadaval, zadaj novy vstup!\n");
  276. }
  277. else {
  278. vstupy++;
  279. }
  280. }
  281. vstupy=0;
  282. vystrely++;
  283. if (hraciaplocha[surRiadok][surIntStlpec]==1){
  284. hraciaplocha[surRiadok][surIntStlpec]=2;
  285. endGameCount++;
  286. }
  287. else{
  288. hraciaplocha[surRiadok][surIntStlpec]=3;
  289. }
  290. pocitacVystrely(pocitac,&pocitacZasahy);
  291. system("cls");
  292. vypisHracichPloch(hraciaplocha,pocitac,endGameCount,pocitacZasahy,vystrely);
  293.  
  294. if(pocitacZasahy==30){
  295. endGameCount=30;
  296. }
  297. }
  298. if(pocitacZasahy!=30){
  299. printf("Vyhral si!!!\n");
  300. }
  301. else{
  302. printf("Prehral si, skus to znova...\n");
  303. }
  304. }
  305.  
  306. int main(){
  307. int i,k,s,j,whilepoc=0,endGameCount=0,surRiadok,surIntStlpec,vystrely=0,pocitacRiad,pocitacStlpec,pocitacZasahy=0,vstupy=0;
  308. char znak,surStlpec;
  309. int **hraciaplocha,**pocitac;
  310. srand((unsigned int) time(NULL));
  311. while (whilepoc==0){
  312. printf("Stlac S pre start hry.\nHru ukoncis stlacenim K.\n");
  313. scanf("\n%c",&znak);
  314. switch (znak){
  315. case 'S':
  316. case 's':
  317. hra();
  318. break;
  319.  
  320. case 'k':
  321. case 'K':
  322. whilepoc++;
  323. break;
  324. }
  325. }
  326.  
  327. for (i=0;i<12;i++){
  328. free(hraciaplocha[i]);
  329. }
  330.  
  331. return 0;
  332. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement