Online Oyun Yapımı !

27 Mar 2012
189
0
Ankara
Bu dersimizde bir çok kişinin beklediği oyun yapımını anlatalım.



Vereceğim tüm işlemleri index.php içinde yapalım. Daha sonra eğer kod karmaşası olduğunu düşünüyorsanız siz ayırabilir, require ile index'e çağırabilirsiniz..

Bölüm 1 : Veritabanı Bağlantısı Oluşturma Ve Kullanılacak Tablolar

<?php

$host = "localhost";
$kullanici ="kullanıcı adınız localhostlarda genelde root olur";
$sifre = "sifreniz";
$data = "veritabanınızdaki tablonun ismi";

$baglan =@mysql_connect($host ,$kullanici,$sifre) or die (mysql_error());
$vt_sec =@mysql_select_db($data,$baglan) or die (mysql_error());
mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLACTION_CONNECTION = 'latin5_turkish_ci'");
?>
Evet Veritabanı Bağlantımızı Oluşturduk Şimdi PhpMyAdmine Girip tablomuzu seçiyoruz ve 3 alan ekliyoruz isimleri

canavar
karekter
karekter_listesi


olsun.. Şimdi Canavar tablosuna girelim. "8 alandan oluşan tablo yarat" diyelim

İlk alanımız otomatik index alan, yani auto_increment olan id'dir. Türünü int yapıyoruz ve auto_increment seçeneğini seçiyoruz. Diğer bütün tablolarımızın türü VARCHAR uzunluğu
255 olsun.. Diğer tablolarımızın ismi de sırayla öyle.

adi
genelcan
can
savunma
saldiri
verdigi_exp
aldigi_exp

Yukarıda canavarlarımızı tanımlamış olduk. Sitede görünecek adı her bir canavarın kendine özgü. HP (yani canı) saldırdığımızda savunacağı savunma ve bize saldırdığında bize yapacağı saldırı değerini tanımlamak için gerekli tabloları oluşturduk. Aslında ileriki zamanlarda br admin paneli yapacağız ama oyunu denemek için phpmyadmin'den bir adet canavar ekleyelim. Canavar tablosuna tıklayıp üst tarafta ekle butonuna tıklayalım ve gerekli alanları dolduralım

id = 1
adi = ilkcanavarim
genelcan = 100
can = 100
savunma = 2
saldiri = 5
verdigi_exp = 5
aldigi_exp = 0

Evet, ilk canavarim adında bir canavarımız hazır.

Şimdi karekter_listesi tablomuza girelim ve online oyunlarda bulunan karekter sec islemini yapalım. Örnek verecek olursak, Travian oyununda Romalı, Galyalı, Cermen gibi karakterler var ve her birinin özelliği bir diğerinden farklı. Kiminin savunması, fazla kiminin saldırısı... Biz de böyle bir şey yapalım, ama öncelikle tablomuzu oluşturalım.

Phpmyadmin'den yeni tablo oluşturalım ve ismini
karekter_listesi koyalım. Şimdi bu tablomuz içinde 5 adet alan oluşturalım.. Önceki tabloda yaptığımız gibi auto_increment ve int türlü bir id alanımız olsun. Diğer alan isimleri ise şu şekilde
olsun:

adi
Can
Saldiri
Savunma

Türü VARCHAR ve uzunluk 255 unutmayın.

Bunu yaptıktan sonra kendi karekterlerimizden birini oluşturalım. Travian'dan örnek verdik, ordaki bir karekteri seçelim. karakter_listesi tablomuza tıklayıp Ekle seçeneğine girip karakterimizi oluşturalım.

id = 1
adi = Romalı
can = 100
Saldiri = 8
Savunma = 3


olsun... İsterseniz listenizi çoğaltabilirsiniz...Ama bence admin paneli yaptığımızda elle girmek daha rahat olacaktır..

Şimdi gelelim karakter tablomuza. Bu tablomuzda 10 adet alan oluşturun. Yine id seçeneğini diğer iki tablomuz gibi yapın.. Diğer tablolarımızın ismi sırasıyla:

kadi
sifre
cinsi
seviye
exp
can
max_can
saldiri
savunma
şeklinde olsun. Tabi, türü VARCHAR ve uzunluk 255 unutmayın.

