IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Две лисы и 20 кур
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


На поле указанной формы находятся две лисы и 20 кур



Л Л
К К К К К К К
К К К К К К К
К К К
К К К
Куры могут перемещаться на один шаг вверх, влево или вправо, но не назад и не по диагонали. Лисы могут перемещаться на один шаг влево, вправо, вверх и вниз. Лиса может съесть курицу, как в игре в шашки: если в горизонтальном или вертикальном направлении за курицей на один шаг следует свободное поле, то лиса перепрыгивает через курицу и ест ее. Лисы всегда обязаны есть, и когда у них бывает выбор, они обязаны осуществить "наиболее длинное поедание". Если два приема пищи имеют одинаковую длину – выбирается любой из них.
Необходимо написать программу, играющую за лис. Игрок перемещает кур. Партнеры играют по очереди, причем куры начинают. Они выигрывают партию, если девяти из них удается занять 9 полей, образующих верхний квадрат поля. Лисы выигрывают, если им удается съесть 12 кур, т.к. в этом случае будет недостаточно оставшихся кур, чтобы занять 9 верхних полей.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


очень хорошо. и что дальше? smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Нужно решить и оформить в DELPHI!!!!

Сообщение отредактировано: is1988 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

Группа: Пользователи
Сообщений: 396
Пол: Мужской

Репутация: -  9  +


Цитата(is1988 @ 19.03.2008 6:36) *

Нужно решить и оформить в DELPHI!!!!


А мне нужно дописать курсовую и дипломную, напишешь?
Ведь все живые люди и ни у кого нет свободного времени, которое хочется потратить в пустую.
Тем более на задачки, на которые может уйти неделя, а отдачи ноль. На одном моральном удовольствии долго не протянешь.
Попробуй сам, хоть что-то сделать, представь, как это будет работать, продумай алгоритмы, а если не знаешь, как реализовать ОДИН из них, обращайся.

Стоит только начать...


--------------------
Objective-C, Unity3d
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






 ! 
Теги !!!



 
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int OneStep[20][2];
int Count=0;
int NumberHens=20;
int Foxs[2][2];
bool Sate[2]={false,false};
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
StringGrid1->Cells[2][2]="Л";
StringGrid1->Cells[4][2]="Л";
Foxs[0][0]=2;
Foxs[0][1]=2;
Foxs[1][0]=4;
Foxs[1][1]=2;
for (int i=0;i<7;i++)
for (int j=3;j<5;j++)
StringGrid1->Cells[i][j]="К";
for (int i=5;i<7;i++)
for (int j=2;j<5;j++)
StringGrid1->Cells[j][i]="К";
StringGrid1->Col=3;
StringGrid1->Row=3;
for (int i=0;i<20;i++)
for (int j=0;j<2;j++)
OneStep[i][j]=0;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
StringGrid1->Canvas->Brush->Color=clBlack;
StringGrid1->Canvas->Rectangle(0,0,StringGrid1->DefaultColWidth*2+2,StringGrid1->DefaultRowHeight*2+2);
StringGrid1->Canvas->Rectangle(0,StringGrid1->DefaultRowHeight*5+4,StringGrid1->DefaultColWidth*2+2,StringGrid1->DefaultRowHeight*7+7);
StringGrid1->Canvas->Rectangle(StringGrid1->DefaultColWidth*5+4,0,StringGrid1->DefaultColWidth*7+7,StringGrid1->DefaultRowHeight*2+2);
StringGrid1->Canvas->Rectangle(StringGrid1->DefaultColWidth*5+4,StringGrid1->DefaultRowHeight*5+4,StringGrid1->DefaultColWidth*7+7,StringGrid1->DefaultRowHeight*7+7);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
if ((ACol==1)&&(ARow==1)||(ACol==1)&&(ARow==0)||(ACol==0)&&(ARow==1)||(ACol==0)&&(ARow==0)||
(ACol==5)&&(ARow==0)||(ACol==5)&&(ARow==1)||(ACol==6)&&(ARow==0)||(ACol==6)&&(ARow==1)||
(ACol==0)&&(ARow==5)||(ACol==0)&&(ARow==6)||(ACol==1)&&(ARow==5)||(ACol==1)&&(ARow==6)||
(ACol==5)&&(ARow==5)||(ACol==5)&&(ARow==6)||(ACol==6)&&(ARow==5)||(ACol==6)&&(ARow==6))
CanSelect=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::StringGrid1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
bool check=true;
for (int i=0;i<NumberHens;i++)
{
if ((OneStep[i][0]==StringGrid1->Col)&&(OneStep[i][1]==StringGrid1->Row))
{
check=false;
break;
}
}
if (check)
{
switch(Key)
{
case 38: //UP
if ((StringGrid1->Row>0)&&((StringGrid1->Row>2)||(StringGrid1->Col>1))&&((StringGrid1->Row>2)||(StringGrid1->Col<5)))
{
if ((StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row]=="К")&&
(StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row-1]==""))
{
StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row]="";
StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row-1]="К";
OneStep[Count][0]=StringGrid1->Col;
OneStep[Count][1]=StringGrid1->Row-1;
Count++;
}
}
break;
case 37: //Left
if ((StringGrid1->Col>0)&&((StringGrid1->Col>2)||(StringGrid1->Row>1))&&((StringGrid1->Col>2)||(StringGrid1->Row<5)))
{
if ((StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row]=="К")&&
(StringGrid1->Cells[StringGrid1->Col-1][StringGrid1->Row]==""))
{
StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row]="";
StringGrid1->Cells[StringGrid1->Col-1][StringGrid1->Row]="К";
OneStep[Count][0]=StringGrid1->Col-1;
OneStep[Count][1]=StringGrid1->Row;
Count++;
}
}
break;
case 39: //Right
if ((StringGrid1->Col<6)&&((StringGrid1->Col<4)||(StringGrid1->Row>1))&&((StringGrid1->Col<4)||(StringGrid1->Row<5)))
{
if ((StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row]=="К")&&
(StringGrid1->Cells[StringGrid1->Col+1][StringGrid1->Row]==""))
{
StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row]="";
StringGrid1->Cells[StringGrid1->Col+1][StringGrid1->Row]="К";
OneStep[Count][0]=StringGrid1->Col+1;
OneStep[Count][1]=StringGrid1->Row;
Count++;
}
}
break;
}
}
Edit1->Text=NumberHens-Count;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------

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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
НУЖНО ПЕРЕДЕЛАТЬ В DELPHI


Переделывай ... Думаешь найдешь дурачка, которому нечем заняться, кроме как сидеть разбираться и переписывать чей-то стремный код, выполняющий вообще непонятно что ? Зря надеешься.

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 1
Пол: Мужской
Реальное имя: Данияр

Репутация: -  0  +


У меня такая же тема по курсовому! Тока мне надо написать ее на Паскале 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 - курицы.


Сообщение отредактировано: Дан4ик -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.01.2021 16:39
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name