Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2011, 16:18   #1
tml2110
Новичок
Джуниор
 
Регистрация: 17.12.2011
Сообщений: 2
Восклицание алгоритм для изменения скорости игры крестики нолики

Добрый день, ребят, написал крестики нолики, но мне еще нужно сделать несколько режимов, т.е. я например играю крестиками, ставлю первый крестик, в ответ нолик появляется мгновенно, а мне нужно сделать 3 режима, чтобы нолик появлялся спустя(2 секунды, 4 и 8).
Разбить эти режимы думаю через checkbox либо radiogroup,т.к. radiobutton'ы заняты уже...

Прошу помощи, так как голову уже сломал а ничего не получается, напишите пожалуйста как нужно сделать!) буду очень признателен за помощь)

Код:

int TForm1 :: proverka(){ 
int short i=0,j=0,x=0,y=0,x1=0,y1=0;

for(i=0;i<3;i++){ 
for(j=0;j<3;j++){
if(mas[i][j]!=0) x+=1;
if(mas[i][j]==0) y++;
}
if(y>0) break;
if(x==9) return -4; 
}

{

for(i=0;i<3;i++){
x=0;y=0;
for(j=0;j<3;j++){
if(mas[i][j]==1) x+=1;
if(mas[i][j]==2) y+=1;
}
if(x==3) return -1; 
if(y==3) return -2; }

for(j=0;j<3;j++){
x=0;y=0;
for(i=0;i<3;i++){
if(mas[i][j]==1) x+=1;
if(mas[i][j]==2) y+=1;
}
if(x==3) return -1; 
if(y==3) return -2; 
}
x=0;y=0;x1=0;y1=0;

for(i=0;i<3;i++){ 
for(j=0;j<3;j++){
if(i==j){
if(mas[i][j]==1) x+=1;
if(mas[i][j]==2) y+=1;
}
if((i+j)==2){
if(mas[i][j]==1) x1+=1;
if(mas[i][j]==2) y1+=1;
}

}
if(x==3) return -1; 
if(y==3) return -2; 
if(x1==3) return -1; 
if(y1==3) return -2; 
}
return -3; 
}
}


void TForm1 :: ris_hod_Comp(int short &x,int short &y) {
if(x==0 && y==0){Image1->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;}
...
if(x==2 && y==2){Image9->Picture->LoadFromFile(hod_ris2); mas[x][y]=2;}

}
bool TForm1:: hod_kompa_func(int short &n){
int short i=0,j=0,i1=0,j1=0,x=0;
for(i=0;i<3;i++) 
for(j=0;j<3;j++)
if(mas[i][j]!=0) x++;

if(x<=2){ 
i=1;j=1;
if(mas[i][j]==0){ 

ris_hod_Comp(i,j);
return true;
}
i=0;j=0;
if(mas[i][j]==0){ 
ris_hod_Comp(i,j);
return true;
}
    }



for(i=0;i<3;i++){ 
x=0;j1=3;
for(j=0;j<3;j++){
if(mas[i][j]==n) x++;
if(mas[i][j]==0) j1=j;
if(x==2 && j1!=3){

ris_hod_Comp(i,j1);
return true;
}
}
} 

for(j=0;j<3;j++){ 
x=0;i1=3;
for(i=0;i<3;i++){
if(mas[i][j]==n) x++;
if(mas[i][j]==0) i1=i;
if(x==2 && i1!=3){

ris_hod_Comp(i1,j);
return true;
}
}
} 

int x2=0,x1=0,i2=0,j2=0;
j1=3;j2=3;
for(i=0;i<3;i++){ 
for(j=0;j<3;j++){
if(i==j){
if(mas[i][j]==n) x1+=1; 
if(mas[i][j]==0) {j1=j;i1=i;}
}
if((i+j)==2){ 
if(mas[i][j]==n) x2+=1;
if(mas[i][j]==0) {j2=j;i2=i;}
}

if(x1==2 && j1!=3){

ris_hod_Comp(i1,j1);
return true;
}
if(j2!=3 && x2==2){

ris_hod_Comp(i2,j2);
return true;
}

} 
} 
return false; 
}

void TForm1::hod_Comp(){
bool hod;
int i,j;
int prov=0;

prov=proverka();
switch(prov){
case -1: {vigrish_User(); return;}
case -2: {vigrish_Comp(); return;}
case -4: {vigrish_Nichia();return;}
}

hod=hod_kompa_func(2);
if(hod==false)hod=hod_kompa_func(1);
if(hod==false){

srand((unsigned)time( NULL ));

do{

i=rand()%3;
j=rand()%3;
}
while(mas[i][j]!=0);
ris_hod_Comp(i,j);
}

prov=proverka();
switch(prov){
case -1: {vigrish_User(); return;}
case -2: {vigrish_Comp(); return;}
case -4: {vigrish_Nichia();return;}
}
}


void TForm1::initiz(){
char hod_ris3[10];
memset(hod_ris3,0,9);
strcpy(hod_ris3,"fon0.bmp");
Image1->Picture->LoadFromFile(hod_ris3);
...
Image9->Picture->LoadFromFile(hod_ris3);
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
mas[i][j]=0;

}
void TForm1::hod_User(int ris){

switch(ris){
case 1:{if(mas[0][0]==0){Image1->Picture->LoadFromFile(hod_ris1);
mas[0][0]=1;break;}else return;}
...
case 9:{if(mas[2][2]==0){Image9->Picture->LoadFromFile(hod_ris1);
mas[2][2]=1;break;}else return;}
}
hod_Comp();

}

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
 if(BitBtn1->Caption=="Начать"){
RadioButton1->Enabled=false;
RadioButton2->Enabled=false;
BitBtn1->Caption="Выбор стороны";
Panel1->Visible=false;
initiz();
if (RadioButton1->Checked){

}
if (RadioButton2->Checked){
 hod_Comp();
}
return;
}

if(BitBtn1->Caption!="Начать"){
RadioButton1->Enabled=true;
RadioButton2->Enabled=true;
BitBtn1->Caption="Начать";
Panel1->Visible=true;
return;
}

}





void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
initiz();
}

void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
Close();
}


void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
memset(hod_ris1,0,9);
memset(hod_ris2,0,9);
strcpy(hod_ris1,"krest.bmp");strcpy(hod_ris2,"nolik.bmp");

}


void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
memset(hod_ris1,0,9);
memset(hod_ris2,0,9);
strcpy(hod_ris1,"nolik.bmp");strcpy(hod_ris2,"krest.bmp");
}


void __fastcall TForm1::Image1Click(TObject *Sender)
{
hod_User(1);
}
.
.
.

void __fastcall TForm1::Image9Click(TObject *Sender)
{
hod_User(9);
}
tml2110 вне форума Ответить с цитированием
Старый 17.12.2011, 16:19   #2
tml2110
Новичок
Джуниор
 
Регистрация: 17.12.2011
Сообщений: 2
По умолчанию

текст как мог сократил чтобы влез)
tml2110 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
игры крестики нолики spoxe Общие вопросы по Java, Java SE, Kotlin 1 19.12.2011 11:39
Алгоритм минимакс (minimaxing) для игры крестики-нолики 3х3 JustFree Помощь студентам 1 11.10.2011 16:35
минимакс для игры крестики нолики Ежик Помощь студентам 2 17.05.2010 13:21
Игры на Delphi. Крестики-нолики. Amadel Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 07.12.2009 00:42
крестики-нолики, алгоритм GaNDyPaC Помощь студентам 8 28.02.2009 23:30