Hocam dile hiç hakim değilim o yüzden saçmalıyor olabilirim ama şyle bir sorun oldu o şekilde yaparken onu aşamadım. Mesela ynü +x e doğru. sola dn ilerle diye bir procedure yazdık, orada y artacak. ama mesela 5 hamle sonra ynü -x e doğruyken sola dn ilerle procedure unu çağırdığımızda x artacak. Orada karışıyor işler benim için. Bir de bilginiz varsa, ben bu değerleri nerede tutabilirim. Yani bana 3 tane değişken olsa çzerim gibi bu şekilde. birincisi x değerini ikincisi y değerini 3. su de burnumun nereye baktığını tutsa 3. değere gre switch etsem farklı procedure ları çağırsam olur gibi. Ama kodda sadece bh bl boşta geri kalan tüm değerler kullanılıyor. Onu nasıl yapabilirim? Arrayle olur mu?

Merhaba; 8086 Programlama ile ilgili bir sorum var. Okulda bir dev verdiler nasıl yapacağımı çzmeye çalışıyorum ama bir noktada kitlendim. Şimdi 6x9 luk bir matriks üstünde lamba ve duvarlar var çeşitli kareler üstünde. Robot random bir şekilde geziniyor bir engelle karşılaştığı zaman onun ne olduğunu algılayabiliyor. Robotun gezinmesi kısmını hallettim, engellerle karşılaştığı zaman yolunu değiştirmesini de çzdüm fakat engellerin koordinatlarını nasıl alabileceğimi bilmiyorum. Yani rnek olarak robot duvarla karşılaştı o duvarın satır ve sütün değerlerini nasıl alabilirim? 0,0 noktasından başladığını varsayarak her hareket sonucunda x ve y yi increase ya da decrease edebilirim diye düşündüm. Ama onda da işin içinden çıkamadım. Çok karmaşık bir hal aldı. Çünkü atıyorum case ler iç içe artıyor ve dil assembly olunca ben de çok anlamayınca yapamadım. Başka bir yol bilen var mı? Bu arada kodu emu8086 ın içinde vb ile yazılmış robot. exe diye bir programda test ediyorum. Program 9 10 ve 11. porttan haberleşiyor assembly koduyla. Yardımcı olabilecek biri varsa gerçekten çok makbule geçer. swalker tarafından 29/Ara/15 17:54 tarihinde düzenlenmiştir

Merhaba; 8086 Programlama ile ilgili bir sorum var. Okulda bir dev verdiler nasıl yapacağımı çzmeye çalışıyorum ama bir noktada kitlendim. Şimdi 6x9 luk bir matriks üstünde lamba ve duvarlar var çeşitli kareler üstünde. Robot random bir şekilde geziniyor bir engelle karşılaştığı zaman onun ne olduğunu algılayabiliyor. Robotun gezinmesi kısmını hallettim, engellerle karşılaştığı zaman yolunu değiştirmesini de çzdüm fakat engellerin koordinatlarını nasıl alabileceğimi bilmiyorum. Yani rnek olarak robot duvarla karşılaştı o duvarın satır ve sütün değerlerini nasıl alabilirim? 0,0 noktasından başladığını varsayarak her hareket sonucunda x ve y yi increase ya da decrease edebilirim diye düşündüm. Ama onda da işin içinden çıkamadım. Çok karmaşık bir hal aldı. Yardımcı olabilecek biri varsa gerçekten çok makbule geçer. Bence doğru düşünmüşsün. c | v r-> (0,0) (0,1) (0,2) (0,3) ... (1,0) (2,0) . . Şeklinde şeklinde indislendiğini düşünürsek matrisin, sağa her adımda c değeri bir artacak, sola gidişinde azalacak. Aşağı giderken r değeri artacak, yukarı çıkarken azalacak. (0,0) da başlayıp 3 kez sağa 1 kez aşağı giderse, (1,3)'e gelecek.

Hocam dile hiç hakim değilim o yüzden saçmalıyor olabilirim ama şyle bir sorun oldu o şekilde yaparken onu aşamadım. Mesela ynü +x e doğru. sola dn ilerle diye bir procedure yazdık, orada y artacak. ama mesela 5 hamle sonra ynü -x e doğruyken sola dn ilerle procedure unu çağırdığımızda x artacak. Orada karışıyor işler benim için. Bir de bilginiz varsa, ben bu değerleri nerede tutabilirim. Yani bana 3 tane değişken olsa çzerim gibi bu şekilde. birincisi x değerini ikincisi y değerini 3. su de burnumun nereye baktığını tutsa 3. değere gre switch etsem farklı procedure ları çağırsam olur gibi. Ama kodda sadece bh bl boşta geri kalan tüm değerler kullanılıyor. Onu nasıl yapabilirim? Arrayle olur mu? 8086 hakkında hiç bir fikrim yok ben algoritmayı anlatmaya çalıştım. 3 değişken yeterli gibi geliyor. Konumu ve ynü. Sonrasında yeni konumu hesaplarken dediğin gibi yne gre hareket edeceksin. Anlattıklarından anladığım 3 operasyon var: ileri git, sola dn, sağa dn. Dnme işlemi yerinde oluyorsa yalnızca ileri git konum değiştirecek. O da ynü hangi eksene bakıyorsa o şekilde. +x'e bakıyorsa x artacak, -y'ye bakıyorsa y azalacak. Bir de verdiğin rnekte anlamadığım 2 yer var.1) +x'e bakarken sola dnersem +y'ye bakarım ve ilerlersem y artar. Ama 5 hamle sonra ynü neden -x oluyor? Arada başka hamleler mi yapıyor -x'e dnecek şekilde?2) -x'e bakarken sola dnersem -y'ye bakarım ilerlersem y azalır. Neden x artacak dedin ki?

Ben o kafayla yanlış düşünmüşüm hocam. Dediğiniz gibi olacak, bitirdim ben de kodu. Buraya yazayım, ileride karşılaşan olursa, aratırsa faydalansın. Bunları yaparken 0,0 noktasından +x ynüne bakarak hareket ettiğini varsayıyoruz. Bir tane array tanımladım. 0. eleman x koordinatını, 1. eleman y koordinatını 2. eleman da burnunun ynünü tutacak. Bir engelle karşılaştığı zaman random turn adında bir procedure çağıracak. O procedure sonunda, dnüş ynüne gre array'ın 2. elemanının değerini değiştireceğiz. Daha sonra ileri hareket edeceği procedure un içinde nce 2. elemanı karşılaştıracağız. Onun değerine gre hareket komutunu verdikten sonra arrayın 0. ve 1. değerlerini değiştireceğiz. Bir engelle karşılaştığı zaman da yine burnunun ynüne gre x ve y koordinatının +-1 değerini alarak başka bir arrayın içinde store edeceğiz.