/****
* Classes
****/
// Karakter (Character) class
var Character = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('character', {
anchorX: 0.5,
anchorY: 1.0
});
self.speed = 0; // Karakteri sürükleyerek hareket ettireceğiz
// Yürüme animasyonu için parametreler
self.walkAnimTime = 0;
self.isWalking = false;
self.lastX = undefined;
self.lastY = undefined;
self.facing = 1; // 1: sağ, -1: sol
// Yürüme animasyonu ve yön için update fonksiyonu
self.update = function () {
// İlk frame'de lastX/Y ayarla
if (self.lastX === undefined) {
self.lastX = self.x;
}
if (self.lastY === undefined) {
self.lastY = self.y;
}
// Hareket algıla
var moved = self.x !== self.lastX || self.y !== self.lastY;
self.isWalking = moved;
// Yön belirle (sadece x değişimine bak)
if (self.x > self.lastX) {
self.facing = 1;
} else if (self.x < self.lastX) {
self.facing = -1;
}
// Sprite'ı yöne göre çevir
asset.scaleX = self.facing;
// Yürüme animasyonu (basit yukarı-aşağı zıplatma)
if (self.isWalking) {
self.walkAnimTime += 1;
// 0.15 ile 0.25 arası bir zıplama efekti
asset.y = Math.sin(self.walkAnimTime * 0.25) * 18;
} else {
self.walkAnimTime = 0;
asset.y = 0;
}
// Son pozisyonu güncelle
self.lastX = self.x;
self.lastY = self.y;
};
return self;
});
// Göl (Lake) class
var Lake = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('lake', {
anchorX: 0.5,
anchorY: 1.0
});
asset.alpha = 0;
self.info = "Göl: Karalar üzerindeki çukur alanlarda birikmiş tatlı veya tuzlu su kütleleridir.";
self.type = "lake";
return self;
});
// Yerşekilleri listesini oluştur
// Dağ (Mountain) class
var Mountain = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('mountain', {
anchorX: 0.5,
anchorY: 1.0
});
asset.alpha = 0;
self.info = "Dağ: Yüksek ve dik yamaçlı yerşekilleridir. Zirveleri genellikle karla kaplıdır.";
self.type = "mountain";
return self;
});
// Ova (Plain) class
var Plain = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('plain', {
anchorX: 0.5,
anchorY: 1.0
});
asset.alpha = 0;
self.info = "Ova: Deniz seviyesine yakın, geniş ve düz alanlardır. Tarım için uygundur.";
self.type = "plain";
return self;
});
// Plato (Plateau) class
var Plateau = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('plateau', {
anchorX: 0.5,
anchorY: 1.0
});
asset.alpha = 0;
self.info = "Plato: Çevresine göre yüksek, düz ve geniş alanlardır.";
self.type = "plateau";
return self;
});
// Akarsu (River) class
var River = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('river', {
anchorX: 0.5,
anchorY: 1.0
});
asset.alpha = 0;
self.info = "Akarsu: Yeryüzünde belirli bir yatak boyunca sürekli veya zaman zaman akan su akıntısıdır.";
self.type = "river";
return self;
});
// Vadi (Valley) class
var Valley = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('valley', {
anchorX: 10,
anchorY: 1.0
});
asset.alpha = 0;
self.info = "Vadi: Akarsuların aşındırmasıyla oluşan, iki yamaç arasında kalan çukurluklardır.";
self.type = "valley";
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Yerşekilleri listesini oluştur
var landforms = [];
var discoveredLandforms = [];
var infoText = null;
// Gerçekçi arka planı ekle
var background = LK.getAsset('realistic_map_bg', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
width: 2048,
height: 2732
});
game.addChild(background);
// Karakteri oluştur ve haritaya ekle
var character = new Character();
character.x = 200;
character.y = 2400;
game.addChild(character);
// Sürükleme için değişken
var dragCharacter = false;
// Harita üzerinde yerşekillerini konumlandır
function createLandforms() {
// Dağ
var mountain = new Mountain();
mountain.x = 400;
mountain.y = 1800 / 3;
landforms.push(mountain);
game.addChild(mountain);
// Ova
var plain = new Plain();
plain.x = 1600;
plain.y = 1050;
landforms.push(plain);
game.addChild(plain);
// Plato
var plateau = new Plateau();
plateau.x = 1600;
plateau.y = 1500;
landforms.push(plateau);
game.addChild(plateau);
// Vadi
var valley = new Valley();
valley.x = 400;
valley.y = 1500;
landforms.push(valley);
game.addChild(valley);
// Göl
var lake = new Lake();
lake.x = 1600;
lake.y = 600;
landforms.push(lake);
game.addChild(lake);
// Akarsu
var river = new River();
river.x = 1300;
river.y = 1500;
landforms.push(river);
game.addChild(river);
}
// Bilgi kutusunu göster
function showInfo(landform) {
if (infoText) {
infoText.destroy();
infoText = null;
}
infoText = new Text2(landform.info, {
size: 80,
fill: 0xFFFFFF,
wordWrap: true,
wordWrapWidth: 1200
});
infoText.anchor.set(0.5, 0);
infoText.x = 12;
infoText.y = 10;
LK.gui.top.addChild(infoText);
// Bilgi kutusu sürekli ekranda kalacak, yeni bir bilgi gösterilene kadar kaldırılmayacak
}
// Keşif kontrolü
function checkDiscovery(x, y) {
for (var i = 0; i < landforms.length; i++) {
var lf = landforms[i];
// Basit mesafe kontrolü (dokunma/klik yakınlığı)
var dx = lf.x - x;
var dy = lf.y - y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < 180) {
showInfo(lf);
if (discoveredLandforms.indexOf(lf.type) === -1) {
discoveredLandforms.push(lf.type);
}
break;
}
}
}
// Karakteri sürüklemek için dokunma/klik başlatıldığında kontrol et
game.down = function (x, y, obj) {
// Eğer karaktere yakın bir noktadaysak sürüklemeyi başlat
var dx = character.x - x;
var dy = character.y - y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < 180) {
dragCharacter = true;
}
};
// Sürükleme sırasında karakteri hareket ettir
game.move = function (x, y, obj) {
if (dragCharacter) {
character.x = x;
character.y = y;
if (typeof character.update === "function") {
character.update();
}
}
};
// Sürükleme bırakıldığında durdur
game.up = function (x, y, obj) {
dragCharacter = false;
};
// Oyun başlatıldığında yerşekillerini oluştur
createLandforms();
// Her karede karakterin yerşekillerine yakınlığını kontrol et
game.update = function () {
if (typeof character.update === "function") {
character.update();
}
for (var i = 0; i < landforms.length; i++) {
var lf = landforms[i];
var dx = lf.x - character.x;
var dy = lf.y - character.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < 180) {
// Her yaklaşıldığında bilgi göster
showInfo(lf);
// İlk kez keşfediliyorsa kaydet
if (discoveredLandforms.indexOf(lf.type) === -1) {
discoveredLandforms.push(lf.type);
}
break;
}
}
}; /****
* Classes
****/
// Karakter (Character) class
var Character = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('character', {
anchorX: 0.5,
anchorY: 1.0
});
self.speed = 0; // Karakteri sürükleyerek hareket ettireceğiz
// Yürüme animasyonu için parametreler
self.walkAnimTime = 0;
self.isWalking = false;
self.lastX = undefined;
self.lastY = undefined;
self.facing = 1; // 1: sağ, -1: sol
// Yürüme animasyonu ve yön için update fonksiyonu
self.update = function () {
// İlk frame'de lastX/Y ayarla
if (self.lastX === undefined) {
self.lastX = self.x;
}
if (self.lastY === undefined) {
self.lastY = self.y;
}
// Hareket algıla
var moved = self.x !== self.lastX || self.y !== self.lastY;
self.isWalking = moved;
// Yön belirle (sadece x değişimine bak)
if (self.x > self.lastX) {
self.facing = 1;
} else if (self.x < self.lastX) {
self.facing = -1;
}
// Sprite'ı yöne göre çevir
asset.scaleX = self.facing;
// Yürüme animasyonu (basit yukarı-aşağı zıplatma)
if (self.isWalking) {
self.walkAnimTime += 1;
// 0.15 ile 0.25 arası bir zıplama efekti
asset.y = Math.sin(self.walkAnimTime * 0.25) * 18;
} else {
self.walkAnimTime = 0;
asset.y = 0;
}
// Son pozisyonu güncelle
self.lastX = self.x;
self.lastY = self.y;
};
return self;
});
// Göl (Lake) class
var Lake = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('lake', {
anchorX: 0.5,
anchorY: 1.0
});
asset.alpha = 0;
self.info = "Göl: Karalar üzerindeki çukur alanlarda birikmiş tatlı veya tuzlu su kütleleridir.";
self.type = "lake";
return self;
});
// Yerşekilleri listesini oluştur
// Dağ (Mountain) class
var Mountain = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('mountain', {
anchorX: 0.5,
anchorY: 1.0
});
asset.alpha = 0;
self.info = "Dağ: Yüksek ve dik yamaçlı yerşekilleridir. Zirveleri genellikle karla kaplıdır.";
self.type = "mountain";
return self;
});
// Ova (Plain) class
var Plain = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('plain', {
anchorX: 0.5,
anchorY: 1.0
});
asset.alpha = 0;
self.info = "Ova: Deniz seviyesine yakın, geniş ve düz alanlardır. Tarım için uygundur.";
self.type = "plain";
return self;
});
// Plato (Plateau) class
var Plateau = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('plateau', {
anchorX: 0.5,
anchorY: 1.0
});
asset.alpha = 0;
self.info = "Plato: Çevresine göre yüksek, düz ve geniş alanlardır.";
self.type = "plateau";
return self;
});
// Akarsu (River) class
var River = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('river', {
anchorX: 0.5,
anchorY: 1.0
});
asset.alpha = 0;
self.info = "Akarsu: Yeryüzünde belirli bir yatak boyunca sürekli veya zaman zaman akan su akıntısıdır.";
self.type = "river";
return self;
});
// Vadi (Valley) class
var Valley = Container.expand(function () {
var self = Container.call(this);
var asset = self.attachAsset('valley', {
anchorX: 10,
anchorY: 1.0
});
asset.alpha = 0;
self.info = "Vadi: Akarsuların aşındırmasıyla oluşan, iki yamaç arasında kalan çukurluklardır.";
self.type = "valley";
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Yerşekilleri listesini oluştur
var landforms = [];
var discoveredLandforms = [];
var infoText = null;
// Gerçekçi arka planı ekle
var background = LK.getAsset('realistic_map_bg', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
width: 2048,
height: 2732
});
game.addChild(background);
// Karakteri oluştur ve haritaya ekle
var character = new Character();
character.x = 200;
character.y = 2400;
game.addChild(character);
// Sürükleme için değişken
var dragCharacter = false;
// Harita üzerinde yerşekillerini konumlandır
function createLandforms() {
// Dağ
var mountain = new Mountain();
mountain.x = 400;
mountain.y = 1800 / 3;
landforms.push(mountain);
game.addChild(mountain);
// Ova
var plain = new Plain();
plain.x = 1600;
plain.y = 1050;
landforms.push(plain);
game.addChild(plain);
// Plato
var plateau = new Plateau();
plateau.x = 1600;
plateau.y = 1500;
landforms.push(plateau);
game.addChild(plateau);
// Vadi
var valley = new Valley();
valley.x = 400;
valley.y = 1500;
landforms.push(valley);
game.addChild(valley);
// Göl
var lake = new Lake();
lake.x = 1600;
lake.y = 600;
landforms.push(lake);
game.addChild(lake);
// Akarsu
var river = new River();
river.x = 1300;
river.y = 1500;
landforms.push(river);
game.addChild(river);
}
// Bilgi kutusunu göster
function showInfo(landform) {
if (infoText) {
infoText.destroy();
infoText = null;
}
infoText = new Text2(landform.info, {
size: 80,
fill: 0xFFFFFF,
wordWrap: true,
wordWrapWidth: 1200
});
infoText.anchor.set(0.5, 0);
infoText.x = 12;
infoText.y = 10;
LK.gui.top.addChild(infoText);
// Bilgi kutusu sürekli ekranda kalacak, yeni bir bilgi gösterilene kadar kaldırılmayacak
}
// Keşif kontrolü
function checkDiscovery(x, y) {
for (var i = 0; i < landforms.length; i++) {
var lf = landforms[i];
// Basit mesafe kontrolü (dokunma/klik yakınlığı)
var dx = lf.x - x;
var dy = lf.y - y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < 180) {
showInfo(lf);
if (discoveredLandforms.indexOf(lf.type) === -1) {
discoveredLandforms.push(lf.type);
}
break;
}
}
}
// Karakteri sürüklemek için dokunma/klik başlatıldığında kontrol et
game.down = function (x, y, obj) {
// Eğer karaktere yakın bir noktadaysak sürüklemeyi başlat
var dx = character.x - x;
var dy = character.y - y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < 180) {
dragCharacter = true;
}
};
// Sürükleme sırasında karakteri hareket ettir
game.move = function (x, y, obj) {
if (dragCharacter) {
character.x = x;
character.y = y;
if (typeof character.update === "function") {
character.update();
}
}
};
// Sürükleme bırakıldığında durdur
game.up = function (x, y, obj) {
dragCharacter = false;
};
// Oyun başlatıldığında yerşekillerini oluştur
createLandforms();
// Her karede karakterin yerşekillerine yakınlığını kontrol et
game.update = function () {
if (typeof character.update === "function") {
character.update();
}
for (var i = 0; i < landforms.length; i++) {
var lf = landforms[i];
var dx = lf.x - character.x;
var dy = lf.y - character.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < 180) {
// Her yaklaşıldığında bilgi göster
showInfo(lf);
// İlk kez keşfediliyorsa kaydet
if (discoveredLandforms.indexOf(lf.type) === -1) {
discoveredLandforms.push(lf.type);
}
break;
}
}
};