Burada seviye kısmını düzenleyelim. Çünkü her oyuncu ilk oyuna girdiğinde aynı seviyeyi alır. Bizde varsayılan tanımlandığı gibi ve ismi de Başlangıç olsun.

Bu dersimizde sadece kayıt işlemleri hakkında bilgi vermek istiyorum. Kullanıcının seçeceği karakterin özelliklerini nasıl alacağını anlatalım.

İlk dersimizde veritabanlarını ve bağlantısını oluşturmuştuk.. Şimdi ise oyunumuzu yavaş yavaş şekillendirelim. Daha önce dediğim gibi ben herşeyi index dosyası üzerinde yapıyorum, ama siz nasıl isterseniz öyle yapabilirsiniz.

Sayfa başına:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="tr" lang="tr">
<head>
<**** http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />


ibaresini ekliyoruz Türkçe karakterlerimizi düzgün göstermeye çalışmak için.

Şimdi hemen bu satırdan sonra iki-üç CSS düzenlemesi yapmak için şu kodları ekleyiniz. (En sonda <body> ve <html> taglarını kapatınız)


<**** http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<style type="text/css">
body {font: 12px 25px Arial; margin: auto}
img {border:none}
a {text-decoration: none}
:focus {outline: 0}

#uyari {background-color: #4ab4d7; padding: 20px; font-size: 17px;
font-weight: bold; color: #fff; text-align: center; border-bottom: 1px solid #337689}
#baslik {background-color: #4ab4d7; padding: 100px; font-size: 45px;
font-weight: bold; color: #fff; text-align: center; border-bottom: 1px solid #337689}
</style>
</head>
<body>
<div id="baslik">İlk Online Oyunum</div>


Bunlar tamamen görsellik için. Bu kısımları siz kendiniz düzenleyebilir, daha güzel yapılandırabilirsiniz.

Sayfanın en başına daha sonra yapacağımız giriş işlemleri için ob_start ve session_start nesnelerini ve en sonuna da ob_end_flush(); nesnesini ekliyoruz. Yani sayfanın en başına:

<?php
ob_start();
session_start(); ?>


En sonuna ise:

<?php ob_end_flush ?>


kodunu ekliyoruz.

Şimdi tüm işlemlerimiz index içinde olduğu için switch yöntimini kullanalım. Mesela, switch'imiz işlem olsun. Sayfamız index.php?islem=case ile çağıracağımız işlem şeklinde olur.

İlk önce kayıt sayfamızı yapalım. Yani index.php?islem=kayit linkini hazırlayalım:

