Оператор ЭВМ
Регистрация: 11.03.2007
Сообщений: 46
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Волновой алгоритм, помогите
Сделав несколько раз так и так , после чего переписав все сначала у меня получилось! Пока это еще не алгоритм поиска пути но уже присваивать значения клеткам вроде получилось. Таким образом задача 1 из n выполнена)).
Нижеприведенный код показывает значения клеток от стартовой клетки до клетки назначения в уменьшающемся порядке, таким образом выбирая соседнию клеку с наименьшим значением можно добраться до цели. Теперь пытаюсь разобраться как мне бы это бЫ .... еще неопредилися что, но чтоб вырисовывался маршрут .
Прошу уважаемых администраторов переименовать топик (так как незнаю могули сам) в "Чайник ищет путь" .
SeedRnd MilliSecs() Graphics 640, 480,16,2 SetBuffer BackBuffer()
Global Ni
Const Nk=20
Dim P(9,9) Dim R(8,8)
Ni=0
fon1=LoadFont ("arrial", 19) SetFont fon1
;-----------------------;-------------parametrs of MAP's cells------------- For i=0 To 9 ;boarder 1 ; M For j=0 To 0 ; A P(i,j)=888 ; P Next ; Next ; B For i=0 To 0;boarder 2 ; O For j=0 To 9 ; A P(i,j)=888 ; R Next ; D Next ; E For i=0 To 9;boarder 3 ; R For j=9 To 9 ; S P(i,j)=888 ; Next ; (marks as 888) Next ; For i=9 To 9;boarder 4 ; For j=0 To 9 ; P(i,j)=888 ; Next ; Next ; ;-----------------------;
;-----------------------; For i=1 To 8 ; For j=1 To 8 ; MAP's FREE CELLS (marks as 333) P(i,j)=333 ; Next ; Next ; ;-----------------------;
;-----------------------; CHANGEBLE PARAMETRS P(3,4)=888 ; P(3,2)=888 ; P(3,3)=888 ; P(3,5)=888 ; BLOKS on MAP (marks as 888) P(4,4)=888 ; P(5,4)=888 ; P(6,4)=888 ; P(1,2)=555 ; START P(7,8)=0 ; FINISH ;-----------------------;---------------------------------------------------
Repeat
Cls
;-------------------------------------------; For i=0 To 9 ; D For j=0 To 9 ; R If P(i,j)=888 Then ; A Color 255,255,255 ; W Rect i*40,j*40,40,40,0 ; Color 180,100,108 ; M Rect 4+i*40,4+j*40,32,32,1 ; A EndIf ; P If P(i,j)=333 Then ; Color 255,255,255 ; C Rect i*40,j*40,40,40,0 ; O EndIf ; D If P(i,j)=0 Then ; E Color 255,255,255 ; Rect i*40,j*40,40,40,0 ; Oval 5+i*40,5+j*40,30,30,1 ; EndIf ; If P(i,j)=555 Then ; Color 255,255,255 ; Rect i*40,j*40,40,40,0 ; Color 145,255,225 ; Oval 5+i*40,5+j*40,30,30,1 ; EndIf ; Next ; Next ; ;-------------------------------------------;
;-------------------------------------------; For i=0 To 9 ; P For j=0 To 9 ; R If P(i,j)=888 Then ; I Color 4,5,255 ; N Text 6+i*40,9+j*40,P(i,j) ; T ElseIf P(i,j)=333 Then ; Color 0,200,0 ; T Text 6+i*40,9+j*40,P(i,j) ; E ElseIf P(i,j)=555 Then ; X Color 255,55,97 ; T Text 6+i*40,9+j*40,P(i,j) ; ElseIf P(i,j)=0 Then ; Color 255,55,97 ; Text 16+i*40,9+j*40,P(i,j) ; Else ; Color 255,0,0 ; Text 16+i*40,9+j*40,P(i,j) ; EndIf ; Color 255,255,255 ; Rect i*40,j*40,40,40,0 ; Next ; Next ; ;-------------------------------------------;
;----------------------------------------------------; For Ni=0 To Nk For i=1 To 8 For j=1 To 8 If P(i,j)=Ni Then If P(i+1,j)=333 P(i+1,j)=Ni+1 If P(i-1,j)=333 P(i-1,j)=Ni+1 If P(i,j+1)=333 P(i,j+1)=Ni+1 If P(i,j-1)=333 P(i,j-1)=Ni+1 End If Next Next Next ;----------------------------------------------------;
Flip Until KeyHit(28)
End
|