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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2011, 00:21   #1
Lulilu_sp
Новичок
Джуниор
 
Регистрация: 27.05.2011
Сообщений: 2
По умолчанию Написать программу “Тур коня” на Паскале в Turbo Delphi

Конь из любой позиции на шахматном поле должен побывать на каждой клетке не более одного раза. Необходимо пройти все клетки. Пользователь задает только начальную позицию. Желательно с "защитой от дурака". На Паскале в Turbo delphi в Forms Applications.
СРОЧНО.

Часть программы уже написана, но необходима значительная доработка.. =)

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, math, ComCtrls, Menus;

type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Image2: TImage;
StatusBar1: TStatusBar;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure Paint;
procedure N2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit3;
var x1,y1,a,i,j,n:integer;
m:array [1..8,1..8] of integer;
Xmouse, Ymouse:integer;
Xt,Yt,Xt1,Yt1: integer;
f:boolean;
st:string;
{$R *.DFM}

procedure Tform1.Paint;
begin
Image1.Canvas.brush.color := clwhite;
Image1.Canvas.Rectangle(0,0,image1. Width,image1.Height);
for i:=0 to 8 do
begin
image1.Canvas.MoveTo (x1*i,0);
image1.Canvas.LineTo( x1*i,y1*8);
image1.Canvas.MoveTo (0,y1*i);
image1.Canvas.LineTo( x1*8,y1*i);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
x1:=40;y1:=40;
paint;
for i:=1 to 8 do
for j:= 1 to 8 do
m[i,j]:=0;

end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Xmouse:=x;
Ymouse:=y;
end;

procedure TForm1.Image1Click(Sender: TObject);
begin
Xt:= ceil(Xmouse/x1);
Yt:= ceil(Ymouse/y1);
if f=false then
begin
f:= true;
image2.Visible:=true;
image2.Left:=(xt-1)*x1+4;
image2.Top:= (Yt-1)*y1+4;
Image1.Canvas.brush.color := clSilver;
Image1.Canvas.Rectangle((Xt-1)*x1,(Yt-1)*y1,Xt*x1,Yt*y1);
n:=n+1;
Image1.Canvas.Font.Style:=[fsBold];
Image1.Canvas.TextOut((Xt-1)*x1+10,(Yt-1)*y1+10,IntToStr(n));
m[Xt,Yt]:=1;
Xt1:=Xt;Yt1:=Yt;
StatusBar1.SimpleText:='Вы сделали первый ход';
end
else
begin
if (((Xt1= Xt+2) and (Yt1=Yt+1)) or ((Xt1= Xt+2) and (Yt1=Yt-1)) or
((Xt1= Xt-2) and (Yt1=Yt+1)) or ((Xt1= Xt-2) and (Yt1=Yt-1)) or
((Xt1= Xt+1) and (Yt1=Yt+2)) or ((Xt1= Xt+1) and (Yt1=Yt-2)) or
((Xt1= Xt-1) and (Yt1=Yt+2)) or ((Xt1= Xt-1) and (Yt1=Yt-2)))
then
if m[Xt,Yt]=0 then
begin
image2.Left:=(xt-1)*x1+4;
image2.Top:= (Yt-1)*y1+4;
n:=n+1;
Image1.Canvas.brush.color := clSilver;
Image1.Canvas.Rectangle((Xt-1)*x1,(Yt-1)*y1,Xt*x1,Yt*y1);
Image1.Canvas.TextOut((Xt-1)*x1+10,(Yt-1)*y1+10,IntToStr(n));
m[Xt,Yt]:=1;
Xt1:=Xt;Yt1:=Yt;
StatusBar1.SimpleText:='До победы осталось ходов: '+ IntToStr(64-n);

end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
f:=false;
button1.Click;
StatusBar1.SimpleText:='Щелкните где-нибудь в поле ';
end;

procedure TForm1.N1Click(Sender: TObject);
begin
f:=false;
Image2.Visible:=false;
paint;
for i:=1 to 8 do
for j:= 1 to 8 do
m[i,j]:=0;
n:=0;
end;

procedure TForm1.N2Click(Sender: TObject);
begin
showMessage ('Для победы необходимо обойти все клетки шахматной доски ходом коня, побывав в каждой лишь по одному разу');
end;

end.

Нужен алгоритм, чтобы все действия (ходы) выполнялись автоматически, с задержкой.

Последний раз редактировалось Lulilu_sp; 27.05.2011 в 01:07.
Lulilu_sp вне форума Ответить с цитированием
Старый 27.05.2011, 01:01   #2
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
По умолчанию

Это попытка предложить работу? Или нам телепатически исправлять твой код?))

Прога на основе алгоритма поиска цикла Гамельтона.
Могу сделать полностью с нуля(за печеньку), доработкой чужого кода не занимаюсь.))
Ksardas13 вне форума Ответить с цитированием
Старый 27.05.2011, 01:07   #3
Lulilu_sp
Новичок
Джуниор
 
Регистрация: 27.05.2011
Сообщений: 2
По умолчанию

И какова цена печеньки?
Lulilu_sp вне форума Ответить с цитированием
Старый 30.05.2011, 03:03   #4
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
По умолчанию

[щас будет долгое вступление, его можно не читать]
Первый минус: В ближайшее время завален заказами с печеньем. Только если на след выходных(т.е.4 и 5 числа).
Второй минус: Паскаль я последний раз щупал очень давно, так что придётся его вспоминать и никаких наработок на нём у меня нет.Так что это внаглую взвинчивает цену, увы.(
Третий минус: Универ глодает мою ногу и ползёт всё выше.

И всё же, в след выходные могу сделать. Стоимость учитывает напряжённость нынешней обстановки и необходимость вспоминать паскаль. Так что за 100 печенюшек готов напрячься и сделать(если на С++, то выйдет дешевле)(но если возьмусь - сделаю всё на совесть).
(а, и да, одна печенюшка 20 руб)
Если решишься - моя аська 473010803.

А вообще, задача стара как мамонты(плюс минус пару сотен лет). Погугли, наверняка кто нить когда нить её уже делал и по доброму выложил в инет.
(твой код не смотрел, быть ты почти уже её сделал(а))))

Последний раз редактировалось Ksardas13; 30.05.2011 в 03:22.
Ksardas13 вне форума Ответить с цитированием
Старый 30.05.2011, 11:32   #5
who i
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 18
По умолчанию

Введи в гугле ТУР коня не делфи (или паскале), в технаре делал такое но года 2 назад, а тут понадоблися и первая ссыль гугла то что нужно!
who i вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу демонстрации графических возможностей Turbo C++ и обучающую работе с основными граф Donny537 Помощь студентам 0 09.05.2011 17:11
написать программу на Turbo Pascal 7.0 Sashko_Milashko Фриланс 11 15.02.2010 13:09
написать программу на Turbo Pascal 7.0 Sashko_Milashko Помощь студентам 1 14.02.2010 00:47