Пытаюсь написать игру ханойские башни для сдачи курсовой (заочник) знаний пока не хватает, но тем что есть пытаюсь воспользоваться
Алгоритм такой:
Все пастроенно на массиве N строк и 3 столбца, далее этот массив заполняется так:
1 0 0
2 0 0
.......
N 0 0
далее нажатиями клавиш я перезаполняю массив по принципу ханойской башни. В результате добавлю гафическое отображение всех этих действий.
диски будут привязаны к элементам массива, строкам и столбцам. Вообщем пока не доработанно из за ожного сбоя.
Внимание вопрос:
вот исходник алгоритма заполнения матрици.
uses crt;
var
hb:array[1..9,1..3] of integer;
stop:boolean;
key:char;
i,j,n,m,k,l,a:integer;
begin
clrscr;
write('vvedite chislo diskov ');
readln(m);
{writeln;}
l:=1;
k:=1;
n:=3;
a:=0;
for i:=1 to m do
begin
for j:=1 to n do
begin
hb[i,j]:=k;
write(hb[i,j]:3);
k:=0;
end;
l:=l+1;
k:=k+l;
writeln;
end;
writeln;
{readkey;}
writeln;
stop:=false;
while stop=false do
begin
if keypressed then
key:=readkey;
if (key='q') or (key='Q') then stop:=true;
if (key='1') then j:=1;
if (key='2') then j:=2;
if (key='3') then j:=3;
{принажамтии клавиши вверх "а" присваевается знаяение элемента матрици
вот тут то и проблема, привыборе второго столбца, в нем все элементы "0",
"а" присваевается значение 10, привыборе третьего столбца "а" присваевается
значение 3 откуда эти значения беруться я вообще понять не могу
помогите пожалуйста разобраться в принципе из за этого графическое
представление всего этого действия и остановилось}
if (ord(key)=72) then
begin
i:=0;
repeat
begin
i:=i+1;
a:=hb[i,j];
end;
until hb[i,j]>0;
hb[i,j]:=0;
end;
if (ord(key)=80) then
begin
i:=0;
repeat
begin
i:=i+1;
end;
until (hb[i,j]>0) or (i=m);
if hb[i,j]=0 then
begin
hb[i,j]:=a;
a:=0;
end
else
begin
if (a>=hb[i,j]) or (a=0) then writeln('NO') else
begin
i:=i-1;
hb[i,j]:=a;
a:=0;
end;
end;
end;
if (ord(key)=13) then
begin
for i:=1 to m do
begin
for j:=1 to n do
begin
write(hb[i,j]:3);
end;
writeln;
end;
writeln(a);
end;
key:=readkey;
end;
end.
Как сделю все полностью закончу вывложу полный исходник может кому пригодится
М | При выкладывании кода, пожалуйста, используй теги. Лопарь |