İyi Günler Arkadaşlar.. Bir sorunum var aşağıdaki olayı C Dilinde Yazmam Gerekiyor.. Şimdiden Teşekkür Ederim..
5 e 5 bir ızgara düşünün. Avı ve avcıyı rastgele bir yere koyuyorsunuz. Avcı her yöne gidebilir iken av sadece sağa sola yukarı ve aşağı gidebilir. Yani avcı çapraz da gidebilir. Her durumda sadece bir adım atabilirler. Avcı avı her yerde görebilir. Av alanı sınırlıdır. Av avcı uzaklığı= √(x1-x2) ² +(y1-y2) ² . Av avcıyı 1.5 m den az olan yerlerde görebilir ve en uzağa kaçacak. Kimse alan dışına çıkamayacak. Av avcıyı en kısa sürede nasıl yakalar? Not: ( En sonunda Av Yakalandı Diye Mesaj Çıkacak)
Av Avcı Problemi
Yukarıdaki problem de ilk olarak 5-5 bir kare matris olusumu gerekmektedir.'time' kutuphanesini programa dahil ederek,rand() fonksiyonu ile av ve avcıyı kare matrisinin boyutları arasında iki noktaya yerlestirmek yapılacak ilk hamledir.Bunun icin,
x1=rand()%5 ve x2=rand()%5 ifadesi yazılabilir(aynı durum avın koordinatları icinde gecerli olacaktır).
Avcının koordinatlarına x1 ve y1 denilirse,avın koordinatları x2 ve y2 olabilir.O halde
if( sqrt(pow(x2-x1,2)+pow(y2-y1,2)) < 1.5 ) seklindeki bir karar yapısı ile avın bulundugu noktadan,yani x2 ve y2 noktasından belirtilen aralıkta kacması istenebilir.
ornek olarak işletim yukarıdaki if() bloguna girdiginde,
x2-=1 | x2+=1 | y2+=1 | y2-=1 ifadelerinden bir tanesi,sınır durumuna gore işletilebilir.
Oyunun sonlanma(terminate) noktası ise,avcı ve avın aynı koordinat noktası uzerinde olması ile gercekleşir.
Yapmak istediginiz programı kodlarsanız,gereken noktalarda yardımcı olmaya calısırım.
Başarılar
aynı sorun bende de var kardeş bi türlü içinde cıkamıorummm acıl yardım ederseniz sevinirim bu hafta sonu yaapmam lazım mutlaka
arkadaşlar bu soruyu benim de acil yapmam gerekiyor ve kod a dökemiyorum.bu oyunu kod şeklinde yazabilir misiniz?
arkadaşlar bu soruyu çözebilecek biirisi yok mu???acil lazım ne olur yardım edin lütfen!!!!!
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
int matrix[5][5];
int avX,avY,avciX,avciY;
void yerlestir() {
matrix[0][0]=0;
srand(time(NULL));
int x=rand()%5;
int y=rand()%5;
matrix[x][y]=2; // av yerlestir
avX=x;avY=y;
while(matrix[x][y]==2) {
x=rand()%5;y=rand()%5;
if(matrix[x][y]!=2) {
matrix[x][y]=1; // avci yerlestir
avciX=x;avciY=y;
}
}
}
void goruntu() {
int i,j;
for(i=0;i<5;i++) {
for(j=0;j<5;j++)
printf("%d ",matrix[j]);
printf("\n");
}
}
void oyna() {
int hamleSayisi=0;
while(1) {
int hamle=0;
printf("Avciyi Hareket Ettir? -> sag 6-sol 4-asagi 2-yukari 8-sagUstCapraz 9-solUstCapraz 7-sagAltCapraz 3-solAltCapraz 1\n");
hamle=getche();
hamleSayisi++;
matrix[avciX][avciY]=0;
switch(hamle) {
case 49: avciX++;avciY--;
break;
case 50: avciX++;
break;
case 51: avciX++;avciY++;
break;
case 52: avciY--;
break;
case 54: avciY++;
break;
case 55: avciX--;avciY--;
break;
case 56: avciX--;
break;
case 57: avciX--;avciY++;
break;
}
matrix[avciX][avciY]=1;
if(avciX==avX && avciY==avY) {
printf("\n\n%d hamlede Av yakalandi\n",hamleSayisi);
system("pause");
break;
}
double durum[4];
if(sqrt(pow(avciX-avX,2)+pow(avciY-avY,2)) < 1.5)
{
if(avX+1 < 5)
durum[0]=sqrt(pow(avciX-(avX+1),2)+pow(avciY-avY,2));
else
durum[0]=-100;
if(avX-1 > -1)
durum[1]=sqrt(pow(avciX-(avX-1),2)+pow(avciY-avY,2));
else
durum[1]=-100;
if(avY+1 < 5)
durum[2]=sqrt(pow(avciX-avX,2)+pow(avciY-(avY+1),2));
else
durum[2]=-100;
if(avY-1 > -1)
durum[3]=sqrt(pow(avciX-avX,2)+pow(avciY-(avY-1),2));
else
durum[3]=-100;
double temp=durum[0];
int index=0,i=0;
for(i=1;i<4;i++) {
if(temp < durum) {
temp=durum;
index=i;
}
}
matrix[avX][avY]=0;
int kacamassaX=avX,kacamassaY=avY;
switch(index) {
case 0: avX++;
break;
case 1: avX--;
break;
case 2: avY++;
break;
case 3: avY--;
break;
}
if(avX > -1 && avY > -1 && avX < 5 && avY < 5)
matrix[avX][avY]=2;
else
matrix[kacamassaX][kacamassaY]=2;
}
system("cls");
goruntu();
}
}
main() {
yerlestir();
goruntu();
oyna();
return 0;
}
Yogun Talep uzerine yukarıdaki oyunun C dilindeki karsılıgını yayınlıyorum.
Başarılar
Yukarıda gondermiş oldugum program,oyunun kaba taslagını yansıtmaktadır.Oyun uzerindeki gerekli iyileştirmeler ve kontroller kullanıcılara bırakılmıştır.
Başarılar
Hunter & Prey Programı C# ile kodlanmış hali. Sorun ile uğraşan arkadaşlara faydalı olması için burada paylaşıyorum. :)