c,c++ pomoc oko iks oks igrice

c,c++ pomoc oko iks oks igrice

offline
  • Pridružio: 29 Maj 2014
  • Poruke: 54

Napravio sam x-o igricu,treba da bude oop,tj.fali mi jedna klasa.Ovo je moj kod ,pa ako neko moze da mi napise tu klasu jer ja stvarno ne znam,a treba mi hitno:

#include "stdafx.h" #include <stdio.h> #include <stdlib.h> char mat[3][3]; char check(void); void init_mat(void); void get_igrac_pom(void); void get_computer_pom(void); void disp_mat(void); int main(void) {   char done;   printf("Iks Oks\n");   printf("Igrate sa kompjuteromm\n");   done =  ' ';   init_mat();   do {     disp_mat();     get_igrac_pom();     done = check();     if(done!= ' ') break;     get_computer_pom();     done = check();   } while(done== ' ');   if(done=='X') printf("Ti si pobedio!\n");   else printf("Ja sam pobedio!\n");   disp_mat();   return 0; } void init_mat(void) {   int i, j;   for(i=0; i<3; i++)     for(j=0; j<3; j++) mat[i][j] =  ' '; } void get_igrac_pom(void) {   int x, y;   printf("Ukucaj X,Y kordinate za pomeranje: ");   scanf("%d%*c%d", &x, &y);   x--; y--;   if(mat[x][y]!= ' '){     printf("Pogresne kordinate ,probajte ponovo.\n");     get_igrac_pom();   }   else mat[x][y] = 'X'; } void get_computer_pom(void) {   int i, j;   for(i=0; i<3; i++){     for(j=0; j<3; j++)       if(mat[i][j]==' ') break;     if(mat[i][j]==' ') break;   }   if(i*j==9)  {     printf("draw\n");     exit(0);   }   else     mat[i][j] = 'O'; } void disp_mat(void) {   int t;   for(t=0; t<3; t++) {     printf(" %c | %c | %c ",mat[t][0],             mat[t][1], mat [t][2]);     if(t!=2) printf("\n---|---|---\n");   }   printf("\n"); } char check(void) {   int i;   for(i=0; i<3; i++)      if(mat[i][0]==mat[i][1] &&        mat[i][0]==mat[i][2]) return mat[i][0];   for(i=0; i<3; i++)     if(mat[0][i]==mat[1][i] &&        mat[0][i]==mat[2][i]) return mat[0][i];     if(mat[0][0]==mat[1][1] &&      mat[1][1]==mat[2][2])        return mat[0][0];   if(mat[0][2]==mat[1][1] &&      mat[1][1]==mat[2][0])        return mat[0][2];   return ' '; }



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Ako je u C onda ne može da bude OOP, klase postoje u C++. Evo ti moj primer koji sam radio u C++ prošle godine:

