Machinarium

2009/10/24 János 1 comment

Legutóbb a World of Goo c. logikai játékról írtam. Most ismét egy egy egyszerű ámde annál izgalmasabb játékot találtam. A címe: Machinarium. Semmi extra nincs a játékban, minimális logikai érzék kell hozzá, de nem is ez a lényeg, hanem a hangulata.
A játékban egy kis robotot kell irányítanunk, point-and-click stílusban. A kis robot a játék kezdetén egy roncstelepre kerül darabokban, ahol először is össze kell állítanunk a darabjaiból. A kis bádogdobozunkat nagyon nemes cél hajtja vagyis, hogy megakadályozza a gonosz robotok hatalomátvételét a város felett.
A játék egyik érdekessége, hogy flash-ben íródott.
Nekem nagyon bejött, remélem másnak is tetszik.

Ízelítőnek itt egy kis YouTube videó:

Categories: Games

jQuery, Ajax, JSON és PHP

2009/09/01 János Szólj hozzá

Ajax kérésekhez legtöbbször jQuery-t használok, mert egyszerű, gyorsan elkészíthető és megbízható.
Most gyorsan felvázolnám, hogyan is kell egy egyszerűbb Ajax kérést összedobni jQuery segítségével.

Szerveroldal (PHP):
Ha egyszerű szöveges üzenetet szeretnénk küldeni a kliensoldalra, akkor egy sima echo utasításra lesz szükség.
pl.:

<?php
	echo "foobar";
?>

Ha összetett adatstruktúrát szeretnénk küldeni a kliensoldalra, akkor JSON objektumként küldjük azt.
pl.:

<?php

	$response = array();
	$response['foo'] = 'foo';
	$response['bar'] = 'bar';
	$response['baz'] = 'buz';

	echo json_encode($response);
?>

Kliensoldal (JavaScript):

Egyszerű szöveges üzenet esetén a JavaScript kód a következő:

