Orientuje się ktoś, jak mogę zmienić kod programu, gry "kółko i krzyżyk" (z zastosowaniem biblioteki allegro) tak, aby mieć planszę 4x4? Będę bardzo wdzięczny za pomoc. pozdrawiam.
#include <allegro.h>
#include <iostream>
using namespace std;
int kolko (int x,int y); //f rysujaca kolka
int krzyzyk (int x,int y); //f rysujaca krzyzyki
int gracz1(); //f - ruchy gracza 1
int gracz2(); //f - ruchy gracza 2
int sprawdz(int x); // f sprawdzajaca i wyswietlajaca wynik
int wynik=0;
int z=0;
int i=1;
char p; //zmienna pomocnicza do porownywania
char log[9]; //historia naciskanych klawiszy
bool wynikg[2][9];
int main()
{
allegro_init();
install_keyboard();
set_color_depth(16);
set_gfx_mode(GFX_AUTODETECT_WINDOWED,600,600,0,0);
clear_to_color(screen, makecol(128,128,128));
hline(screen, 0, 400, 600, makecol(255,255,255));
hline(screen, 0, 200, 600, makecol(255,255,255));
hline(screen, 0, 600, 600, makecol(255,255,255));
vline(screen, 200, 0, 600, makecol(255,255,255));
vline(screen, 400, 0, 600, makecol(255,255,255));
while(!key[KEY_ESC] && wynik<1){
p=readkey();
for(int i=0; i<z; i++){
if (p==log[i]) {textprintf(screen,font,20,690,makecol(255,255,128),"Ruch nie dozwolony");
i=-1;
p=readkey();}
}
log[z]=p;
::z++;
gracz1();
wynik=sprawdz(0);
if (wynik>0) continue;
textprintf(screen,font,20,650,makecol(255,255,128),"Ruch gracza 2");
p=readkey();
for(int i=0; i<z; i++){
if (p==log[i]) {textprintf(screen,font,20,690,makecol(255,255,128),"Ruch nie dozwolony");
i=-1;
p=readkey();}
}
log[z]=p;
::z++;
gracz2();
wynik=sprawdz(1);
};
readkey();
allegro_exit();
// system("pause");
return 0;
}
END_OF_MAIN();
//------------------------------------------------------------------------------
int gracz1(){
if (key [KEY_1_PAD]) {
kolko(100,500);
wynikg[0][0] = true;}
if (key [KEY_2_PAD]) {
kolko(300,500);
wynikg[0][1] = true;}
if (key [KEY_3_PAD]) {
kolko(500,500);
wynikg[0][2] = true;}
if (key [KEY_4_PAD]) {
kolko(100,300);
wynikg[0][3] = true;}
if (key [KEY_5_PAD]) {
kolko(300,300);
wynikg[0][4] = true;}
if (key [KEY_6_PAD]) {
kolko(500,300);
wynikg[0][5] = true;}
if (key [KEY_7_PAD]) {
kolko(100,100);
wynikg[0][6] = true;}
if (key [KEY_8_PAD]) {
kolko(300,100);
wynikg[0][7] = true;}
if (key [KEY_9_PAD]) {
kolko(500,100);
wynikg[0][8] = true;}
}
int gracz2(){
if (key [KEY_1_PAD]) {
krzyzyk(0,400);
wynikg[1][0] = true;}
if (key [KEY_2_PAD]) {
krzyzyk(200,400);
wynikg[1][1] = true;}
if (key [KEY_3_PAD]) {
krzyzyk(400,400);
wynikg[1][2] = true;}
if (key [KEY_4_PAD]) {
krzyzyk(000,200);
wynikg[1][3] = true;}
if (key [KEY_5_PAD]) {
krzyzyk(200,200);
wynikg[1][4] = true;}
if (key [KEY_6_PAD]) {
krzyzyk(400,200);
wynikg[1][5] = true;}
if (key [KEY_7_PAD]) {
krzyzyk(0,0);
wynikg[1][6] = true;}
if (key [KEY_8_PAD]) {
krzyzyk(200,0);
wynikg[1][7] = true;}
if (key [KEY_9_PAD]) {
krzyzyk(400,0);
wynikg[1][8] = true;}
}
int kolko (int x, int y){
circle(screen, x, y,50, makecol(255,0,0));
rest(2);
}
int krzyzyk (int x, int y){
line( screen,x,y,x+200,y+200, makecol(0,255,0));
line( screen,x,y+200,x+200,y, makecol(0,255,0));
rest(2);
}
int sprawdz(int x){
if (wynikg[x][0]&&wynikg[x][1]&&wynikg[x][2]==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][3]&&wynikg[x][4]&&wynikg[x][5]==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][6]&&wynikg[x][7]&&wynikg[x][8]==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][0]&&wynikg[x][4]&&wynikg[x][9]==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][2]&&wynikg[x][4]&&wynikg[x][6]==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWI! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][0]&&wynikg[x][3]&&wynikg[x][6]==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BARWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][1]&&wynikg[x][4]&&wynikg[x][7]==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][2]&&wynikg[x][5]&&wynikg[x][8]==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
else return 0;
}
Edit:
Zdenerwowałem się i napisałem tę grę dla planszy 4x4. Mam wiele obowiązków na innych przedmiotach, ale ten muszę zaliczyć. Trochę mi przykro, że mam takie słabe oceny z programowania, smutno jest być najgorszym, kiedy się człowiek stara. Denerwuje mnie wyścig szczurów o oceny i pyskówki studentów o punkty z laboratorium. Ja będę mieć ich jak najmniej, ale kij z tym... Może oddam swój program jako ostatni, ale grunt, że go zrobiłem samodzielnie. Nie przyda mi się w zawodzie, ale mam jakąś satysfakcję. Voilà!
#include <allegro.h>
#include <iostream>
using namespace std;
int kolko (int x,int y); //f rysujaca kolka
int krzyzyk (int x,int y); //f rysujaca krzyzyki
int gracz1(); //f - ruchy gracza 1
int gracz2(); //f - ruchy gracza 2
int sprawdz(int x); // f sprawdzajaca i wyswietlajaca wynik
int wynik=0;
int z=0;
int i=1;
char p; //zmienna pomocnicza do porownywania
char log[9]; //historia naciskanych klawiszy
bool wynikg[2][9];
int main()
{
allegro_init();
install_keyboard();
set_color_depth(16);
set_gfx_mode(GFX_AUTODETECT_WINDOWED,600,600,0,0);
clear_to_color(screen, makecol(128,128,128));
line(screen, 150, 0, 150, 600, makecol(255,255,255));
line(screen, 300, 0, 300, 600, makecol(255,255,255));
line(screen, 450, 0, 450,600, makecol(255,255,255));
line(screen, 0, 150, 600, 150, makecol(255,255,255));
line(screen, 0, 300, 600, 300, makecol(255,255,255));
line(screen, 0, 450, 600, 450, makecol(255,255,255));
while(!key[KEY_ESC] && wynik<1){
p=readkey();
for(int i=0; i<z; i++){
if (p==log[i]) {textprintf(screen,font,20,690,makecol(255,255,128),"Ruch nie dozwolony");
i=-1;
p=readkey();}
}
log[z]=p;
::z++;
gracz1();
wynik=sprawdz(0);
if (wynik>0) continue;
textprintf(screen,font,20,650,makecol(255,255,128),"Ruch gracza 2");
p=readkey();
for(int i=0; i<z; i++){
if (p==log[i]) {textprintf(screen,font,20,690,makecol(255,255,128),"Ruch nie dozwolony");
i=-1;
p=readkey();}
}
log[z]=p;
::z++;
gracz2();
wynik=sprawdz(1);
};
readkey();
allegro_exit();
// system("pause");
return 0;
}
END_OF_MAIN();
//------------------------------------------------------------------------------
int gracz1(){
if (key [KEY_Z]) {
kolko(75,525);
wynikg[0][0] = true;}
if (key [KEY_X]) {
kolko(225,525);
wynikg[0][1] = true;}
if (key [KEY_C]) {
kolko(375,525);
wynikg[0][2] = true;}
if (key [KEY_V]) {
kolko(525,525);
wynikg[0][3] = true;}
if (key [KEY_A]) {
kolko(75,375);
wynikg[0][4] = true;}
if (key [KEY_S]) {
kolko(225,375);
wynikg[0][5] = true;}
if (key [KEY_D]) {
kolko(375,375);
wynikg[0][6] = true;}
if (key [KEY_F]) {
kolko(525,375);
wynikg[0][7] = true;}
if (key [KEY_Q]) {
kolko(75,225);
wynikg[0][8] = true;}
if (key [KEY_W]) {
kolko(225,225);
wynikg[0][9] = true;}
if (key [KEY_E]) {
kolko(375,225);
wynikg[0][10] = true;}
if (key [KEY_R]) {
kolko(525,225);
wynikg[0][11] = true;}
if (key [KEY_1]) {
kolko(75,75);
wynikg[0][12] = true;}
if (key [KEY_2]) {
kolko(225,75);
wynikg[0][13] = true;}
if (key [KEY_3]) {
kolko(375,75);
wynikg[0][14] = true;}
if (key [KEY_4]) {
kolko(525,75);
wynikg[0][15] = true;}
}
int gracz2(){
if (key [KEY_Z]) {
krzyzyk(0,450);
wynikg[1][0] = true;}
if (key [KEY_X]) {
krzyzyk(150,450);
wynikg[1][1] = true;}
if (key [KEY_C]) {
krzyzyk(300,450);
wynikg[1][2] = true;}
if (key [KEY_V]) {
krzyzyk(450,450);
wynikg[1][3] = true;}
if (key [KEY_A]) {
krzyzyk(0,300);
wynikg[1][4] = true;}
if (key [KEY_S]) {
krzyzyk(150,300);
wynikg[1][5] = true;}
if (key [KEY_D]) {
krzyzyk(300,300);
wynikg[1][6] = true;}
if (key [KEY_F]) {
krzyzyk(450,300);
wynikg[1][7] = true;}
if (key [KEY_Q]) {
krzyzyk(0,150);
wynikg[1][8] = true;}
if (key [KEY_W]) {
krzyzyk(150,150);
wynikg[1][9] = true;}
if (key [KEY_E]) {
krzyzyk(300,150);
wynikg[1][10] = true;}
if (key [KEY_R]) {
krzyzyk(450,150);
wynikg[1][11] = true;}
if (key [KEY_1]) {
krzyzyk(0,0);
wynikg[1][12] = true;}
if (key [KEY_2]) {
krzyzyk(150,0);
wynikg[1][13] = true;}
if (key [KEY_3]) {
krzyzyk(300,0);
wynikg[1][14] = true;}
if (key [KEY_4]) {
krzyzyk(450,0);
wynikg[1][15] = true;}
}
int kolko (int x, int y){
circle(screen, x, y,50, makecol(255,0,0));
rest(2);
}
int krzyzyk (int x, int y){
line( screen,x,y,x+150,y+150, makecol(0,255,0));
line( screen,x,y+150,x+150,y, makecol(0,255,0));
rest(2);
}
int sprawdz(int x){
if (wynikg[x][0]&&wynikg[x][1]&&wynikg[x][2]&&wynikg[x][3]==true==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][4]&&wynikg[x][5]&&wynikg[x][6]&&wynikg[x][7]==true==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][8]&&wynikg[x][9]&&wynikg[x][10]&&wynikg[x][11]==true==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][12]&&wynikg[x][13]&&wynikg[x][14]&&wynikg[x][15]==true==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][0]&&wynikg[x][4]&&wynikg[x][8]&&wynikg[x][12]==true==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][13]&&wynikg[x][9]&&wynikg[x][5]&&wynikg[x][1]==true==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][14]&&wynikg[x][10]&&wynikg[x][6]&&wynikg[x][2]==true==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][15]&&wynikg[x][11]&&wynikg[x][7]&&wynikg[x][3]==true==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][0]&&wynikg[x][5]&&wynikg[x][10]&&wynikg[x][15]==true==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
if (wynikg[x][3]&&wynikg[x][6]&&wynikg[x][9]&&wynikg[x][12]==true==true ) {textprintf(screen,font,20,690,makecol(255,255,128),"BRAWO! WYGRYWA Gracz %d",x+1);
return x+1;}
else return 0;
}
if (wynikg[x][6]&&wynikg[x][7]&&wynikg[x][8]==true )
, hmm... z ciekawosci zapytam - przy ktorymif
ie zaswieci ci sie lampka w glowie, ze cos jest jednak nie tak?