#include <iostream> // Copyright 2013 E.L.I.T.E. int main() {  char cKocka1('1');  char cKocka2('2');  char cKocka3('3');  char cKocka4('4');  char cKocka5('5');  char cKocka6('6');  char cKocka7('7');  char cKocka8('8');  char cKocka9('9');  int potezIgraca(1);  bool krajIgre(true);  // Glavna petlja u igri  do {   // Crtanje table   std::cout << cKocka1 << "|" << cKocka2 << "|" << cKocka3 << std::endl;   std::cout << "-+-+-"<< std::endl;   std::cout << cKocka4 << "|" << cKocka5 << "|" << cKocka6 << std::endl;   std::cout << "-+-+-"<< std::endl;   std::cout << cKocka7 << "|" << cKocka8 << "|" << cKocka9 << std::endl;   // Setuje marker igrava: Igrac 1 koristi X i Igrac 2 koristi O   char markerIgraca;   if (potezIgraca == 1) {    markerIgraca = 'X';   } else {    markerIgraca = 'O';   }     // Ispitivanje poteza   std::cout << "Igrac" << potezIgraca << "je na potezu:" << std::endl;   bool validnoPomeranje;   // Petlja kada je pomeranje validno (validnoPomeranje = (true))   do {    char novoPomeranje;    std::cin >> novoPomeranje;    validnoPomeranje = true;    // Ispitati da li je pomeranje validno    if (novoPomeranje == '1' && cKocka1 == '1') {     cKocka1 = markerIgraca;    } else if (novoPomeranje == '2' && cKocka2 == '2') {     cKocka2 = markerIgraca;    } else if (novoPomeranje == '3' && cKocka3 == '3') {     cKocka3 = markerIgraca;    } else if (novoPomeranje == '4' && cKocka4 == '4') {     cKocka4 = markerIgraca;    } else if (novoPomeranje == '5' && cKocka5 == '5') {     cKocka5 = markerIgraca;    } else if (novoPomeranje == '6' && cKocka6 == '6') {     cKocka6 = markerIgraca;    } else if (novoPomeranje == '7' && cKocka7 == '7') {     cKocka7 = markerIgraca;    } else if (novoPomeranje == '8' && cKocka8 == '8') {     cKocka8 = markerIgraca;    } else if (novoPomeranje == '9' && cKocka9 == '9') {     cKocka9 = markerIgraca;    } else {     std::cout << "Potez nije validan. Proverite da niste pogresili pri kucanju broja. Pokusajte ponovo." << std::endl;     validnoPomeranje = false;    }   } while (!validnoPomeranje);   krajIgre  = false;   bool pobeda = true;   // Ispitaj uslove za završetak igre   if (cKocka1 != '1') {    if (cKocka2 == cKocka1 && cKocka3 == cKocka1) {     krajIgre = true;    }    if (cKocka4 == cKocka1 && cKocka7 == cKocka1) {     krajIgre = true;    }   }   if (cKocka5 != '5') {    if (cKocka1 == cKocka5 && cKocka9 == cKocka5) {     krajIgre = true;    }    if (cKocka2 == cKocka5 && cKocka8 == cKocka5) {     krajIgre = true;    }    if (cKocka4 == cKocka5 && cKocka6 == cKocka5) {     krajIgre = true;    }    if (cKocka3 == cKocka5 && cKocka7 == cKocka5) {     krajIgre = true;    }   }   if (cKocka9 != '9') {    if (cKocka3 == cKocka9 && cKocka6 == cKocka9) {     krajIgre = true;    }    if (cKocka7 == cKocka9 && cKocka8 == cKocka9) {     krajIgre = true;    }   }   // Ispitujemo da li je tabla puna (nereseno)   if (cKocka1 != '1' && cKocka2 != '2' && cKocka3 != '3' &&    cKocka4 != '4' && cKocka5 != '5' && cKocka6 != '6' &&    cKocka7 != '7' && cKocka8 != '8' && cKocka9 != '9' && !krajIgre)   {    krajIgre = true;    pobeda = false;   }   if (krajIgre) {    if (pobeda) {     std::cout << "Igrac" << potezIgraca << " je pobedio!" << std::endl;    }    // Crtanje table na kraju    std::cout << cKocka1 << "|" << cKocka2 << "|" << cKocka3 << std::endl;    std::cout << "-+-+-"<< std::endl;    std::cout << cKocka4 << "|" << cKocka5 << "|" << cKocka6 << std::endl;    std::cout << "-+-+-"<< std::endl;    std::cout << cKocka7 << "|" << cKocka8 << "|" << cKocka9 << std::endl;    std::cout << "Igra je zavrsena!" << std::endl;    std::cout << "Ponovo (upisite da/ne)?" << std::endl;    char igrajPonovo;    std::cin >> igrajPonovo;    if (igrajPonovo == 'da') {     krajIgre = false;     // Cišcenje table za igru     cKocka1 = '1';     cKocka2 = '2';     cKocka3 = '3';     cKocka4 = '4';     cKocka5 = '5';     cKocka6 = '6';     cKocka7 = '7';     cKocka8 = '8';     cKocka9 = '9';    }    potezIgraca = 1;   } else {    // Alternativno povlacenje    if (potezIgraca == 1) {     potezIgraca = 2;    } else {     potezIgraca = 1;    }   }  } while (!krajIgre); }

