Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include <ctype.h>
- int **alokaciaNapln(){
- int i,j,**pole;
- pole=(int **)malloc(12*sizeof(int*));
- for(i=0;i<12;i++){
- pole[i]=(int *)malloc(12*sizeof(int));
- }
- for(i=0;i<12;i++){
- pole[i][0]=8;
- pole[0][i]=8;
- pole[11][i]=8;
- pole[i][11]=8;
- }
- for(i=1;i<11;i++){
- for(j=1;j<11;j++){
- pole[i][j]=0;
- }
- }
- return pole;
- }
- int volneMiesto(int **pole,int velkostLode,int radStlp, int pozicia,int orientacia){
- int i;
- for(i=0;i<velkostLode;i++){
- if(orientacia){
- if(pole[radStlp+1][pozicia+1+i] != 0){
- return 0;
- }
- }
- else{
- if(pole[radStlp+1+i][pozicia+1] != 0) {
- return 0;
- }
- }
- }
- return 1;
- }
- int **umiestnenieLode(int **hraciaplocha,int velkostLode){
- int radStlp,pozicia,i,orientacia,koniecCyklu=0;
- int generovaniePozicie=11-velkostLode;
- while(!koniecCyklu){
- orientacia=rand() % 2;
- if(orientacia){
- radStlp=rand() % 10;
- pozicia=rand() % generovaniePozicie;
- //horizontalne
- if(volneMiesto(hraciaplocha,velkostLode,radStlp,pozicia,orientacia)){
- hraciaplocha[radStlp+1][pozicia]=8;
- hraciaplocha[radStlp][pozicia]=8;
- hraciaplocha[radStlp+2][pozicia]=8;
- for(i=0;i<velkostLode;i++){
- hraciaplocha[radStlp+1][pozicia+i+1]=1;
- hraciaplocha[radStlp][pozicia+i+1]=8;
- hraciaplocha[radStlp+2][pozicia+i+1]=8;
- }
- hraciaplocha[radStlp+1][pozicia+i+1]=8;
- hraciaplocha[radStlp][pozicia+i+1]=8;
- hraciaplocha[radStlp+2][pozicia+i+1]=8;
- koniecCyklu++;
- }
- }
- else {
- //vertikalne
- radStlp=rand() % generovaniePozicie;
- pozicia=rand() % 10;
- if(volneMiesto(hraciaplocha,velkostLode,radStlp,pozicia,orientacia)){
- hraciaplocha[radStlp][pozicia+1]=8;
- hraciaplocha[radStlp][pozicia]=8;
- hraciaplocha[radStlp][pozicia+2]=8;
- for(i=0;i<velkostLode;i++){
- hraciaplocha[radStlp+i+1][pozicia+1]=1;
- hraciaplocha[radStlp+1+i][pozicia]=8;
- hraciaplocha[radStlp+1+i][pozicia+2]=8;
- }
- hraciaplocha[radStlp+1+i][pozicia+1]=8;
- hraciaplocha[radStlp+1+i][pozicia]=8;
- hraciaplocha[radStlp+1+i][pozicia+2]=8;
- koniecCyklu++;
- }
- }
- }
- return hraciaplocha;
- }
- void kontrolnyVypis(int **hraciaplocha){
- int i,j;
- printf(" ");
- for(i='A';i<('A'+10);i++){
- printf(" %c",(char)i);
- }
- for(i=0;i<12;i++){
- for(j=0;j<12;j++){
- if(hraciaplocha[i][j]!=8){
- printf(" %d",hraciaplocha[i][j]);
- }
- else{
- printf(" ");
- }
- }
- printf("\n");
- }
- printf("\n");
- }
- int **start(void){
- int **hraciaplocha,pocLodi;
- hraciaplocha=alokaciaNapln();
- hraciaplocha=umiestnenieLode(hraciaplocha,5);
- for(pocLodi=0;pocLodi<2;pocLodi++){
- hraciaplocha=umiestnenieLode(hraciaplocha,4);
- }
- for(pocLodi=0;pocLodi<3;pocLodi++){
- hraciaplocha=umiestnenieLode(hraciaplocha,3);
- }
- for(pocLodi=0;pocLodi<4;pocLodi++){
- hraciaplocha=umiestnenieLode(hraciaplocha,2);
- }
- //kontrola lodi
- //kontrolnyVypis(hraciaplocha);
- return hraciaplocha;
- }
- void vypis(int **pole){
- int i,j;
- printf(" ");
- for(i='A';i<('A'+10);i++){
- printf(" %c",(char)i);
- }
- printf("\n");
- for(i=0;i<10;i++){
- if(i!=9){
- printf(" ");
- }
- printf(" %d",i+1);
- for(j=0;j<10;j++){
- printf(" -");
- }
- printf("\n");
- }
- }
- void vypisHracichPloch(int **hraciaplocha,int **pocitac,int endGameCount,int pocitacZasahy,int vystrely){
- int i,j,s,k;
- printf(" ");
- for(i='A';i<('A'+10);i++){
- printf(" %c",(char)i);
- }
- printf(" ");
- for(i='A';i<('A'+10);i++){
- printf(" %c",(char)i);
- }
- printf(" ");
- for(i='A';i<('A'+10);i++){
- printf(" %c",(char)i);
- }
- printf("\n");
- for(i=0;i<10;i++){
- if(i!=9){
- printf(" ");
- }
- printf(" %d",i+1);
- for(j=0;j<10;j++){
- if(hraciaplocha[i+1][j+1]==2){
- printf(" X");
- }
- if(hraciaplocha[i+1][j+1]==3){
- printf(" O");
- }
- if(hraciaplocha[i+1][j+1]==0 || hraciaplocha[i+1][j+1]==8 || hraciaplocha[i+1][j+1]==1){
- printf(" -");
- }
- }
- printf(" ");
- if(i!=9){
- printf(" ");
- }
- printf(" %d",i+1);
- for(k=0;k<10;k++){
- if(pocitac[i+1][k+1]==2){
- printf(" X");
- }
- if(pocitac[i+1][k+1]==3){
- printf(" O");
- }
- if(pocitac[i+1][k+1]==0 ||pocitac[i+1][k+1]==8 || pocitac[i+1][k+1]==1){
- printf(" -");
- }
- }
- printf(" ");
- if(i!=9){
- printf(" ");
- }
- printf(" %d",i+1);
- for(s=0;s<10;s++){
- if(pocitac[i+1][s+1]==2){
- printf(" X");
- }
- if(pocitac[i+1][s+1]==3){
- printf(" O");
- }
- if(pocitac[i+1][s+1]==0 ||pocitac[i+1][s+1]==8){
- printf(" -");
- }
- if(pocitac[i+1][s+1]==1){
- printf(" #");
- }
- }
- printf("\n");
- }
- printf("Pocet trafenych cielov: %d/30 Pocet zasahov protihraca: %d\nPocet vystrelov: %d\n",endGameCount,pocitacZasahy,vystrely);
- }
- int **pocitacVystrely(int **pocitac,int *pocitacZasahy){
- int pocitacRiad=rand() % 10;
- int pocitacStlpec=rand() % 10;
- while(pocitac[pocitacRiad+1][pocitacStlpec+1]==2 || pocitac[pocitacRiad+1][pocitacStlpec+1]==3){
- pocitacRiad=rand() % 10;
- pocitacStlpec=rand() % 10;
- }
- if (pocitac[pocitacRiad+1][pocitacStlpec+1]==1){
- pocitac[pocitacRiad+1][pocitacStlpec+1]=2;
- (*pocitacZasahy)++;
- }
- else{
- pocitac[pocitacRiad+1][pocitacStlpec+1]=3;
- }
- return pocitac;
- }
- void hra(){
- int **hraciaplocha,**pocitac;
- int surRiadok,surIntStlpec,endGameCount=0,vstupy=0,vystrely=0,pocitacZasahy=0;
- char surStlpec;
- hraciaplocha=start();
- pocitac=start();
- //system("cls");
- vypis(hraciaplocha);
- while(endGameCount!=30){
- printf("Zadaj suradnice v tvare [Pismeno Cislo]\n");
- while(vstupy==0){
- scanf("\n");
- scanf("%c",&surStlpec);
- surStlpec=toupper(surStlpec);
- surIntStlpec=((int)surStlpec)-64;
- while(surIntStlpec>10 || surIntStlpec<1){
- printf("Zadal si nespravne pismeno\nOpakuj vstup pismena!\n");
- scanf("\n");
- scanf("%c",&surStlpec);
- surStlpec=toupper(surStlpec);
- surIntStlpec=((int)surStlpec)-64;
- }
- scanf("%d",&surRiadok);
- while(surRiadok>10 || surRiadok<1){
- printf("Zadal si nespravne cislo riadku\nOpakuj vstup cisla!\n");
- scanf("%d",&surRiadok);
- }
- if (hraciaplocha[surRiadok][surIntStlpec]==2 || hraciaplocha[surRiadok][surIntStlpec]==3) {
- printf("Tento vstup si uz pred tym zadaval, zadaj novy vstup!\n");
- }
- else {
- vstupy++;
- }
- }
- vstupy=0;
- vystrely++;
- if (hraciaplocha[surRiadok][surIntStlpec]==1){
- hraciaplocha[surRiadok][surIntStlpec]=2;
- endGameCount++;
- }
- else{
- hraciaplocha[surRiadok][surIntStlpec]=3;
- }
- pocitacVystrely(pocitac,&pocitacZasahy);
- system("cls");
- vypisHracichPloch(hraciaplocha,pocitac,endGameCount,pocitacZasahy,vystrely);
- if(pocitacZasahy==30){
- endGameCount=30;
- }
- }
- if(pocitacZasahy!=30){
- printf("Vyhral si!!!\n");
- }
- else{
- printf("Prehral si, skus to znova...\n");
- }
- }
- int main(){
- int i,k,s,j,whilepoc=0,endGameCount=0,surRiadok,surIntStlpec,vystrely=0,pocitacRiad,pocitacStlpec,pocitacZasahy=0,vstupy=0;
- char znak,surStlpec;
- int **hraciaplocha,**pocitac;
- srand((unsigned int) time(NULL));
- while (whilepoc==0){
- printf("Stlac S pre start hry.\nHru ukoncis stlacenim K.\n");
- scanf("\n%c",&znak);
- switch (znak){
- case 'S':
- case 's':
- hra();
- break;
- case 'k':
- case 'K':
- whilepoc++;
- break;
- }
- }
- for (i=0;i<12;i++){
- free(hraciaplocha[i]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement