Quake Live – FPS hraná v prohlížeči

Pakliže znáte starou hru Quake III Arena, nemůže vás modernější verze Quake Live ničím překvapit. Hlavní úkol hráče se totiž vůbec nezměnil. Z pohledu první osoby budete s pomocí různých zbraní zabíjet své nepřátele a získávat tzv. fragy. Nečekají na vás však žádní počítačově řízení protivníci, ale skuteční lidé. Quake Live totiž těží právě z mutliplayeru. Existuje pochopitelně možnost zahrát si v rámci tréninku s umělou inteligencí, zábava však začíná až po ostrém připojení na vybraný server. Po zaregistrování si můžete vyzkoušet až 50 map v pěti herních módech. Nechybí pochopitelně klasický Deathmach či Capture The Flag.

Snadná a rychlá instalace

Velmi mě potěšilo, že Quake Live podporuje Windows, Linux i Max OS X. Zahrajete si proto skutečně kdekoliv. Stačí jen nainstalovat plugin do prohlížeče a vyčkat na stažení základních dat. Po pár minutách se již proto vrháte do hry. První fragy jsem získal na kombinaci Windows 7 a Chrome. Po nabootování Ubuntu však již prohlížeč od Google nešel použít. Plugin pro jeho linuxovou verzi totiž prozatím neexistuje. Stačilo však spustit Firefox a vše běželo bez sebemenších obtíží.

Grafika

Po přepnutí do fullscreen módu Quake Live vypadá velmi obstojně. Navíc běží i na slabších počítačích – např. netbook s 1,66 GHZ, 1 GB RAM, integrovaná grafická karta. Textury disponují vysokou kvalitou a propracované efekty rovněž potěší. Nezasvěcený člověk prakticky nemá šanci rozpoznat, že si ve skutečnosti užívá hru v prohlížeči.

Reklamy a placené účty

Celý projekt pochopitelně potřebuje generovat zisk. Za tímto účelem se proto před každým připojením na server zobrazí krátká video reklama (přibližně 15 vteřin). Existuje rovněž možnost pořídit si tzv. Premium či Pro účet. První varianta vás přijde na 2 dolary měsíčně, zatímco ta druhá z peněženky odčerpá za stejný časový úsek dvojnásobek – tedy 4 USD. Po zakoupení členství se zbavíte reklam, získáte možnost vytvářet klany či prohlížet prodlouženou historii zápasů. Kompletní výčet výhod si můžete prostudovat na této stránce.

Raspberry Pi – minipočítač za pár stokorun

Raspberry PiPod pojmem Raspberry Pi se skrývá opravdu miniaturní počítač, nad jehož koupí uvažuji. Velikostí jej lze přirovnat k obyčejné platební kartě. I přes malé rozměry však bude obsahovat ARM procesor běžící na 700 Mhz. Co se týče operační paměti, lze si zvolit mezi variantou s128 MB nebo 256 MB. Obejít se z pochopitelných důvodů (velikost, spotřeba) musíme bez pevného disku. Jako úložiště dat využijete paměťovou kartu. Záměrně jsem přitom v předcházejícím popisu použil budoucí čas. Koncept Raspberry Pi se momentálně nachází v „betaverzi“. Existují již však funkční prototypy a návrháři se snaží vychytat poslední mouchy. Dle oficiálního vyjádření si počítač objednáme již v lednu 2012. Vydáme přitom pouhých 25 nebo 35 dolarů. Cena záleží na konkrétním modelu, který si vyberete.

Napájení

O dodání potřebné životodárné elektrické energie se postará USB. Ano, Raspberry Pi si skutečně vystačí s pouhými 5 Volty (1 A). Objevují se rovněž úvahy, že by šlo napájení v nouzi realizovat i s pomocí klasických tužkových baterií.

Operační systém

Po seznámení s hardwarem přejděme k další důležité vlastnosti každého počítače. Co se týče operačního systému, spatříte po nabootování Linux. Volit dokonce můžete mezi několika distribucemi. Původně se uvažovalo i o podpoře Ubuntu, nakonec však z této idei sešlo.

Periferie

O připojení myši a klávesnice se postarají dva USB 2.0 konektory (pouze u modelu B, verze A obsahuje jeden). Monitor či televizi následně spojíte s Raspberry Pi díky standardu HDMI. Zvukový výstup zprostředkuje odpovídající 3,5 mm jack.

Připojení na internet

Model B bude disponovat 100 megabitovou síťovou kartou. Jestliže zatoužíte po Wi-Fi, nebrání vám nic v zakoupení daného USB adaptéru.

Case