Šta treba da se nalazi u toj klasi , tačnije , zašto ti treba klasa?



offline
  • Pridružio: 29 Maj 2014
  • Poruke: 54

Nisu mi nista konkretno rekli,samo da napravim jednu klasu i da bude oop.Hvala ti na kodu.

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

OOP je objektno-orijentisano programiranje, a klasa je samo jedan deo OOP-a. Mogu ja da ti napišem klasu, ali ne znam šta ta klasa treba da sadrži tj. koje objekte. Da bi pisao klase potrebno je da razumeš kako funkcioniše objektno-orijentisano programiranje, da znaš šta je objekat, klasa, član, polimorfizam, enkapsulacija i sl.

offline
  • Pridružio: 29 Maj 2014
  • Poruke: 54

Bilo koje objekte,moze biti igrac,tabla sta god,samo treba da imam jednu klasu.Znam ok oop ali javu,i bas mi je konfuzan c++ sto se tice oop-a.

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

class Tabla {           int potezIgraca;           bool krajIgre;      public:           char cKocka1, cKocka2, cKocka3, cKocka4, cKocka5, cKocka6, cKocka7, cKocka8, cKocka9; };

Eto. Objekti koji nisu pod public su private podrazumevano (to znaš i iz Jave verovatno). Možeš da im pristupiš ako napraviš funkciju, npr. ovako nešto:

void Tabla::izmenaVrednosti (int a, bool b) {      potezIgraca = a;      krajIgre = b; }

i dodaš funkciju u public sekciju klase.

class Tabla {           int potezIgraca;           bool krajIgre;      public:           void izmenaVrednosti (int, bool);           char cKocka1, cKocka2, cKocka3, cKocka4, cKocka5, cKocka6, cKocka7, cKocka8, cKocka9; };

U glavnom programu bi to izgledalo ovako:

int main() {      Tabla Tabla1;      Tabla1.cKocka1 = '1';      Tabla1.cKocka2 = '2';      /* itd. */      Tabla1.izmenaVrednosti(1, false);      return 0; }

Kod koji si napisao u prvom postu je u C, C nije OOP jezik (poseduje strukture, ali nije to to).

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

class Tabla {          ...      public:           char cKocka1, cKocka2, cKocka3, cKocka4, cKocka5, cKocka6, cKocka7, cKocka8, cKocka9; }; Pre svega, nemoj ovo, leba ti. Jedan niz sa 9 polja mnogo lepše izgleda. Wink
E.L.I.T.E. ::Objekti koji nisu pod public su private podrazumevano (to znaš i iz Jave verovatno).Pa, i nije baš korektno. U C++ podrazumevani modifikator pristupa jeste private, ali nije tačno da je privatno sve što nije javno. Postoje i zaštićeni atributi. Istina, oni se ponašaju slično kao privatni, ali ipak postoje razlike. Pored toga, u Javi je podrazumevani modifikator pristupa default (ili no modifier), a ne private.

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

vasa.93 ::
Postoje i zaštićeni atributi. Istina, oni se ponašaju slično kao privatni, ali ipak postoje razlike.


Znam, zaštićeni su dostupni samo preko klase u kojoj su definisani i klasa koje nasleđuju tu istu klasu.

vasa.93 ::Pored toga, u Javi je podrazumevani modifikator pristupa default (ili no modifier), a ne private.

Pa u suštini to mu je to, kad je default onda je vidljiv samo u tom package-u.

Ko je trenutno na forumu
 

Ukupno su 724 korisnika na forumu :: 4 registrovanih, 2 sakrivenih i 718 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Dorcolac, goxin, Nobunaga, repac