$.ajax({
    // szerveroldali szkript elérési útja
    url: "server.php",
    type: "GET",
    // típus és kódolás
    contentType: "application/text; charset=utf-8",
    // paraméterek
    data: ({
        foo: foo_,
        bar: bar_,
        buz: buz_
    }),
    // kommunikációs adattípus
    dataType: "text",
    beforeSend: function(x) {
        if (x & amp; & amp; x.overrideMimeType) {
            x.overrideMimeType("application/text;charset=UTF-8");
        }
        // kiíratunk egy animált ajax-loader GIF-et amíg a kérés tart
        $('#myDiv').html("<div id="ajax_gif ">);
        $('#myDiv').append("<img />")
        $('#myDiv').append("</div>");
    },
    success: function(data){
        $('#myDiv').html(data); // foobar
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        // ha gond van kiíratjuk a hibát
        alert("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
    }
});

JSON adatszerkezet esetén a JavaScript kód a következő:

var _foo = "foo", _bar = "bar", _buz = "buz";
$.ajax({
    // szerveroldali szkript elérési útja
    url: "server.php",
    type: "GET",
    // típus és kódolás
    contentType: "application/j-son; charset=utf-8",
    // paraméterek
    data: ({
        foo: foo_,
        bar: bar_,
        buz: buz_
    }),
    // kommunikációs adattípus
    dataType: "json",
    beforeSend: function(x) {
        if (x & amp; & amp; x.overrideMimeType) {
            x.overrideMimeType("application/j-son;charset=UTF-8");
        }
        // kiíratunk egy animált ajax-loader GIF-et amíg a kérés tart
        $('#myDiv').html("<div id="ajax_gif ">);
        $('#myDiv').append("<img />")
        $('#myDiv').append("</div>");
    },
    success: function(data){
        // a kapott adatokkal már azt teszünk amit akarunk, pl.kiíratjuk egy DIV - be
        $('#myDiv').html(data.foo + ''); // foo_resp
        $('#myDiv').append(data.bar + ''); // bar_resp
        $('#myDiv').append(data.buz); // buz_resp
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        // ha gond van kiíratjuk a hibát
        alert("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
    }
});

A második esetben a GET tömbben küldött adatokkal dolgozunk a szerveroldalon.

Categories: AJAX, PHP, jQuery

Opció választás select tag-ben érték alapján

2009/06/30 János Szólj hozzá

Legördülő menüben (SELECT) egy adott sor (OPTION) kiválasztás index alapján pofonegyszerű.

Ha adott a következő menüfelépítés,

<select id="select_menu">
   <option value="hu">Hungarian</option>
   <option value="ge">German</option>
   <option value="en">English</option>
</select>

akkor a következő kódsor az en értékű sort választja ki:

document.getElementById('select_menu').selectedIndex = 2;

Kicsit trükkösebb megoldásra van szükség akkor, ha a érték szerint szeretnénk a legördülő menü egyik elemét aktuálisan kiválasztottá tenni.
Egy ciklussal végigmegyünk a menü elemein és ha megtaláljuk a megfelelő értékű elemet akkor a hozzá tartozó index alapján kiválasztjuk aktuális elemnek.

Íme a szükséges kód:

var menu = document.getElementById('select_menu');

for(var i = 0; i < menu.options.length; i++){
	if(menu.options[i].value == "en"){
		menu.selectedIndex = i;
	}
}
Categories: JavaScript

Helyzetjelentés…

2009/06/23 János Szólj hozzá

Elég régen nem írtam már értelmes bejegyzést a blogba, ennek főként az az oka, hogy rengeteg tennivalóm akadt. Persze az igazsághoz az is hozzá tartozik, hogy sem kedvem sem energiám nem volt akár csak egy néhány soros posztot is írni. Egyszóval lusta is voltam… :)

Az elmúlt néhány hónap tanulással és kapkodással telt. Utolsó félévemet töltöttem a BSc képzésben, ezért alkotnom kellett valami f@sza kis szakdolgozatot. Emellett két nehezebb tárgyam is maradt pont erre a kapkodós időszakra, szóval eléggé húzósra sikerült a vége.
Végül minden jól alakult, leadhattam az indexemet.
A védés nem volt gáz, persze azért egy kis készülődés meg para volt előtte, de azt hiszem ez így volt természetes. Az államvizsgától már jobban tartottam, de szerencsére az is jól sikerült és így az utolsó akadályt is sikerült elhárítanom a diploma felé vezető úton.

A héten lesz diplomaosztó, végre diplomás ember leszek. Örülnöm kéne, de valahogy már nem tudok. :) Fárasztó volt az út idáig, és azt hiszem szükségem lesz egy kis nyugalomra és pihenésre.

Sokat gondolkodtam azon, hogy mihez is kezdek majd a diploma megszerzése után.
Most úgy tervezem, hogy még maradok és megszerzem az MSc diplomát, ami további négy szemesztert vagyis két évet jelentene. Megfordult már a fejemben az is, hogy hagyom a francba az egészet, és elmegyek dolgozni. Igazából még nem döntöttem el véglegesen melyik utat választom majd. Az MSc folytatásának lehetősége nem csak rajtam múlik. Munkahelyet a környéken nem könnyű találni, valószínűleg Pestre kellene költözni, amitől kissé még idegenkedek. Esetleg külföldön szerencsét próbálni, amihez talán még több kedvem is lenne.

Mivel anno német nyelvvizsgával a zsebemben érkeztem az egyetemre, nem volt túl sok motiváció ahhoz, hogy továbbfejlesszem szegényes angol nyelvtudásomat. Persze sokat tanultam az egyetem alatt, különböző megbízások, munkák miatt. Egy ideig jártam is magántanárhoz ill. egy kisebb csoportos oktatásra is, de mindkettő félbeszakadt különböző okok miatt.
Most, hogy “kicsit több” időm maradt, újra komoly késztetést éreztem magamban a nyelvtanulásra. Egyrészt nagyon fontos az angol a szakmámhoz, másrészt mindig is érdekelt a nyelvtanulás, és sohasem éreztem kényszernek.
Szóval gyorsan kerestem valami jó és nem túl drága tanfolyamot és beiratkoztam. Már túl vagyok a harmadik alkalmon, és azt hiszem jó tanfolyamot választottam.

Az angol mellett még van egy kis melóm amit nagyjából a hónap végére be akarok fejezni.
Ja tényleg, megvettem életem első notebookját (lehet, már említettem korábban), amivel kapcsolatban még nem írtam meg a megígért posztot, de ami késik nem múlik. :)

Nem szoktam hosszú bejegyzéseket írni, úgyhogy egyrészt ezért is hagyom itt abba. Másrészt meg azért, mert pillanatnyilag nem jut eszembe semmi más… :D
Aki idáig eljutott az olvasásban annak köszönöm a türelmet. :D
Remélem hamarosan újra tudok valami hasznos poszttal jelentkezni…

Categories: Personal

Egy kis retro C64

2009/05/22 János Szólj hozzá

Mennyit toltam én ezzel gyerekkoromban… :) Imádtam a beteg zenéjét :)

Categories: Games