Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
27
Cevap
736
Tıklama
0
Öne Çıkarma
Javascript ödevim lütfen yardım edinN!!
E
13 yıl
Onbaşı
Konu Sahibi

Merhabalar benim bir ödevim var biz yılan oyununa benzer birşey yaptık hocamız bizden SETINTERVAL kodunu kullanarak yön tuşlarından birine basınca yılanın sürekli o yöne doğru durmadan hareket etmesini istiyor sonra başka bir yön tuşuna basınca bu seferde o yöne doğru sürekli hareket edecek yardım edermisiniz İŞTE KODLAR;

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>yılan doyurma</title>
<script>
var yemL;
var yemT;
var puan=0;
var hamle=0;
var git;
function git(yon) {

hamle++;
var top=document.getElementById("gezici").offsetTop;
var left=document.getElementById("gezici").offsetLeft;


if (yon.keyCode == 38){
top=top-10;
if(top < 113) top = 403;
document.getElementById("gezici").style.top = top+"px";
}else if(yon.keyCode == 40) {
top=top+10;
if(top > 403) top = 113;
document.getElementById("gezici").style.top = top+"px";
}
else if(yon.keyCode == 39) {
left=left+10;
if(left > 499) left = 9;
document.getElementById("gezici").style.left = left+"px";
}
else if(yon.keyCode == 37) {
left=left-10;
if(left < 9) left = 499;
document.getElementById("gezici").style.left = left+"px";
}
if ((top == yemT) && (left == yemL)){
yemle();
puan = puan + (100 - hamle);
document.getElementById("puan").innerHTML = puan;
hamle = 0;
}
document.getElementById("hamle").innerHTML = 1100-hamle;
document.getElementById("kordinat").innerHTML="("+top+","+left+")";



}
function yemle() {
var top= Math.floor(Math.random()*300);
var left= Math.floor(Math.random()*500);

top = top - (top%10);
left = left - (left%10);

top = top + 113;
left = left + 9;

document.getElementById("yem").style.left = left+"px";
document.getElementById("yem").style.top = top+"px";


yemL=left;
yemT=top;
}
</script>
<style>
body{
font-family:Jokerman;
color:#333;
font-size:24px;

}

.cerceve{
width:500px;
height:300px;
border:1px solid #000;

}
#gezici{
width:10px;
height:10px;
background-color:#000;
position:absolute;
box-shadow:0 0 10px #00FF00;
border-radius:10px;
}
#yem{
width:10px;
height:10px;
background-color:#00F;
position:absolute;

}
h1{
float:left;
}
</style>
</head>
<h2>Yılancık</h2>
<body onLoad="yemle()" onKeyPress="git(event)">
<div class="cerceve">
<div id="gezici"></div>
<div id="yem"></div>
</div>

<div id="kordinat"></div>
hamle<div id="hamle"></div>
puan<div id="puan"></div>

</body>
</html>

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi Emrecanxx -- 9 Ocak 2013; 18:10:28 >

A
13 yıl
Yüzbaşı

Denemedim bu kodları ama sorun ne?


Bu mesaja 1 cevap geldi.
E
13 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: AYHANSARI

Denemedim bu kodları ama sorun ne?

Bu kodlarda bi sorun yok sadece yılan yön tuşlarından birine bastığımızda sürekli o yöne hareket etmesi lazım setInterval kullanarak yapmamız lazımmış yardım edermisiniz.
Şu sitedeki gibi yön tuşuna basınca hep oyöne gidecek:http://patorjk.com/games/snake/





< Bu mesaj bu kişi tarafından değiştirildi Emrecanxx -- 8 Ocak 2013; 16:29:33 >
Bu mesaja 1 cevap geldi.
A
13 yıl
Yüzbaşı

Programlama dillerinde Timer kullanılıyordu. Burada SetInterval kullanacaksın. 2 parametresi var. 1.si yapılacak iş, 2.si bekleme süresi.. bekleme süresini 100 olarak ayarlarsan sn.'nin 10 da biri kadar sürede işlemi tekrar eder.

Tahminimce burada sonsuz bir While döngüsü kuracaksın. Burada amaç fonksiyonun sürekli çağrılmasını sağlamak. Mesela sen ESC'ye basınca döngüden çıklmasını sağlarsın. Sonsuz While döngüsü kurabilir misin?


Bu mesaja 1 cevap geldi.
A
13 yıl
Yüzbaşı

Mesela

zamanlayici = setTimeout('isle()',100);

Burada zamanlayici bir nesne, isle fonksiyonu her 100 ms de bir tekrar edecek..

isle() fonksiyonunun sürekli çalışması için de fonksiyonu;
while(Şart) //Sonsuz döngü olmasını sağla. Şart hiç bir zaman gerçekleşmesin. ESC'ye basınca çıksın.
{
isle()
}

döngüsü içinde çağır.

:))))


Bu mesaja 1 cevap geldi.
E
13 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: AYHANSARI

Mesela

zamanlayici = setTimeout('isle()',100);

