На поле указанной формы находятся две лисы и 20 кур
Л Л К К К К К К К К К К К К К К К К К К К К Куры могут перемещаться на один шаг вверх, влево или вправо, но не назад и не по диагонали. Лисы могут перемещаться на один шаг влево, вправо, вверх и вниз. Лиса может съесть курицу, как в игре в шашки: если в горизонтальном или вертикальном направлении за курицей на один шаг следует свободное поле, то лиса перепрыгивает через курицу и ест ее. Лисы всегда обязаны есть, и когда у них бывает выбор, они обязаны осуществить "наиболее длинное поедание". Если два приема пищи имеют одинаковую длину – выбирается любой из них. Необходимо написать программу, играющую за лис. Игрок перемещает кур. Партнеры играют по очереди, причем куры начинают. Они выигрывают партию, если девяти из них удается занять 9 полей, образующих верхний квадрат поля. Лисы выигрывают, если им удается съесть 12 кур, т.к. в этом случае будет недостаточно оставшихся кур, чтобы занять 9 верхних полей.
Michael_Rybak
13.03.2008 22:50
очень хорошо. и что дальше?
is1988
19.03.2008 11:36
Нужно решить и оформить в DELPHI!!!!
Rian
19.03.2008 13:43
Цитата(is1988 @ 19.03.2008 6:36)
Нужно решить и оформить в DELPHI!!!!
А мне нужно дописать курсовую и дипломную, напишешь? Ведь все живые люди и ни у кого нет свободного времени, которое хочется потратить в пустую. Тем более на задачки, на которые может уйти неделя, а отдачи ноль. На одном моральном удовольствии долго не протянешь. Попробуй сам, хоть что-то сделать, представь, как это будет работать, продумай алгоритмы, а если не знаешь, как реализовать ОДИН из них, обращайся.
void __fastcall TForm1::Button1Click(TObject *Sender) { for (int i=0;i<2;i++) KillHen(i); for (int i=0;i<20;i++) for (int j=0;j<2;j++) OneStep[i][j]=0; Count=0; } //--------------------------------------------------------------------------- void __fastcall TForm1::MinusHen(int i) { NumberHens--; Edit2->Text=NumberHens; Edit1->Text=NumberHens; } //--------------------------------------------------------------------------- void __fastcall TForm1::KillHen(int i) { bool check=false; if (Foxs[i][0]>1) { if ((StringGrid1->Cells[Foxs[i][0]-1][Foxs[i][1]]=="К")&&(StringGrid1->Cells[Foxs[i][0]-2][Foxs[i][1]]=="")) { StringGrid1->Cells[Foxs[i][0]][Foxs[i][1]]=""; StringGrid1->Cells[Foxs[i][0]-1][Foxs[i][1]]=""; StringGrid1->Cells[Foxs[i][0]-2][Foxs[i][1]]="Л"; Foxs[i][0]=Foxs[i][0]-2; MinusHen(i); check=true; } } if (Foxs[i][0]<5) { if ((StringGrid1->Cells[Foxs[i][0]+1][Foxs[i][1]]=="К")&&(StringGrid1->Cells[Foxs[i][0]+2][Foxs[i][1]]=="")) { StringGrid1->Cells[Foxs[i][0]][Foxs[i][1]]=""; StringGrid1->Cells[Foxs[i][0]+1][Foxs[i][1]]=""; StringGrid1->Cells[Foxs[i][0]+2][Foxs[i][1]]="Л"; Foxs[i][0]=Foxs[i][0]+2; MinusHen(i); check=true; } } if (Foxs[i][1]<5) { if ((StringGrid1->Cells[Foxs[i][0]][Foxs[i][1]+1]=="К")&&(StringGrid1->Cells[Foxs[i][0]][Foxs[i][1]+2]=="")) { StringGrid1->Cells[Foxs[i][0]][Foxs[i][1]]=""; StringGrid1->Cells[Foxs[i][0]][Foxs[i][1]+1]=""; StringGrid1->Cells[Foxs[i][0]][Foxs[i][1]+2]="Л"; Foxs[i][1]=Foxs[i][1]+2; MinusHen(i); check=true; } } if (Foxs[i][1]>1) { if ((StringGrid1->Cells[Foxs[i][0]][Foxs[i][1]-1]=="К")&&(StringGrid1->Cells[Foxs[i][0]][Foxs[i][1]-2]=="")) { StringGrid1->Cells[Foxs[i][0]][Foxs[i][1]]=""; StringGrid1->Cells[Foxs[i][0]][Foxs[i][1]-1]=""; StringGrid1->Cells[Foxs[i][0]][Foxs[i][1]-2]="Л"; Foxs[i][1]=Foxs[i][1]-2; MinusHen(i); check=true; } } if (check) KillHen(i); } //---------------------------------------------------------------------------
НУЖНО ПЕРЕДЕЛАТЬ В DELPHI
klem4
8.04.2008 11:25
Цитата
НУЖНО ПЕРЕДЕЛАТЬ В DELPHI
Переделывай ... Думаешь найдешь дурачка, которому нечем заняться, кроме как сидеть разбираться и переписывать чей-то стремный код, выполняющий вообще непонятно что ? Зря надеешься.
Дан4ик
26.12.2011 23:45
У меня такая же тема по курсовому! Тока мне надо написать ее на Паскале ABC. Помогите плиз!!! Я уже начало сделал, но есть ошибки и недоработки...
Далее код...
uses abcobjects,Events,vcl;
VAR I,J,D,n,nomer,x,y,x1,x2,x3,nom,ChisloSyedennyhKur:integer; Object:ObjectABC; Kury,Lisy:array[1..20,1..20] of ObjectABC; txt: TextABC;
procedure MOVE; Begin writeln('Введите номер курицы, которую вы хотели передвинуть'); readln(nomer); writeln('Нажатием стрелки, укажите ход'); readln(nomer); For I:=1 to 9 do begin For J:=1 to 8 do begin If nomer=Kury[I,J].number then writeln('---'); end; end; End;
procedure RASKLAD; Begin y:=0; nom:=0; For I:=1 to 9 do begin x:=0; For J:=1 to 8 do begin If ((y>=200) and (y<=250) and (x<=300)) or ((y>=250) and (y<=350) and (x>=100) and (x<=200)) then begin nom:=nom+1; Kury[I,J]:=PictureABC.Create(x,y,'c:\22.gif'); Kury[I,J].Tofront; Kury[I,J].number:=nom; end; If ((x=100) or (x=200)) and (y=150) then begin Lisy[I,J]:=PictureABC.Create(x,y,'c:\11.gif'); Lisy[I,J].Tofront; end; x:=x+50; end; y:=y+50; end; MOVE; End;
procedure SOZDANIE_Polya; Begin; y:=50; For I:=1 to 2 do begin x:=100; For J:=1 to 3 do begin object:=CreateSquareABC(x,y,50,claqua); Object.Toback; x:=x+50; end; y:=y+50; end; y:=150; For I:=1 to 3 do begin x:=0; For J:=1 to 7 do begin object:=CreateSquareABC(x,y,50,claqua); Object.Toback; x:=x+50; end; y:=y+50; end; y:=300; For I:=1 to 2 do begin x:=100; For J:=1 to 3 do begin object:=CreateSquareABC(x,y,50,claqua); Object.Toback; x:=x+50; end; y:=y+50; end; RASKLAD; End;
begin SetWindowCaption('Игра "2 лисы и 20 куриц"'); SetWindowWidth(400); SetWindowHeight(450); SOZDANIE_Polya; txt:=TextABC.Create(10,WindowHeight-30,14,clRed,'Съеденных кур: 0'); {txt.Text:='Съеденных кур: '+IntToStr(ChisloSyedennyhKur);} end.
P.S. 11-рисунок лисы, 22 - курицы.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.