Prozatím se neplánuje počítač dodávat včetně skříně o shodných rozměrech. Ochranné pouzdro si proto musíte vyrobit na vlastní pěst. Nicméně se skvělým nápadem přišli samotní příznivci Raspberry Pi. Proč nevyužít klasické LEGO?

Qt – Combo box

Na následujícím příkladě si společně ukážeme práci s combo boxem. Konkrétně budeme využívat rovnou dva ovládací prvky tohoto typu, které na sobě dokonce budou závislé. Změna volby uživatelem se proto okamžitě projeví v obsahu druhého combo boxu. Pokud nastavíme vlastnost editable na true, získáme možnost vkládat vlastní hodnoty. V našem programu však povolíme výběr pouze z předem definovaných údajů. Nejprve se aplikace zeptá, zda-li budeme cestovat po zemi nebo ve vzduchu. Na základě odpovědi poté upraví druhý combo box a nabídne odpovídající dopravní prostředky.

Combo box

Designérský režim

Po vytvoření projektu se přepneme do módu design. Postupně přidáme oba combo boxy a několik Labelů. Nezapomeňte si jednotlivé objekty vhodně pojmenovat, díky čemuž si usnadníte následující programování.

Tvorba zdrojového kódu

Mezi pro nás nejdůležitější funkci combo boxu patří addItem. V konstruktoru třídy si s její pomocí naplníme ovládací prvek. Položky se přidávají vždy za poslední volbu a disponují rovněž vlastním interním id, které se počítá od nuly. To ostatně vysvětluje, proč jsem vytvořil i pomocnou funkci procistit. Původně přitom její tělo obsahovalo iterační cyklus, včas mě však zarazila hodnota vrácená s pomocí count. Ta totiž prozrazuje celkový počet záznamů a nikoliv nejvyšší id. Tuto hodnotu si musíme sami dopočítat, tedy odečíst jedničku. Procistit musíme zavolat po každé změně výběru, protože v opačném případě by se druhý combo box postupně rozrůstal o duplicitní informace. Spojení signálů a slotů pochopitelně naleznete opět v konstruktoru. Volají se v podstatě jen dvě funkce – zmena a souhrn. Ta první se postará o obměnu příslušného combo boxu. Druhá nám sestaví informační QString, který poté nastaví vlastnosti text u Labelu umístěného ve spodní části okna. Povšimněte si rovněž, že se plně obejdeme bez tlačítek. Veškeré úpravy probíhají ihned poté, co uživatel změní svůj názor.

#include „widget.h“
#include „ui_widget.h“

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);

ui->cb_typCesty->addItem(„Po zemi“);
ui->cb_typCesty->addItem(„Ve vzduchu“);

connect(ui->cb_typCesty,SIGNAL(activated(int)),this,SLOT(zmena(int)));
connect(ui->cb_typCesty,SIGNAL(activated(int)),this,SLOT(souhrn()));
connect(ui->cb_dopravniProstredek,SIGNAL(activated(int)),this,SLOT(souhrn()));
zmena(ZEME);
souhrn();

}

Widget::~Widget()
{
delete ui;
}

void Widget::zmena(int id){
procistit(ui->cb_dopravniProstredek);

if (id == ZEME){
ui->cb_dopravniProstredek->addItem(„Automobil“);
ui->cb_dopravniProstredek->addItem(„Motocykl“);
}else if (id == VZDUCH){
ui->cb_dopravniProstredek->addItem(„Letadlo“);
ui->cb_dopravniProstredek->addItem(„Helikoptéra“);
}
}

void Widget::procistit(QComboBox*& obj){
while(obj->count() != 0){
obj->removeItem(obj->count()-1);
}

}

void Widget::souhrn(){
QString typ = ui->cb_typCesty->itemText(ui->cb_typCesty->currentIndex());
QString prostredek = ui->cb_dopravniProstredek->itemText(ui->cb_dopravniProstredek->currentIndex());
QString vysledek = „Typ cesty: „+ typ +“. Dopravní prostředek: “ + prostredek;
ui->l_vysledek->setText(vysledek);
}

 

Enum

Závěrem ještě poukáži na výčtový typ pojmenovaný překvapivě jako TYP. Konstanta ZEME zastupuje číselnou hodnotu 0, zatímco VZDUCH symbolizuje 1. Zdrojový kód díky tomu získává na přehlednosti.

#ifndef WIDGET_H
#define WIDGET_H

#include
#include

#include

enum TYP{ZEME,VZDUCH};

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
Q_OBJECT

public:
explicit Widget(QWidget *parent = 0);
~Widget();

public slots:
void zmena(int);
void souhrn();

private:
Ui::Widget *ui;
void procistit(QComboBox*& obj);
};

#endif // WIDGET_H