Burada zamanlayici bir nesne, isle fonksiyonu her 100 ms de bir tekrar edecek..

isle() fonksiyonunun sürekli çalışması için de fonksiyonu;
while(Şart) //Sonsuz döngü olmasını sağla. Şart hiç bir zaman gerçekleşmesin. ESC'ye basınca çıksın.
{
isle()
}

döngüsü içinde çağır.

:))))






Siz bana yolladığım kod üzerinde eklemeler yapıp yollayabilirmisiniz ben pek bilgili değilim de bu konuda lütfen yardım edin çok lazım hoca sözlü notu vericek bu ödeve


Bu mesaja 1 cevap geldi.
A
13 yıl
Yüzbaşı

Ben de bilişim tekno. öğretmeniyim. Bunu yaparsam meslektaşıma saygızılık yapmış olurum. Bence sen bunla biraz uğraş Emrecanxx :)


Bu mesaja 1 cevap geldi.
E
13 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: AYHANSARI

Ben de bilişim tekno. öğretmeniyim. Bunu yaparsam meslektaşıma saygızılık yapmış olurum. Bence sen bunla biraz uğraş Emrecanxx :)

Peki nasıl yapabileceğimi anlatırmısınız kodları nereye koymam lazım if değilde while mı kullanmam lazım


Bu mesaja 1 cevap geldi.
A
13 yıl
Yüzbaşı

Yukarıdaki kodu kendin mi yazdın, bir yerden mi buldun?


Bu mesaja 1 cevap geldi.
E
13 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: AYHANSARI

Yukarıdaki kodu kendin mi yazdın, bir yerden mi buldun?

Kendim yazdım


Bu mesaja 1 cevap geldi.
A
13 yıl
Yüzbaşı

Kodları bi inceleyim ben..





< Bu mesaj bu kişi tarafından değiştirildi ayhan_sr -- 8 Ocak 2013; 23:06:47 >
Bu mesaja 2 cevap geldi.
E
13 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: AYHANSARI

Kodları bi inceleyim ben..

Lütfen yardım edin yoksa 0 alıcam şuanda bir tek sizin yardımınıza kalmış durumdayım



A
13 yıl
Yüzbaşı

Yemle yılanı büyütmek için mi? yemT ve yemL neyi ifade ediyor?


Bu mesaja 1 cevap geldi.
E
13 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: AYHANSARI

Yemle yılanı büyütmek için mi? yemT ve yemL neyi ifade ediyor?

yemle functıonu yemin raskele yerde çıkması için yemt=yemtop yeml=yemleft anlamında


Bu mesaja 1 cevap geldi.
E
13 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Emrecanxx

quote:

Orijinalden alıntı: AYHANSARI

Yemle yılanı büyütmek için mi? yemT ve yemL neyi ifade ediyor?

yemle functıonu yemin raskele yerde çıkması için yemt=yemtop yeml=yemleft anlamında

setInterval kullanarak yapılacaktı onuda hatırlatayım dedim yardımınızı bekliyorum şimdiden çok teşekkür ederim.İyiki varsınız.


Bu mesaja 1 cevap geldi.
A
13 yıl
Yüzbaşı

emrecanXX. Tamamını değil ama setInterval ile istediğin hareketi sağladım. Sürekli hareket var. Yön tuşları kontrolünü buna ekle.. Uğraş biraz...

<html>
<head>
<script type="text/javascript">
var ust=100;
var sol=100;
function basla()
{
yemle();
setInterval("git();",50);
}
function git()
{
ust=ust+10;
sol=sol+10;
if(ust > 403) ust = 113;
if(sol > 499) sol = 9;
document.getElementById("gezici").style.top =ust+"px";
document.getElementById("gezici").style.left =sol+"px";
}
function yemle()
{
var top= Math.floor(Math.random()*300);
var left= Math.floor(Math.random()*500);
top = top - (top%10);
left = left - (left%10);
top = top + 113;
left = left + 9;
document.getElementById("yem").style.left = left + "px";
document.getElementById("yem").style.top = top + "px";
yemL=left;
yemT=top;
}
</script>
<style>
body{
font-family:Jokerman;
color:#333;
font-size:24px;
}

.cerceve{
width:500px;
height:300px;
border:1px solid #000;

}
#gezici{
width:10px;
height:10px;
background-color:#000;
position:absolute;
box-shadow:0 0 10px #00FF00;
border-radius:10px;
}

#yem{
width:10px;
height:10px;
background-color:#00F;
position:absolute;
}

h1{
float:left;
}
</style>
</head>
<body onload="basla()">
<h2>Yılancık</h2>
<div class="cerceve">
<div id="gezici"></div>
<div id="yem"></div>
</div>
<div id="kordinat"></div>
hamle<div id="hamle"></div>
puan<div id="puan"></div>
</body>
</html>

YILANININ BOYUTU UZAMAYACAKSA, İŞİN BUNDAN SONRA KOLAY. AMA UZAYACAKSA İŞİN İÇİNE BAŞKA ŞEYLERDE GİRİYOR BİLGİN OLSUN...





