Strona 1 z 2 12 OstatniOstatni
Pokaż wyniki od 1 do 10 z 14
Like Tree1Likes

Wątek: Przerobiony skrypt saziana,Co zmienić,jak ulepszyć

  1. #1
    Zarejestrowany
    Dołączył
    Mar 2013
    Posty
    72

    Domyślnie Przerobiony skrypt saziana,Co zmienić,jak ulepszyć

    Witam.Poświęcilem trochę czasu na próbę przerobienia skryptu poruszania po mapie.Udalo mi sie wyczytać pozycje postaci z bazy,dodać potwora i walke z nim.Oczywiście problemów kilka mam i narazie staje na dwóch:

    1. Obliczanie odleglości przeciwnika od gracza poprzez kliknięcie na przeciwnika.Tutaj nie wiem jak to jest możliwe że gdy stane na potworze to kordy postaci są inne niż przeciwnika.(niewiem może z przemęczenia).

    2.Tzw "kamera" gry,czyli wizualny ruch kamery.Np ide sobie w prawo to postać stoi w miejscu a mapa się przesuwa lecz jeśli dojde na "kraniec mapy" gdzie kraniec mapy będzie równy np dlugości diva to mapa sie nie porusza lecz postac.

    Jeżeli Ktoś podpowiedzialby mi co usunąć,pozmieniać,inne sposoby na coś itd to prosze piszcie.

    Kod html:
    <!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="pl" lang="pl">
    <head>
    <script  type="text/javascript" src="jquery.js"></script>
    <script  type="text/javascript" src="funkcje.js"></script>
    <link rel="stylesheet" type="text/css" href="style.css"/>
    <style>
    body{
    background: black;
    }
    #tabela{
    height: 150px;
    width: 15%;
    position: absolute;
    top: 0px;
    left: 85%;
    background: lightgreen;
    }
    #poz{
    height: 15px;
    width: 15%;
    position: absolute;
    top: 95%;
    left: 0%;
    }
    a{
    position:absolute;
    top:0px;
    left:45%;
    }
    </style>
    </head>
    <body>
    <a href='logout.php'><font color="red">Wyloguj</font></a>
    <script  type="text/javascript" src="wz_tooltip.js"></script>
    <div>
    <div id="gra" style="background: black;width: 640px; height:320px;overflow: hidden; border-width:1px;border-style: solid;border-color: yellow;position:absolute;top: 30%;left: 20%;">
    <?php
    include 'config.php';
    db_connect();
    check_login();
    $user_data = get_user_data();
    $SQL2 = "select * from test right join users on test.src = users.mapa and test.status='life' and user_id = 1" or die (mysql_error());
    $SQL3 = mysql_query($SQL2);
    while ($row = mysql_fetch_array($SQL3)) {
    echo "<div id =".$row['id']." class='mob' style='height:".$row['height']."px; width:".$row['width']."px;background: url(".$row['color'].");position:absolute;margin-left:".$row['left']."px;margin-top:".$row['top']."px;z-index:99'></div>"; 
    }
    $res = mysql_query("SELECT * FROM users where user_id = $user_data[user_id]") or die(mysql_error());
    while ($row = mysql_fetch_array($res)){
    echo "<div id='pole' style='height:640px; width:640px;background: url(".$row['mapa'].");position:absolute;top:".$row['y']."px;left:".$row['x']."px;'></div>";
    }
    ?>
    <div id='gracz' style='height:32px;width:24px;background:url(1.png);position:absolute;top:128px;left:288px;z-index:99;background-position:-24px 64px;'></div>
    <div id='poz'></div>
    </div>
    </div>
    <div id="tabela">
    </div>
    <script>
    function retun(){
    $('#gra').hide();
    }
    $().ready(function(){
    $('#okno').hide();
    $('#input').hide();
    $().ready(function(){
    $('.mob').click(function(){
    var id = $(this).attr('id');
    $(this ,'.mob').hide();
    $.ajax({
        type     : "POST",
        url      : 'bots.php',
        data     : {
             id : id,
        },
        success : function(msg) {
        },
    	error:    function(error) {
        }
    });
    $('#okno').toggle();
    $('#walka').load('bots.php?name='+id)
    $('#input').show();
    $('#input').click(function(){
    $('#gra').show();
    $('#okno').hide();
    $('#input').hide();
    
    });
    });
    });
    });
    var x = parseInt($('#pole').css('left'));
    var y = parseInt($('#pole').css('top'));
    var w;
    var v;
    send(0,0,2);
    function stats(){
    $.ajax({
    		type: "POST",
    		url: "dane.php",
    		data: "w="+(w)+"&v="+(v),
    		success: function(msg){
    		$('#tabela').html(msg)
    		}
    	});
    }
    setInterval('stats()', 200);
    $(document).ready(function(){
    map_poz(x,y);
    	 $().keydown(function (e) {
    	
    				if(e.keyCode==37){
    			send(32,0,3)
    				}
    				if(e.keyCode==38){
    			send(0,32,0);
    				}
    				if(e.keyCode==39){
    			send(-32,0,1);
    				}
    				if(e.keyCode==40){
    			send(0,-32,2);
    				}
    				
    	});
    });
    function send(ox,oy,kierunek){
     	$.ajax({
    		type: "POST",
    		url: "idz.php",
    		data:"x="+(x+ox)+"&y="+(y+oy),
    		success: function(msg){
    		$('#poz').html(msg)
    			if(msg){
    				setTimeout("map_poz(x+="+(ox/4)+",y+="+(oy/4)+");animation(0,"+kierunek+");",10);
    				setTimeout("map_poz(x+="+(ox/4)+",y+="+(oy/4)+");animation(1,"+kierunek+");",20);
    				setTimeout("map_poz(x+="+(ox/4)+",y+="+(oy/4)+");animation(2,"+kierunek+");",30);
    				setTimeout("map_poz(x+="+(ox/4)+",y+="+(oy/4)+");animation(1,"+kierunek+");",40);
    
    			}
    		}
    	});
    
    }
    function map_poz(x,y){
    $("#pole,.mob").css("left",(x)+"px");
    $("#pole,.mob").css("top",(y)+"px");
    }
    function animation(klatka,kierunek){
    $("#gracz").css("background-position",(-klatka*24)+"px "+(-kierunek*32)+"px");
    }
    </script>
    <div id='okno' style="width: 320px; height: 100px; overflow: auto">
        <div id='walka' style="height: 100px;">  
    	</div>
    </div>
    <div id="input">
    <form>
    <input type="button" value="powrot">
    </form>
    </div>
    </body>
    </html>
    
    Oczywiście tej przeróbki można używać.Niektórych linijek możecie nie rozumieć gdyż dochodzi plik dane.php idz.php i bots.php gdzie ujęta jest walka z potworami. 
    Ostatnio edytowane przez kamilxd ; 12-08-2013 o 18:07
    Zawsze pozytywnie nastawiony

  2. #2
    Zarejestrowany Awatar writen
    Dołączył
    May 2010
    Posty
    54

    Domyślnie

    Moim zdaniem wszystkie skrypty poruszania się po mapie na divach to porażka. Raczej nie do tego są znaczniki HTML. Poucz się canvasa, dużo szybciej zrobisz grę czasu rzeczywistego.

  3. #3
    Zarejestrowany
    Dołączył
    Mar 2013
    Posty
    72

    Domyślnie

    a jakim sposobem wyczytasz pozycje gracza z bazy,Jak rozruznisz potworki z html5 w bazie?
    Zawsze pozytywnie nastawiony

  4. #4
    Zarejestrowany Awatar writen
    Dołączył
    May 2010
    Posty
    54

    Domyślnie

    Juz sie gdzies na ten temat rozpisywalem. Ale moglo to byc na konkurencyjnym forum.

  5. #5
    Zarejestrowany
    Dołączył
    Mar 2008
    Posty
    251

    Domyślnie

    Oczywiście, że canvas oferuje dodatkowe możliwości dynamicznego tworzenia animacji etc. Nie jest jednak jedynym słusznym rozwiązaniem, co pokazuje np. gameQuery (plugin do jQuery), czy, fantastyczny do gier, KnockoutJS.

  6. #6
    Programista Awatar Aravorn
    Dołączył
    Apr 2011
    Posty
    343

    Domyślnie

    Ale obecnie jest to najlepsze i najwydajniejsze rozwiązanie, przy tym proste do opanowania

  7. #7
    Zarejestrowany Awatar writen
    Dołączył
    May 2010
    Posty
    54

    Domyślnie

    Są różne frameworki do tworzenia gier w js, ale najlepsze są te operujące na Canvas'ie. Łatwo się jest ich nauczyć i są o wiele wydajniejsze.
    Ale jak dla mnie jedynym fascynującym rozwiązaniem jest pisanie wszystkiego od początku.

    Ogólnie programowanie gier to bardzo złożony proces. Zanim zaczniemy robić grę trzeba się dowiedzieć jak takie gry działają i wyglądają od środka. Podstawą każdej gry czasu rzeczywistego jest pętla główna. Ale o tym to już poczytać można w internecie.

    Wiem, że każdy marzy o własnej grze, ale zejdźmy na ziemię. Robienie gry tekstowej (Vallheru) znacznie się różni od gry czasu rzeczywistego i pochłania znacznie więcej czasu.
    Bartek likes this.

  8. #8
    Zarejestrowany Awatar writen
    Dołączył
    May 2010
    Posty
    54

    Domyślnie

    Oj. W ostatnim zdaniu sie zapedzilem. Zrobienie gry czasu rzeczywistego zajmuje wiecej czasu.
    Ale nie bijcie za taka pomylke jestem troszke chory.

    No i na telefonie nie widze opcji edytowania postu.

  9. #9
    Programista Awatar Aravorn
    Dołączył
    Apr 2011
    Posty
    343

    Domyślnie

    Prawda jest taka, że tylko nieliczni stąd by temu podołali ;D a jeżeli trzeba by zrobić coś naprawdę sensownego to nieliczni z nielicznych. Serwer już nie tylko napisany w PHP, optymalizacje generowania kolejnych klatek / rysowania, dbanie o tempo animacji, niezależnie od ilości FPS (polecam - ciekawe zagadnienie po części matematyczne ) itp. itd.

  10. #10
    Programista
    Dołączył
    Sep 2007
    Posty
    622

    Domyślnie

    Nie demonizuj. Każdy po studiach powinien sobie dać z tym radę. Jak nie daje, to znaczy że zmarnował 5 lat :P
    http://orodlin.pl/ - Orodlin.pl Team Member
    http://blog.albitos.eu - Albi's Jogger - Z pamiętnika młodego programisty
    http://wsosnowski.pl - wizytówka

    Mam do wynajęcia miejsce na serwerze dedykowanym. Ktoś zainteresowany?

Strona 1 z 2 12 OstatniOstatni

Informacje o wątku

Użytkownicy przeglądający ten wątek

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Podobne wątki

  1. Jak Zmienić Tło.
    Przez gabi122 w dziale prp
    Odpowiedzi: 4
    Ostatni post / autor: 29-06-2010, 12:43
  2. Odpowiedzi: 6
    Ostatni post / autor: 24-06-2010, 20:34
  3. Odpowiedzi: 6
    Ostatni post / autor: 24-06-2010, 20:34
  4. Sprzedam silnik Xnova przerobiony
    Przez lonek91 w dziale Zlecenia dotyczące silnika Xnova
    Odpowiedzi: 16
    Ostatni post / autor: 24-02-2010, 13:07
  5. Jak zmienić jezyk?
    Przez patryk w dziale Pytania dotyczące silnika Xnova
    Odpowiedzi: 5
    Ostatni post / autor: 11-06-2008, 18:27

Zakładki

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •