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: 4577

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: 4577

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: 4577

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: 14828
  • 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: 4577

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 791 korisnika na forumu :: 77 registrovanih, 13 sakrivenih i 701 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: acov34, aleph_one, alternator, Asparagus, Betta, blue, Bo96, boj.an, Bojke549, Borski1977, BOXRR, bpop, branko7, BZ, Clouseau, CraniumWhite, CrazyDiablo, cuvarkuca, Dannyboy, Deki Duga Devetka, deLacy, Denaya, dendrit86, dj.ape, Djokislav, dok80, Electron, ElGenius, Flanker-G, Gitzherai, Gosha101980, GreenMan, Jester, JOntra, Još malo pa deda, Kanader, kinderpingvin, klepesina, Krajišnik97, ljubo70, markolopin, Mihajlo, Miki281, mile.ilic75, Mirsen, mkukoleca, mnn2, nedeljkovici, nenooo, niksa517, Permaldar, petrovicrs, Prečanin30, proka89, RajkoB, Ripanjac, Roksi, sale76, sap, sifogiannis, skylab1111, Smor, stalja, Tandrkalo, travisrise, TRAVUNIJA, Vanderx, vargas, velisa andjelic, vobo, Voice1, Wepp, xAlex2, yrraf, ZlatniRez, zombicar153, zziko