Html5 ve javascript kullanarak yaptığım oyun
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
body{
padding:0;
margin:0;
overflow:hidden;/*scroll çıkmaması için*/
}
</style>
</head>
<body>
<canvas id="canvas"> </canvas>
<audio preload="true" id="carp">
<source src="Tinie Tempah - Girls Like (Official Video).mp3"/>
// <source src="Tinie Tempah - Girls Like (Official Video).mp3"/>
<audio>
<script>
/* -----------------*/
//setInterval yerine kullandık aşağıdaki ifadeyi
//canvas animasyonumuz için gerekli kod
window.animasyonFrameIstegi=(function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msequestAnimationFrame ||
function (callback){
return window.setTimeout(callback,1000/60); //1 saniyede 60 defa kodu çalıştır demek.
};
})();
//animasyonu durdumak için kullanacaz.
window.animasyonFrameIptal=(function(){
return window.cancelAnimationFrame ||
window.webkitCancelRequestAnimationFrame ||
window.mozCancelRequestAnimationFrame ||
window.oCancelRequestAnimationFrame ||
window.msCancelRequestAnimationFrame ||
clearTimeout();
})();
/* ---------------*/
//canvas değişkeni
var canvas=document.getElementById("canvas"),
ctx=canvas.getContext("2d"),//canvas context oluşturduk.
G=window.innerWidth, //oyun alanı genişliği
Y=window.innerHeight,//oyun alanı yüksekliği
mouse={},//mouse objesi(nesnesi) tanımladık
parcalar=[],//parçaları içeren array
topum={}, //top objesi(top nesnesi)
cubuk=[2], //iki cubugu içeren array
puanlar=0,//kullanıcıların puanları
hiz=60,//hız saniye başına frame
carpismaParcacigi=20,//carpışma anaında çıkacak parçaçık sayısı
carpismaDegiskeni=0,
parcaPozisyonu={},//parçaların yörüngesi
kivilcimDegiskeni=1,
baslatButon={},//başlat butonu objesi(nesnesi)
resetButon={},//reset buton objesi(nesnesi)
bitti=0,
res,//animasyonu başlatan değişken
cubukCarpisma;
//canvasın tam ekran olmasını sağladık.
canvas.width=G;
canvas.height=Y;
//canvasta mouse hareketlerini algılamak için yaptık bu ifadeleri
canvas.addEventListener("mousemove",mouseHareket,true);//mouse hareket ederken mouseHareket fonksiyonunu çağır
canvas.addEventListener("mousedown",butonTiklandi,true);//mouse basılıyken butonTiklandi fonksiyonunu çağır
//carpışma müziği
carpisma=document.getElementById("carp");
//top nesnemizi tanımlıyoruz.
topum={
x:50, //topun x eksenindeki konumu
y:50, //topun y eksenindeki konumu
r:5, //yarıçap
c:"white", //renk
xh:4, //x ekseni hızı
yh:8, //y ekseni hızı
ciz:function(){
ctx.beginPath();
ctx.fillStyle=this.c;
ctx.arc(this.x,this.y,this.r,0*Math.PI,2*Math.PI,false);
ctx.fill();
}
};
//başlat butonu
baslatButon={
w:100, //genişlik
h:50, //yükseklik
x:G/2-50, //x konumu
y:Y/2-25, //y konumu
ciz:function(){
ctx.strokeStyle="white"; //karenin rengi
ctx.lineWidth=2; //karenin çizgi genişliği
ctx.strokeRect(this.x,this.y,this.w,this.h); //karenin x ve y konumu //karenin genişliği yüksekliği
ctx.font="18px Arial,sans-serif";
ctx.textAlign="center"; //karenin içindeki yazının konumunu belirttik
ctx.textBaseline="middle";
ctx.fillStyle="white"; //Başla yazısının rengi
ctx.fillText("Başla",G/2,Y/2); //Başla yazısının konumu
}
};
//reset butonu
//başlat butonu
resetButon={
w:100, //genişlik
h:50, //yükseklik
x:G/2-50, //x konumu
y:Y/2-50, //y konumu
ciz:function(){
ctx.strokeStyle="white"; //karenin rengi
ctx.lineWidth=2; //karenin çizgi genişliği
ctx.strokeRect(this.x,this.y,this.w,this.h); //karenin x ve y konumu //karenin genişliği yüksekliği
ctx.font="18px Arial,sans-serif";
ctx.textAlign="center"; //karenin içindeki yazının konumunu belirttik
ctx.textBaseline="middle";
ctx.fillStyle="white"; //Başla yazısının rengi
ctx.fillText("Tekrar Oyna",G/2,Y/2-25); //Başla yazısının konumu
}
};
//kivilcim oluştur
function parcacikOlustur(x,y,m){ //x ve y pozisyon m 'de parcacık sayısı
this.x=x || 0;
this.y || 0 ;
this.radius=1.2;
this.xh=-1.5+Math.random()*3; //topun x hızı
this.yh=m*Math.random()*1.5; //topun y hızı
}
//hizi arttırıyoruz.
function hizArttir(){
if(puanlar%4 ==0)
if(Math.abs(topum.xh)<15){
topum.xh+=(topum.xh<0)? -1 : 1;
topum.yh+=(topum.yh<0)? -2 : 2;
}
}
//çubuk için fonksyion oluştur
function Kurek(poz){
this.h=5; //kürek yüksekliği
this.w=150; //kürek genişliği
//kurek pozisyonu
this.x=G/2-this.w/2;
this.y=(poz=="ust")? 0:Y-this.h; //ternary(if yapısı) kullandık. //aşağıdaki çubuğun düzgün görünmesi için yaptık.
}
//çubuk arrrayimize küreklerimizi ekliyoruz.
cubuk.push(new Kurek("asagi"));
cubuk.push(new Kurek("ust"));
//tuval çizmek için gerekli fonksiyon
function canvasCiz(){
ctx.fillStyle="black";
ctx.fillRect(0,0,G,Y);/*ekranı doldurduk. siyah yaptık.*/
}
//herşeyi canvas bölgesinde çizmek için gerekli fonksiyon
function ciz(){
canvasCiz();
for(var i=0;i<cubuk.length;i++){
p=cubuk[i];
ctx.fillStyle="white";
ctx.fillRect(p.x,p.y,p.w,p.h);
}
topum.ciz();
guncelle();
}
//animasyonları çalıştırmak için oluşturduğumuz döngü
function animDongu(){
res=animasyonFrameIstegi(animDongu);
ciz();
}
//animDongu(); //browser açıldığında başlar bu döngü.
function baslamaEkranı(){
ciz();
baslatButon.ciz();
}
//ekrandaki değişiklikleri güncelle fonksyionu gösterecek.
function guncelle(){
skoruGuncelle();//skorumuzu güncellicez.
//topu hareket ettiriyoruz
topum.x+=topum.xh;
topum.y+=topum.yh;
//cubugu hareket ettiriyoruz
if(mouse.x && mouse.y){ //eğer mouseda bir hareketlilik varsa aşağıdakileri yap.
for(var i=1;i<cubuk.length;i++ ){
p=cubuk[i];
p.x=mouse.x-p.w/2; //mouse nereye giderse çubukda oraya gidiyor.
}
}
//cucukları çağır
p1=cubuk[1];
p2=cubuk[2];
//çarpışma işleminin gerçekleştiği yer.
if(carpismalar(topum,p1)){ //topla çubuk birbirine değdiği anı yapıyoruz.carpısmalar fonksyionundan true dönerse bunu yapıyoruz.
carpismaEylemi(topum,p1);
}else if(carpismalar(topum,p2)){
carpismaEylemi(topum,p2);
}else{// oyunda yandığımızda yapılan işlemler (carpismalar fonksiyonundan false dönerse bunu yapıyoruz.)
//top üst veya aşağı çubuga çarparsa yapılacak işlemler
if(topum.y+topum.r>Y){ //top yüksekliği geçerse yani oyun dışına çıkarsa kaybediyoruz.üst kısım için
topum.y=Y-topum.r;
oyunBitti();
}else if(topum.y<0){//top yüksekliği geçerse yani oyun dışına çıkarsa kaybediyoruz.alt kısım için
topum.y =topum.r;
oyunBitti();
}
//top sağ ve sol duvara çarparsa
if(topum.x+topum.r>G){
topum.xh=-topum.xh; //sağ tarafa çarparsa geri dönmesi için.
topum.x=G- topum.r;//top sağ tarafa tam çarptığı anda geri dönmesi için
}else if(topum.x-topum.r<0){
topum.xh=-topum.xh;//sol tarafa çarparsa geri dönmesi için.
topum.x=topum.r;
}
}//else bitişi
if(carpismaDegiskeni==1){
for(var k=0;k<carpismaParcacigi;k++){
parcalar.push(new parcacikOlustur(parcaPozisyonu.x,parcaPozisyonu.y,cogalt));
}
}
//parcalarıyay fonksiyonu
parcalariyay();
carpismaDegiskeni=0;//parçaları sonradan silmek için
}//güncelle fonksiyon sonu
//mousemuzu hareket ettiriyoruz.
function mouseHareket(e){
//sağ ve sol yönde hareket ettirmemizi sağlayan işlemler
mouse.x=e.pageX; // x koordinatı
mouse.y=e.pageY; // y koordinatı
}
//top ile çubuk arasındaki çarpışmyı kontrol eden fonksiyon
function carpismalar(b,p){ //b:top ,p:cubuk
if(b.x +topum.r>=p.x && b.x-topum.r<=p.x+p.w){ // (x ekseni yani x koordinatı) x ekseninde top ile cubugun çarpışma durumunu kontrol ettik
if(b.y>=(p.y-p.h) && p.y>0){ //y ekseninde top çubugu geçmeden için yapılan işlemler.
cubukCarpisma=1;
return true;
}else if(b.y<=p.h && p.y==0){ //buradada oyunun bitmesini sağlıyoruz.top cubugu geçerse yanıyoruz.
cubukCarpisma=2;
return true;
}else {
return false;
}
}
}
//carpışma işlemninin gerçekleştiği an
function carpismaEylemi(topum,p){ //p:parçaçık
topum.yh= -topum.yh;
if(cubukCarpisma==1){ //top yukarı çarptığında
topum.y=p.y-p.h;
parcaPozisyonu.y=topum.y-topum.r;
cogalt=-1;
}else if(cubukCarpisma==2){ //top aşağıya çarptığında
topum.y=p.h+topum.r;
parcaPozisyonu.y=topum.y-topum.r;
cogalt=1;
}
puanlar++;
hizArttir();
if(carpisma){
if(puanlar>0){
carpisma.pause();
}
carpisma.currentTime=0;
carpisma.play();
}
parcaPozisyonu.x=topum.x;
carpismaDegiskeni=1;
}
//parçaları dağıttığımız bölüm
function parcalariyay(){
for(var j=0;j<parcalar.length;j++){
par=parcalar[j];
ctx.beginPath();
ctx.fillStyle="white";
if(par.radius>0){
ctx.arc(par.x,par.y,par.radius,0,2*Math.PI,false);
}
ctx.fill();
par.x+=par.xh;
par.y+=par.yh;
//parçacıkları oluştuktan sonra kaybet
par.radius=Math.max(par.radius-0.05,00);
}
}
//puan tablosu
function skoruGuncelle(){
ctx.fillStyle="white";
ctx.font="16px Arial,sans-serif";
ctx.textAlign="left"; //solda
ctx.textBaseline="top";//pozisyonu belirledik yukarıda solda
ctx.fillText("Puan: "+puanlar,20,20);//yazının genişliği ve yüksekliği 20 20
}
//oyunu bitiren fonksyion
function oyunBitti(){
ctx.fillStyle="white";
ctx.font="20px Arial,sans-serif";
ctx.textAlign="center";
ctx.textBaseline="middle";//yazıyı ortalayacak
ctx.fillText("Yenildin loo :( -Toplamda"+puanlar+"puan aldin",G/2,Y/2+25);//yazının konumunu belirledik.
animasyonFrameIptal(res);
bitti=1;
resetButon.ciz();//oyun bittiğinde reset butonu belirir.
}
//buton tıklandığında başla veya resetle
function butonTiklandi(e){
//mouse pozisyonu sakla
var mx=e.pageX, //mouseun x eksenindeki hareketini yakaladık
my=e.pageY; //mouseun y ekesenindeki hareketini yakaladık
//başlat butonuna tıkla
if(mx>baslatButon.x && mx<=baslatButon.x+baslatButon.w){
animDongu();
//baslat butonu ekrandan sil
baslatButon={};
}
if(bitti==1){
if(mx>resetButon.x && mx<=resetButon.x+resetButon.w){
topum.x=20;
topum.y=20;
puanlar=0;
topum.xh=4;
topum.yh=8;
animDongu();
bitti=0;
}
}
}
baslamaEkranı();
</script>
</body>
</html>
19 Temmuz 2016 Salı
18 Temmuz 2016 Pazartesi
HTML5 CANVAS ÇİZİM PALETİ YAPMA(KALEMLE ÇİZİM YAPMA)
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
window.onload=function(){
mycanvas=document.getElementById("mycanvas");
cizim=mycanvas.getContext("2d");
cizim.beginPath();
}
function eylem(event){
event=window.event; /*fonksiyondan aldığımız event parametresine windowsun eventini atıyoruz.*/
pozx=event.clientX; /*x koordinatını aldık*/
pozy=event.clientY; /*y koordinatını aldık*/
cizim.stroke();/*çizgiyi çiziyoruz*/
// cizim.lineTo(0,0); /*çizginin başlangıç noktası */
cizim.lineTo(pozx,pozy);/*çizginin bitiş noktası */
}
</script>
</head>
<body>
<canvas onmousemove="eylem()" id="mycanvas" height="500" width="500" style="border:1px solid #ccc;"></canvas>
</body>
</html>
HTML5 CANVAS DUVARA ÇARPAN TOPLAR
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
window.onload = function () {
var mycanvas = document.getElementById("canvas");
var ctx = mycanvas.getContext("2d");
var w=window.innerWidth;
var h=window.innerHeight;
mycanvas.width=w;
mycanvas.height=h;
ctx.fillStyle="black";/*ekranın tamamını siyahla kapladık*/
ctx.fillRect(0,0,w,h);
var toplar=[];
for(var a=0;a<50;a++){
toplar.push({"px":w/2,"py":h/2,"vx":5-10*Math.random(),"vy":5-10*Math.random()});
}
function animasyon(){
ctx.clearRect(0,0,w,h);
ctx.fillStyle="black";/*canvasın rengini belirledik*/
ctx.fillRect(0,0,w,h);/*canvası çizdik*/
ctx.fillStyle="white";/*topların rengini beyaz yaptık*/
for(var b=0;b<50;b++){
ctx.beginPath();
ctx.arc(toplar[b].px,toplar[b].py,15,0*Math.PI,2*Math.PI); /*toplarımızın konumunu ve yarıçapını belirledik*/
ctx.fill();
toplar[b].px+=toplar[b].vx*2; /*pozisyonuna hızı ekledik*/
toplar[b].py+=toplar[b].vy*2;
if(toplar[b].px>=w){ /*duvara çarptıgında geri dönmesini sağladık*/
toplar[b].vx=-toplar[b].vx;
}
if(toplar[b].px<=0){/*duvara çarptıgında geri dönmesini sağladık*/
toplar[b].vx=-toplar[b].vx;
}
if(toplar[b].py>=h){/*duvara çarptıgında geri dönmesini sağladık*/
toplar[b].vy=-toplar[b].vy;
}
if(toplar[b].py<=0){/*duvara çarptıgında geri dönmesini sağladık*/
toplar[b].vy=-toplar[b].vy;
}
}
}
setInterval(animasyon,20);
}
</script>
</head>
<body>
<canvas id="canvas" ></canvas>
</body>
</html>
HTML5 CANVAS DAİRESEL GRAFİK ÇİZİMİ
<!DOCTYPE html>
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.test{
border:2px solid #eee;
width:20px;
height:20px;
display:inline-block;
}
canvas{
background-color: #eee;
border:2px solid dotted;
border:2px solid #d3d3d3;
/* background-color: #000;*/
}
#gosterge{
position:absolute;
top:380px;
left:50px;
}
</style>
<script>
window.onload = function () {
var angle=Math.PI/180;
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var domates=120;//red
var patates=180;//sarı
var patlican=60;//black
var sayi=0;
function eylem(){
if(sayi>=360){
clearInterval(saydir);
ctx.beginPath();
ctx.arc(200,200,20,0*Math.PI,2*Math.PI);
ctx.fill();
ctx.beginPath();
ctx.strokeStyle="blue";
ctx.arc(200,200,100,0*Math.PI,2*Math.PI);
ctx.stroke();
}
if(sayi<=domates){
ctx.fillStyle="red";
}
else if(sayi>domates && sayi<=patates+domates){
ctx.fillStyle="yellow";
}
else{
ctx.fillStyle="black";
}
// ctx.clearRect(0,0,400,400);
ctx.translate(200,200);
ctx.rotate(angle);
ctx.translate(-200,-200);
ctx.fillRect(200,200,2,100);
sayi+=1;
}
saydir=setInterval(eylem,5);
}
</script>
</head>
<body>
<canvas id="canvas" height="400" width="400" >
Your browser does not support the HTML5 canvas tag.</canvas>
<div id="gosterge">
<div style="background-color:red" class="test"></div>domates 120
<div style="background:yellow" class="test"></div>patates 150
<div style="background:black" class="test"></div>patlıcan 90
</div>
</body>
</html>
HTML5 CANVAS ATEŞ EFEKTİ YAPMA
<!DOCTYPE html>
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
canvas{
position:absolute;
top:0;
left:0;
margin:0;
padding:0;
border:2px solid #d3d3d3;
/* background-color: #000;*/
}
</style>
<script>
window.onload = function () {
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
h=window.innerHeight;/*windowsun yükseklik değerini alır*/
w=window.innerWidth;/*windowsun genişlik değerini alır*/
canvas.height=h;
canvas.width=w;
//ctx.fillRect(0,0,w,h);
fires=[];
for (var a=0;a<100;a++){
fires.push({"x":w/2-100*Math.random(),"y":h/2,"r":30*Math.random(),"vy":5*Math.random(),"life":100*Math.random()})
}
function eylem(){
ctx.fillStyle="black";//çizilen karenin rengini siyah yaptık
ctx.clearRect(0,0,w,h);
ctx.fillRect(0,0,w,h);/*ekranı tamemen siyahla kapladık windowsun genişliği ve yüksekliği kadar.*/
ctx.globalCompositeOperation="lighter";/*renkleri saydamlaştırıyor üst üste bindiriyor.*/
for(var b=0;b<100;b++){
var renk=ctx.createRadialGradient(fires[b].x,fires[b].y,2,fires[b].x,fires[b].y,fires[b].r)//x1,y1,r1,x2,y2,r2
renk.addColorStop(0,"white");
renk.addColorStop(0.4,"yellow");
renk.addColorStop(0.6,"orange");
renk.addColorStop(1,"red");
ctx.fillStyle=renk;/*topların rengini gradient renklerinden yaptık*/
ctx.beginPath();
ctx.arc(fires[b].x,fires[b].y,fires[b].r,0*Math.PI,2*Math.PI);
ctx.fill();
fires[b].y-=fires[b].vy;
fires[b].r-=0.4;
fires[b].life-=1;
if(fires[b].life<0 || fires[b].r<0 || fires[b].y<100){
fires[b].x=w/2-100*Math.random();
fires[b].y=h/2;
fires[b].r=30*Math.random();
fires[b].life=100*Math.PI;
}
}
}
setInterval(eylem,30);
}
</script>
</head>
<body>
<canvas id="canvas" >
Your browser does not support the HTML5 canvas tag.</canvas>
</body>
</html>
HTML5 CANVAS TEXT ALİGN ÖZELLİĞİ
<!DOCTYPE html>
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="newCascadeStyleSheet.css" rel="stylesheet" type="text/css"/>
<style>
canvas{
border:1px solid #d3d3d3;
/* background-color: #000;*/
}
</style>
<script>
window.onload = function () {
var benimtuval = document.getElementById("mycanvas");
var ctx = benimtuval.getContext("2d");
ctx.font="30px arial";
ctx.textAlign="start";//end:bitişe ekler start:noktanın başına ekliyor ,right sağına ekler,left soluna ekler.
ctx.fillText("merhaba dünya ",300,200);
ctx.beginPath();
ctx.arc(300,200,5,0*Math.PI,2*Math.PI);
ctx.fill();
}
</script>
</head>
<body>
<canvas id="mycanvas" width="600" height="400" >
Your browser does not support the HTML5 canvas tag.</canvas>
</body>
</html>
HTML5 CANVAS KAR YAĞIŞI EFEKTİ YAPTIK GÜZEL UYGULAMA
<!DOCTYPE html>
<html>
<head>
<style>
canvas{
border:1px solid #d3d3d3;
/* background-color: #000;*/
}
</style>
<script>
window.onload = function () {
karlar=[];
for(var a=0;a<1000;a++){
karlar.push({"x":600*Math.random(),"y":400*Math.random(),"vy":1,"r":Math.random()});
//"ad":ramazan, "soyad":aras obje mantıgında yaptık
}
var benimtuval = document.getElementById("mycanvas");
var ctx = benimtuval.getContext("2d");
pen=new Image();
pen.src="pen.png";
resim=new Image();
resim.src="kartanesi.jpg";
function eylem(){
ctx.clearRect(0,0,600,400);
ctx.drawImage(pen,0,0,pen.width,pen.height,0,0,benimtuval.width,benimtuval.height);
ctx.fillStyle="#eee";
ctx.globalAlpha=0.8;
for(var b=0;b<karlar.length;b++){
ctx.beginPath();
ctx.arc(karlar[b].x,karlar[b].y,karlar[b].r,0*Math.PI,2*Math.PI);
ctx.fill();
karlar[b].y+=karlar[b].vy;
karlar[b].x+=0.3-Math.random();
if(karlar[b].y>600){
karlar[b].x=600*Math.random();/*0 ile 600 arasında değer üretir*/
karlar[b].y=-400*Math.random();
karlar[b].r=Math.random();/*0 ile 1 arasında değerler üretir*/
karlar[b].vy=10*Math.random();
}
ctx.globalAlpha=0.5;/*saydamlık veriyoruz yazıya*/
ctx.font="bold 30pt arial";
ctx.fillText("NEW YEARS",150,150);
ctx.globalAlpha=1;
}
}
setInterval(eylem,20);
}
</script>
</head>
<body>
<img src="pen.png" style="display:none" />
<img src="kartanesi.jpg" id="resim" style="display:none" />
<canvas id="mycanvas" width="600" height="400" >
Your browser does not support the HTML5 canvas tag.</canvas>
</body>
</html>
Kaydol:
Kayıtlar (Atom)