< Bu mesaj bu kişi tarafından değiştirildi ayhan_sr -- 9 Ocak 2013; 9:24:20 >
Bu mesaja 1 cevap geldi.
E
13 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Kod_Dünyası

emrecanXX. Tamamını değil ama setInterval ile istediğin hareketi sağladım. Sürekli hareket var. Yön tuşları kontrolünü buna ekle.. Uğraş biraz...

<html>
<head>
<script type="text/javascript">
var ust=100;
var sol=100;
function basla()
{
yemle();
setInterval("git();",50);
}
function git()
{
ust=ust+10;
sol=sol+10;
if(ust > 403) ust = 113;
if(sol > 499) sol = 9;
document.getElementById("gezici").style.top =ust+"px";
document.getElementById("gezici").style.left =sol+"px";
}
function yemle()
{
var top= Math.floor(Math.random()*300);
var left= Math.floor(Math.random()*500);
top = top - (top%10);
left = left - (left%10);
top = top + 113;
left = left + 9;
document.getElementById("yem").style.left = left + "px";
document.getElementById("yem").style.top = top + "px";
yemL=left;
yemT=top;
}
</script>
<style>
body{
font-family:Jokerman;
color:#333;
font-size:24px;
}

.cerceve{
width:500px;
height:300px;
border:1px solid #000;

}
#gezici{
width:10px;
height:10px;
background-color:#000;
position:absolute;
box-shadow:0 0 10px #00FF00;
border-radius:10px;
}

#yem{
width:10px;
height:10px;
background-color:#00F;
position:absolute;
}

h1{
float:left;
}
</style>
</head>
<body onload="basla()">
<h2>Yılancık</h2>
<div class="cerceve">
<div id="gezici"></div>
<div id="yem"></div>
</div>
<div id="kordinat"></div>
hamle<div id="hamle"></div>
puan<div id="puan"></div>
</body>
</html>

YILANININ BOYUTU UZAMAYACAKSA, İŞİN BUNDAN SONRA KOLAY. AMA UZAYACAKSA İŞİN İÇİNE BAŞKA ŞEYLERDE GİRİYOR BİLGİN OLSUN...

Çok teşekkür ederim. Yılanın boyu uzamayacak ama bunun devamında yön tuşlarının kodlarını nereye yazmam lazım yardımcı olurmusunuz





< Bu mesaj bu kişi tarafından değiştirildi Emrecanxx -- 9 Ocak 2013; 17:30:16 >
Bu mesaja 1 cevap geldi.
A
13 yıl
Yüzbaşı

Tuşları git() fonksiyonunun içinde kontrol edeceksin. Ama bir sorun var. Basılan tuşları algılamıyor...


Bu mesaja 1 cevap geldi.
A
13 yıl
Yüzbaşı

http://www.mehmetduran.com/files/javascript_tuslar/keycode.htm

burada bir örnek var. Tuşları algılıyor. Ama kaynağı görüntüleyince renkli olan satıra bak.. Bu satır olmayınca çalışmıyor..

<script type="text/javascript" src="http://mehmetduran.com/media/js/jquery-1.2.6.pack.js"></script>
<script type="text/javascript">
var x = 200, y = 200;
$(document).ready(function(){

}).keydown(function(event){
var keys = new Array(37, 38, 39, 40);
var code = (event.which) ? event.which : event.keyCode;
if(code == keys[0]){ x = x - 3; $("#kutu").css("left", x+"px")}
if(code == keys[1]){ y = y - 3; $("#kutu").css("top", y+"px");}
if(code == keys[2]){ x = x + 3; $("#kutu").css("left", x+"px");}
if(code == keys[3]){ y = y + 3; $("#kutu").css("top", y+"px");}
});
</script>


Bu mesaja 1 cevap geldi.
E
13 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Kod_Dünyası

http://www.mehmetduran.com/files/javascript_tuslar/keycode.htm

burada bir örnek var. Tuşları algılıyor. Ama kaynağı görüntüleyince renkli olan satıra bak.. Bu satır olmayınca çalışmıyor..

<script type="text/javascript" src="http://mehmetduran.com/media/js/jquery-1.2.6.pack.js"></script>
<script type="text/javascript">
var x = 200, y = 200;
$(document).ready(function(){

}).keydown(function(event){
var keys = new Array(37, 38, 39, 40);
var code = (event.which) ? event.which : event.keyCode;
if(code == keys[0]){ x = x - 3; $("#kutu").css("left", x+"px")}
if(code == keys[1]){ y = y - 3; $("#kutu").css("top", y+"px");}
if(code == keys[2]){ x = x + 3; $("#kutu").css("left", x+"px");}
if(code == keys[3]){ y = y + 3; $("#kutu").css("top", y+"px");}
});
</script>


Son bir ricada bulunsam benim kodlarımın üzerinde yapıp yollarmısınız


Bu mesaja 1 cevap geldi.