Poslao: 15 Jun 2014 15:06
|
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.
|
|
Poslao: 15 Jun 2014 21:38
|
offline
- E.L.I.T.E.
- Legendarni građanin
- 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?
|
|
|
|
Poslao: 16 Jun 2014 00:40
|
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.
|
|
|
|
Poslao: 16 Jun 2014 11:30
|
offline
- E.L.I.T.E.
- Legendarni građanin
- 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.
|
|
|
|
Poslao: 16 Jun 2014 13:10
|
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.
|
|
|
|
Poslao: 16 Jun 2014 14:58
|
offline
- E.L.I.T.E.
- Legendarni građanin
- 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).
|
|
|
|
Poslao: 16 Jun 2014 16:36
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- 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.
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.
|
|
|
|
Poslao: 16 Jun 2014 17:21
|
offline
- E.L.I.T.E.
- Legendarni građanin
- 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.
|
|
|
|