Site hosted by Angelfire.com: Build your free website today!
Selam arkadaslar. Proje konumuzu bir kez daha tekrar ettikten sonra olaya temel bir giris yapalim. Projedeki amacimiz bizim programladigimiz bir "fare" nin labirentteki çıkış noktasına ulaşmasını sağlamak.

Daha ayrıntılı tarif etmek gerekirse;
1) Kullanıcı istediği gibi bir labirent oluşturabilir
2) Birden fazla çıkış olabilir veya hiç çıkış olmaya bilir.
3) Birden fazla çıkış varsa "şimdilik" herhangi birini bulmak yeterli
4) Çıkış yoksa kısır döngüye girmesini önleyip bariz bi şekilde "bu labirentin çıkışı yok" gibi bir mesaj vermesini sağlamalıyız:]


Burada bence en büyük zorluk ikiye veya daha fazla sayıda yola ayrılan kısımlar. Böyle durumlarda işler fazlaca karışıyor.

Şimdi 8x8 lik bir tabloda durumu izah etmeye çalışiim. 1 lerden gidebiliriz, 0 lardan gidemeyiz.

Farzedelim ki başlangıç noktamız A1. Fare 1 gördüğü sürece gitcek

  1 2 3 4 5 6 7 8
--------------------
A 1 1 1 0 0 1 1 1
B 0 0 0 1 0 0 0 0
C 1 0 1 0 1 0 1 0
D 1 1 0 0 0 1 0 0
E 0 0 0 0 0 1 1 0
F 1 1 1 1 1 1 1 1
G 0 1 0 1 0 1 0 1
H 1 1 1 1 1 1 1 1


İzleyeceği yol;

  1 2 3 4 5 6 7 8
--------------------
A 1 1 1 0 0 1 1 1
B 0 0 0 1 0 0 0 0
C 1 0 1 0 1 0 1 0
D 1 1 0 0 0 1 0 0
E 0 0 0 0 0 1 1 0
F 1 1 1 1 1 1 1 1
G 0 1 0 1 0 1 0 1
H 1 1 1 1 1 1 1 1


A1->A2->A3

Burada A4 noktasından geçemez ve A3 te durur. A3 ün komşularını yazarsak, bunlar;
A2 (zaten geçtik),B2,B3,B4 ve A4 tür. Sadece B4 ten gidebileceği için, fare B4' e geçti.


  1 2 3 4 5 6 7 8
--------------------
A 1 1 1 0 0 1 1 1
B 0 0 0 1 0 0 0 0
C 1 0 1 0 1 0 1 0
D 1 1 0 0 0 1 0 0
E 0 0 0 0 0 1 1 0
F 1 1 1 1 1 1 1 1
G 0 1 0 1 0 1 0 1
H 1 1 1 1 1 1 1 1



Şimdilik gayet iyi, çünkü sadece 1 alternatifi vardı:]
İşte B4 te işler karışmaya başladı. Fare yoluna C3 ten de devam edebilir C5 ten de... Şayet C3 ten devam ederse izleyeceği yol;


C3->D2->D1

olacak ve daha fazla gidemeyecek. Böyle bir durumda farenin B4 noktasına dönmesi lazım. Bu sefer C5 ten devam etmeye çalışmalı ve izleyeceği yol;

  1 2 3 4 5 6 7 8
--------------------
A 1 1 1 0 0 1 1 1
B 0 0 0 1 0 0 0 0
C 1 0 1 0 1 0 1 0
D 1 1 0 0 0 1 0 0
E 0 0 0 0 0 1 1 0
F 1 1 1 1 1 1 1 1
G 0 1 0 1 0 1 0 1
H 1 1 1 1 1 1 1 1

C5->D6

Yine aynı sorun. Daha da kötü hatta. Bu sefer üç alternatifi var; C7,D7 veya E6. Bu sefer kaldığı noktayı tekrar kaydetmeli ve 3 ayrı yolu denemeli. Onların içinde de alternatifler olcaktır...

Bizi en çok kızdırcak, delirtcek, ağlatcak konu bu bence:] Eğer 1/0 sisteminde bu sorunu çözebilirsek, grafik arayüzlüsünü yapmak çok kolay.

Bu konuda fikirlerinizi bekliyorum. Görüşmek üzere;

clairvoyant@care2.com