<?php
define("OYUN",true);
$islem = @$_GET['islem'];
Switch($islem){
case "kayit";
if($_POST){
$kadi = $_POST['kadi'];
$sifre = md5($_POST['sifre']);
$karekter = $_POST['karekter'];
$cinsid = $_POST['karekter'];
$sordabak = mysql_query("Select * from karekter_listesi where id='$cinsid'");
$canobak = mysql_fetch_array($sordabak);
$cano=$canobak['Can'];
$savo = $canobak['Savunma'];
$saldo = $canobak['Saldiri'];

$bul = mysql_query("SELECT * from karekter where kadi ='$kadi'");
$say = mysql_num_rows($bul);
if(empty($kadi) || empty($sifre)){
echo'<div id="uyari">Hıı Olm Malmısın Adamı HAsta Etme Git Doldur Şu Formu</div>';
}elseif($say > 0){
echo'<div id="uyari">Bu ismi Daha Önce Başka Biri Almış La :( Başka İsim Bul Kenden</div>';
}elseif($karekter == 'sec'){
echo'Karakter Seç sene';
}else{
$sql = mysql_query("insert into karekter (kadi,sifre,cinsi,can,savunma,saldiri,max_can) values('$kadi','$sifre','$karekter','$cano','$savo','$saldo','$cano')");
if($sql){
echo'<div id="uyari">Kayıt Oldunuz.. Yönlendiriliyorsunuz...</div>';
header("*******:2; url=index.php");


}else{
echo'Kayıt Olamadın';
}
}
}else{
echo'<form action="" method="post">
<center><table>
<tr>

<td>Kullanıcı Adı</td><td><input type="text" name="kadi" /></td>
</tr>
<tr>

<td>Şifre</td><td><input type="password" name="sifre" /></td>
</tr>
<tr>
<td>Karekter:</td>
<td>';
echo'<center>Romalı</center><br><center><input name="karekter" type="radio" value="1" style="height:100px; width : 100px" /></center></td>

';


echo'</td>
</tr>
<tr>
<td></td><td><font style="color:red">Özellikleri:</font><br> Saldiri=7Puan<br> Savunma=3Puan<br> Can=90HP</td>
</tr>
<tr>
<td><input type="submit" value="Kayıt Ol" /></td>
</tr>

</table></center>

</form>';

}
break;

?>


Neler Yaptık

Bir kullanıcının bilgilerini gireceği bir tablo oluşturduk.
Kullanıcının sadece adını ve şifre bilgilerini girmesine izin verdik.
Diğer özellikleri seçeceği karaktere göre otomatik yüklenecek. Mesela, biz örnek olarak Romalı oluşturmuştuk, onun özelliklerini çekip kullanıcıya verdik. Burada eğer yeni bir karekter eklersek
kodların içinde yer alan:

<center>Romalı</center><br><center><input name="karekter" type="radio" value="1" style="height:100px; width : 100px" /></center></td>


Bu satırı bulup hemen altına aşağıdaki mantık gibi yeni karakterimizi ekliyoruz. Bunu SQL kodlarıyla da yapabiliri,z ama elle yapmak bence daha mantıklı gibi.

<td>Yeni KArekter Adı</center><br><center><input name="karekter" type="radio" value="karekter_listesindeki id numarası" style="height:100px; width : 100px" /></center></td>


şeklinde forma eklememiz lazım. Value kısmından karekterin id'sini çekip kullanıcıya entegre etmek için bunu yaptık.

--------------------------------------------------------------------------------------------------------
1 TEŞEKKÜR YETER

ALINTIDIR
 
27 Mar 2012
189
0
Ankara
Bu dersimizde savaş meydanına gidelim.

Bir önceki işlemde giriş işlemini ve profil sayfamızı oluşturmuştuk. Şimdi gelelim savaş meydanına. Ben savaşmak için 2-3 böcek seçtim :D Siz canavar tablonuzda ne yaparsanız onu görürsünüz.

Şimdi index.php?islem=savaş linkimizi yapalım:

case "savas";
echo'<center><font style="font-weight:bold; font-size: 17px">Şavaş Başladı</font></center><br>';
if(isset($_SESSION['karakter'])){
$id=$_SESSION['id'];
$canavarid =@$_GET['id'];

$sql = mysql_query("Select * from karekter where id ='$id'");
$row = mysql_fetch_array($sql);
$canavarsql= mysql_query("Select * from canavar where id='$canavarid'");
$canavarrow = mysql_fetch_array($canavarsql);

$max_can = $row['max_can'];
$seninsaldiri = $row['saldiri'];
$canavarsaldiri = $canavarrow['saldiri'];
$seninsavunma = $row['savunma'];
$canavarsavunma = $canavarrow['savunma'];
$exp = $row['exp'];
$verecegi_exp = $canavarrow['verdigi_exp'];
$verdigi_exp = $exp + $verecegi_exp ;
$alacagi_exp = $canavarrow['aldigi_exp'];
$aldigi_exp = $exp - $alacagi_exp ;
$sen = rand($seninsavunma,$seninsaldiri);
$o = rand($canavarsavunma,$canavarsaldiri);

$hp = $row['can'];
$canavarhp =$canavarrow['can'];

if($hp < '0' ){
echo "<div class='panel'>".$canavarrow['adi']." Tarafından Yenilgiye Uğratıldınız..".$alacagi_exp." Exp Kaybettiniz<br>
Lütfen Bekleyiniz...";
$canyenile = mysql_query("Update karekter set can='$max_can' where id='$id'");
header("*******:3; url=index.php?islem=giris");
}elseif($canavarhp < '1'){
echo '<div id="panel">Tebrikler Bir '.$canavarrow['adi'].' Geberttiniz.. '.$verecegi_exp.' exp Kazandınız... Lütfen Bekleyiniz </div>';
$expkazan = mysql_query("Update karekter set exp='$verdigi_exp' where id='$id'");
$canyenile = mysql_query("Update karekter set can='$max_can' where id='$id'");
header("*******:3; url=index.php?islem=giris");
$canavargenelhp = $canavarrow['genelcan'];
$canavarhpyenile = mysql_query("update canavar set can='$canavargenelhp' where id='$canavarid'");
}else{


if($sen > $o){

echo'<div id="panel">'.$sen.' vurdun ';
$canavarhp =$canavarrow['can'];
$canavarkalan = $canavarhp - $sen ;
echo ''.$canavarrow['adi'].' Kalan Canı :'.$canavarkalan.'<br>';
$canavarcan = mysql_query("Update canavar set can='$canavarkalan' where id='$canavarid'");
echo 'Geber Seni Pis '.$canavarrow['adi'].' Bozuntusu Ha Ha Ha ! :D:D:
</div>
<center><img src="resimler/sen.jpg" /></center>
';
header("*******:2");
}else{
echo'<div id="panel"><font style="color:red">'.$canavarrow['adi'].' size '.$o.' zarar verdi</font><br>';
echo 'Haha Ben bir '.$canavarrow['adi'].' Olabilirim Ama '.$kadi.' Senin Gibi Ezikleri Her Türlü Yerim<br>
';
$hp = $row['can'];
$senkalan = $hp-$o ;
echo 'Kalan Canınız :'.$senkalan.'</div><br>
<center><img src="resimler/'.$canavarid.'.gif" /></div></center>';
$can = mysql_query("Update karekter set can='$senkalan' where id='$id'");

header("*******:2");
}
}

}else{
echo'<div id="panel">Savaş İçin Önce Giriş Yapman Lazım</div>';
}

break;

Yukarıda Ne Yaptık?

Yukarıda kullanıcı eğer oturum açmışsa bu sayfayı gösterdik, eğer açmassa açması için ikna ettik..

En Önemli Noktamız

Şimdi savaş meydanında bizim veritabanımızda canavarların id'si var. Onlara link verelim:

<a href="index.php?islem=savas&id=1">Birinci yaratıkla savaşmak için tıkla</a>


Bu linke tıklandığında birinci yaratıkla savaşılır.
 
27 Mar 2012
189
0
Ankara
Bir önceki dersimizde savaşmak için gerekli kodlamaları yaptık. Ama fazla bir açıklama yapmadık.

Şimdi ana sayfamıza ya da herhangi bir sayfamıza yaratıkları çağırmak. Bu tamamen sizin yaratıcılığınıza kalmış bir şey. Sayfamızda yapacağımız tek şey yaratıklara link vermek. Bir önceki derste get(id) ile gelen id'ye göre savaş yaptırmıştık.

Evet, sayfamızın görselliği tamamen sizin hayal dünyanıza kalmış.

Canavarları anasayfaya çağıralım:

<a href="index.php?islem=savas&id=1"><img src=1.jpg" /></a>
<a href="index.php?islem=savas&id=2"><img src="2.jpg" /></a>
<a href="index.php?islem=savas&id=3"><img src="3.jpg" /></a>


Bu örneği veritabanınızdaki geliştirdiğiniz tablolara göre düzenleyebilirsiniz...

İlk canavarınızın örnek savunması 2, saldırısı ise 3 olsun. Bir önceki dersimizdeki tamamıyla şu şekilde rand komutuyla rastgele sayılar üretiyoruz, ama bu sayıları belirli bir düzene göre üretiyoruz. Sayımız savunma ile saldiri arasında oluyor; yani:

rand (canavarsavunma, canavarsaldiri);

Savaşırken bu değer eğer sizin savunma ve saldırınızın arasındaki değerden fazla çıkarsa, değer kadar canınınız gider. Eğer sizin fazla ise canavarın gider. Maksimum can seviyesi bitene kadar savaş devam eder. Her öldürdüğünüz canavardan tablodaki exp kadar exp kazanırsınız. Umarım mantığı anlamışsınızdır.
 

Artezi

Yeni üye
24 Eki 2012
22
0
Eline sağlık.Aslında basit kodlamaları iyi bilince bile öğrenince çok uzmanca çalışmalar çıkıyor.
 

kurt5234

Üye
21 Eki 2012
68
0
kardeş millet böylesi eyleri okumayı pek sevmiyor vidolu şeyleri yapıyolar emegin saglık diyom
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.