Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Быки и коровы / Быки и Коровы / MainUnit
.cpp//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MainUnit.h"
#include <stdio.h>
#include <fstream>
using namespace std;
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
char TypeOfGame=0;
int NumC=0,NumB=0;
Num *NFirst=NULL,*NCur=NULL;
Wrd *WFirst=NULL,*WCur=NULL;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::OnClick(TObject *Sender)
{
EditStr->SetFocus();
if(Sender==N11)
{
MemoLog->Lines->Clear();
MemoLog->Lines->Add(">> 00000?");
EditStr->Text="";
for(NCur=NFirst;NCur!=NULL;NCur=NFirst)
{
NFirst=NFirst->next;
free(NCur);
}
/* for(WCur=WFirst;WCur!=NULL;WCur=WFirst)
{
WFirst=WFirst->next;
free(WCur);
} */
return;
}
if(Sender==N12) MainForm->Close();
if(Sender==ButtonSend)
{
if(EditStr->Text!="")
{
MemoLog->Lines->Add("<< " + EditStr->Text);
if(sscanf(EditStr->Text.c_str(),"%d %d",&NumC,&NumB)==2)
if(NumC==5&&NumB==5) MemoLog->Lines->Add(">> Игра закончена");
else
{
NumGame();
if(!NCur)
{
MemoLog->Lines->Add(">> Вы допустили ошибку");
MemoLog->Lines->Add(">> Игра закончена");
}
else MemoLog->Lines->Add(IntToStr(NCur->n[0])+IntToStr(NCur->n[1])+IntToStr(NCur->n[2])+IntToStr(NCur->n[3])+IntToStr(NCur->n[4])+"?");
}
}
EditStr->Clear();
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{if(Application->MessageBox("Вы действительно хотите выйти?","Выход",MB_ICONQUESTION+MB_YESNO)==IDNO)
Action=caNone;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormShow(TObject *Sender)
{EditStr->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::EditStrKeyPress(TObject *Sender, char &Key)
{
if(Key==13)
OnClick(ButtonSend);
}
//---------------------------------------------------------------------------
void TMainForm::NumGame()
{int CCount,BCount;
if(!NFirst)
{int N[5],i;
for(N[0]=0;N[0]<=9;N[0]++)
for(N[1]=0;N[1]<=9;N[1]++)
for(N[2]=0;N[2]<=9;N[2]++)
for(N[3]=0;N[3]<=9;N[3]++)
for(N[4]=0;N[4]<=9;N[4]++)
{CCount=0;
BCount=0;
for(i=0;i<5;i++)
if(N[i]==0)
BCount++;
for(i=0;i<5;i++)
if(N[i]==0)
{CCount+=5;
break;
}
if(BCount==NumB&&CCount==NumC)
{Num *temp=new Num(N,NULL);
if(!NFirst)
NFirst=NCur=temp;
else
{NCur->next=temp;
NCur=temp;
}
}
}
NCur=NFirst;
}
else
{for(Num *prev=NCur,*temp=NCur->next;temp!=NULL;)
{CCount=0;
BCount=0;
int i,j;
for(i=0;i<5;i++)
if(NCur->n[i]==temp->n[i])
BCount++;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(NCur->n[i]==temp->n[j])
{CCount++;
break;
}
if(BCount==NumB&&CCount==NumC)
{prev=temp;
temp=temp->next;
}
else
{prev->next=prev->next->next;
delete(temp);
temp=prev->next;
}
}
NCur=NCur->next;
}
}
//---------------------------------------------------------------------------
Num::Num(int *N,Num *NEXT)
{for(int i=0;i<5;i++)
n[i]=N[i];
next=NEXT;
}
Соседние файлы в папке Быки и Коровы