Smart Kiosk v prostředí SecondLife

Transkript

Smart Kiosk v prostředí SecondLife
České vysoké učení technické v Praze
Fakulta elektrotechnická
Softwarové technologie a management
Smart Kiosk v prostředí SecondLife
Semestrální projekt - Y39PRO
Akademický rok 2009 / 2010, zimní semestr
Vojtěch Vavřín ([email protected])
Obsah
1 Licence..............................................................................................1
2 Zadání a cíle projektu..........................................................................1
3 Realizace projektu..............................................................................1
3.1 Popis řešení..................................................................................1
3.2 Skript..........................................................................................2
4 Závěr................................................................................................6
Výsledný Smart Kiosk se hrou Miliardář..................................................7
Smart Kiosk v prostředí SecondLife
Vojtěch Vavřín
1 Licence
Tento projekt byl vytvořen pod licencí GNU LGPL (http://www.gnu.org/licenses/
lgpl-3.0.txt).
2 Zadání a cíle projektu
Cílem projektu bylo vymodelovat a naimplementovat ve virtuálním prostředí
SecondLife kiosek s aplikací podobnou známé hře „milionář“.
Ovládání aplikace mělo vycházet z úspěšného projektu z minulého ročníku
soutěže IBM Student Research Projects „Nášlapný koberec jako vstupní
zařízení“ (http://ibm-cvut.felk.cvut.cz/~lkjvzz2008/projekt1/). Úkolem tedy
bylo prozkoumat možnosti interakce avatara s aplikací pomocí nášlapných
dlaždic.
3 Realizace projektu
3.1 Popis řešení
Pomocí vestavěného editoru pro modelování 3D objektů byl vytvořen kiosek
s velkou obrazovkou a před ní na zemi čtyři dlaždice. K obrazovce byl přidán
skript s implementací celé aplikace (viz kapitola 3.2 Skript).
V řešení bylo využito toho, že v prostředí SecondLife (SL) si může avatar na
předměty „sednout“ a skript připojený k tomuto předmětu pak může použít
klávesy sloužící původně k ovládání avatara pro ovládání aplikace.
Animace sedajícího si avatara byla
nahrazena stáním. Šlapání na dlaždice
bylo simulováno pomocí vestavěných
animací prostředí SL. Pro úkroky
vpravo, vlevo a vzad se nejlépe hodily
začátky tří různých animací tance. Pro
šlápnutí na dlaždici před avatarem
byla použita část vestavěné animace
pro kopnutí (což významně zvýšilo
atraktivitu a zábavnost výstupu celého
projektu...). Další animace se spouští
po správně zodpovězené otázce –
avatar zatleská, a na oslavu vítězství
ve hře avatar zatancuje.
Obr. 1: Smart Kiosk
1
Smart Kiosk v prostředí SecondLife
Vojtěch Vavřín
3.2 Skript
// Nastavení proměnných
string sit_message = "Play";
string tex;
integer CHANNEL = 0;
integer question;
integer answer;
integer correct;
string nextq;
string score;
key agent;
Obr. 3: Otázka byla
Obr. 2: Označení
// Základní stav
default {
zodpovězena správně
odpovědi A
state_entry() {
llSetSitText(sit_message); // Nastavení textu tlačítka pro „posazení“ na předmět („Play“)
// Nastavení polohy avatara po „posazení“ a umístění kamery
llSitTarget(<0, -1.5, -1.56>, llEuler2Rot(<0, 0, 90> * DEG_TO_RAD));
llSetCameraEyeOffset(<-1.5, -4.0, 1.0>);
llSetCameraAtOffset(<1.5, 2.0, -1.5>);
llSensor("", NULL_KEY, AGENT, 3, PI); // Spuštění senzoru přítomnosti avatara
llSetTexture("679e9797-826b-8d29-5a5e-2660b1208d37", ALL_SIDES); // Textura úvodní obrazovky
}
// Zachycení události senzoru a vypsání zprávy pro uživatele
sensor(integer total) {
llSay(0, "Klikněte pravým a stiskněte PLAY");
}
changed(integer change) {
if(change & CHANGED_LINK) {
agent = llAvatarOnSitTarget(); // Identifikace avatara nutná pro další postup
if(agent) {
llRequestPermissions(agent, PERMISSION_TAKE_CONTROLS |
PERMISSION_TRIGGER_ANIMATION); // Požadavek na povolení převzetí ovládání a spouštění animací
avatara
llSetTexture("de0d6d9d-afc7-ad83-0f90-40a9f984fb4a", ALL_SIDES); // Textura první
otázky
question = 1;
answer = 1;
correct = 0;
score = "0";
llSetText("Skore: "+(string)score,<1, 1, 1>, 1); // Výpis skóre
}
else {
llReleaseControls();
llSetTexture("679e9797-826b-8d29-5a5e-2660b1208d37", ALL_SIDES);
llSetText("",<0, 0, 0>, 0);
state default;
}
}
}
run_time_permissions(integer perm) {
if(perm) {
llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_LEFT | CONTROL_RIGHT |
CONTROL_ROT_LEFT | CONTROL_ROT_RIGHT, TRUE, FALSE); // Po udělení povolení se převezme ovládání
llStopAnimation("sit_generic"); // Zastavení původní sedací animace
llStopAnimation("sit"); // Zastavení původní sedací animace
llStartAnimation( "stand_1" ); // Místo toho se spustí animace stání
}
}
control(key id, integer held, integer change) { // Co se bude dít při mačkání šipek
if(held & change & CONTROL_BACK) { // Stisknutí klávesy „dolů“
llStartAnimation("dance8");
llSleep(0.4);
llStopAnimation("dance8"); // Vestavěná animace tance č. 8 běží 0,4 s (krok vzad)
2
Smart Kiosk v prostředí SecondLife
Vojtěch Vavřín
if(answer == 1) { // Zvolená odpověď B
if(question == 1) { // Otázka č. 1
llSetTexture("d791e00c-99c2-3cf5-f8b9-c6b9f9e76c74", ALL_SIDES); // Zobrazení
textury s vyznačenou odpovědí 1B
correct = 0; // U této otázky je odpověď B špatně
}
else if(question == 2) { // Otázka č. 2
llSetTexture("637b709f-24bf-725f-2eda-dc684937b29d", ALL_SIDES); //2B
correct = 1; // U této otázky je odpověď B správně
score = "10.000.000";
nextq = "d5b83e64-e802-3e75-8686-dd57ac672a01"; // Proměnná s označením textury
pro další otázku
}
else if(question == 3) { // Otázka č. 3
llSetTexture("04f23c26-864c-ff99-53a7-5a5d55a17a7c", ALL_SIDES); //3B
correct = 1; // U této otázky je odpověď B správně
score = "50.000.000";
nextq = "f49ba27a-6c10-4106-48fc-aff0d8961b88"; // Proměnná s označením textury
pro další otázku
}
else if(question == 4) { // Otázka č. 4
llSetTexture("7ee14463-bb95-9f4c-8429-b4a6b75222e6", ALL_SIDES); //4B
correct = 0; // U této otázky je odpověď B špatně
}
else if(question == 5) { // Otázka č. 5
llSetTexture("8587488f-8802-b71b-c2e1-5ef7d7dba14f", ALL_SIDES); //5B
correct = 1; // U této otázky je odpověď B správně
score = "1.000.000.000";
nextq = "a528d154-ebcd-4b22-c52a-4aa59abed665"; // Proměnná s označením textury
pro vítězství (5. otázka je poslední)
}
}
// podobně pro označení odpovědí C, D nebo A
if(answer == 2) {
if(question == 1) {
llSetTexture("0bf9b31e-4851-4def-aef4-462b1c6939bb", ALL_SIDES); //1C
correct = 1;
score = "1.000.000";
nextq = "bc744883-32a4-4423-6c2d-312efe251172"; //2A
}
else if(question == 2) {
llSetTexture("0c23a5ee-d8aa-2ef5-8378-88170a51eeaa", ALL_SIDES); //2C
correct = 0;
}
else if(question == 3) {
llSetTexture("3d6de3ec-adc8-4923-e7bc-5894f5660e12", ALL_SIDES); //3C
correct = 0;
}
else if(question == 4) {
llSetTexture("420221a7-88f5-e2d2-f721-b80382ebb366", ALL_SIDES); //4C
correct = 0;
}
else if(question == 5) {
llSetTexture("2c3836fa-2e0d-498a-5229-b7965603ccf6", ALL_SIDES); //5C
correct = 0;
}
}
if(answer == 3) {
if(question == 1) {
llSetTexture("52dd87a4-ae8f-98d3-532c-0fd8e39a6007", ALL_SIDES); //1D
correct = 0;
}
else if(question == 2) {
llSetTexture("0e20edd5-0e63-6047-8221-1f3abeb3b9dc", ALL_SIDES); //2D
correct = 0;
}
else if(question == 3) {
llSetTexture("c5c5f684-91cf-7d40-9c5f-ae27a049aaf9", ALL_SIDES); //3D
correct = 0;
}
3
Smart Kiosk v prostředí SecondLife
Vojtěch Vavřín
else if(question == 4) {
llSetTexture("bfe0f575-84ed-79c4-16a9-a3512fc61e5f", ALL_SIDES); //4D
correct = 1;
score = "250.000.000";
nextq = "71e0cd67-3df1-9cf2-0c04-608191b4c765"; //5A
}
else if(question == 5) {
llSetTexture("a08794cf-8b5e-7cad-7ede-329408da33f2", ALL_SIDES); //5D
correct = 0;
}
}
if(answer == 4) {
if(question == 1) {
llSetTexture("de0d6d9d-afc7-ad83-0f90-40a9f984fb4a",
correct = 0;
}
else if(question == 2) {
llSetTexture("bc744883-32a4-4423-6c2d-312efe251172",
correct = 0;
}
else if(question == 3) {
llSetTexture("d5b83e64-e802-3e75-8686-dd57ac672a01",
correct = 0;
}
else if(question == 4) {
llSetTexture("f49ba27a-6c10-4106-48fc-aff0d8961b88",
correct = 0;
}
else if(question == 5) {
llSetTexture("71e0cd67-3df1-9cf2-0c04-608191b4c765",
correct = 0;
}
}
answer += 1;
if(answer > 4) answer = 1;
ALL_SIDES); //1A
ALL_SIDES); //2A
ALL_SIDES); //3A
ALL_SIDES); //4A
ALL_SIDES); //5A
}
if(held & change & CONTROL_FWD) { // Stisknutí klávesy „nahoru“
llStartAnimation("kick_roundhouse_r");
llSleep(1);
llStopAnimation("kick_roundhouse_r"); // Vestavěná animace pro kopnutí běží 1 s (krok
vpřed)
// Zbytek podobně jako výše
if(answer == 1) {
if(question == 1) {
llSetTexture("52dd87a4-ae8f-98d3-532c-0fd8e39a6007",
correct = 0;
}
else if(question == 2) {
llSetTexture("0e20edd5-0e63-6047-8221-1f3abeb3b9dc",
correct = 0;
}
else if(question == 3) {
llSetTexture("c5c5f684-91cf-7d40-9c5f-ae27a049aaf9",
correct = 0;
}
else if(question == 4) {
llSetTexture("bfe0f575-84ed-79c4-16a9-a3512fc61e5f",
correct = 1;
score = "250.000.000";
nextq = "71e0cd67-3df1-9cf2-0c04-608191b4c765"; //5A
}
else if(question == 5) {
llSetTexture("a08794cf-8b5e-7cad-7ede-329408da33f2",
correct = 0;
}
}
ALL_SIDES); //1D
ALL_SIDES); //2D
ALL_SIDES); //3D
ALL_SIDES); //4D
ALL_SIDES); //5D
if(answer == 2) {
if(question == 1) {
llSetTexture("de0d6d9d-afc7-ad83-0f90-40a9f984fb4a", ALL_SIDES); //1A
correct = 0;
}
4
Smart Kiosk v prostředí SecondLife
Vojtěch Vavřín
else if(question == 2) {
llSetTexture("bc744883-32a4-4423-6c2d-312efe251172",
correct = 0;
}
else if(question == 3) {
llSetTexture("d5b83e64-e802-3e75-8686-dd57ac672a01",
correct = 0;
}
else if(question == 4) {
llSetTexture("f49ba27a-6c10-4106-48fc-aff0d8961b88",
correct = 0;
}
else if(question == 5) {
llSetTexture("71e0cd67-3df1-9cf2-0c04-608191b4c765",
correct = 0;
}
ALL_SIDES); //2A
ALL_SIDES); //3A
ALL_SIDES); //4A
ALL_SIDES); //5A
}
if(answer == 3) {
if(question == 1) {
llSetTexture("d791e00c-99c2-3cf5-f8b9-c6b9f9e76c74", ALL_SIDES);
correct = 0;
}
else if(question == 2) {
llSetTexture("637b709f-24bf-725f-2eda-dc684937b29d", ALL_SIDES);
correct = 1;
score = "10.000.000";
nextq = "d5b83e64-e802-3e75-8686-dd57ac672a01"; //3A
}
else if(question == 3) {
llSetTexture("04f23c26-864c-ff99-53a7-5a5d55a17a7c", ALL_SIDES);
correct = 1;
score = "50.000.000";
nextq = "71e0cd67-3df1-9cf2-0c04-608191b4c765"; //4A
}
else if(question == 4) {
llSetTexture("7ee14463-bb95-9f4c-8429-b4a6b75222e6", ALL_SIDES);
correct = 0;
}
else if(question == 5) {
llSetTexture("8587488f-8802-b71b-c2e1-5ef7d7dba14f", ALL_SIDES);
correct = 1;
score = "1.000.000.000";
nextq = "a528d154-ebcd-4b22-c52a-4aa59abed665"; // vítězství
}
}
if(answer == 4) {
if(question == 1) {
llSetTexture("0bf9b31e-4851-4def-aef4-462b1c6939bb",
correct = 1;
score = "1.000.000";
nextq = "bc744883-32a4-4423-6c2d-312efe251172"; //2A
}
else if(question == 2) {
llSetTexture("0c23a5ee-d8aa-2ef5-8378-88170a51eeaa",
correct = 0;
}
else if(question == 3) {
llSetTexture("3d6de3ec-adc8-4923-e7bc-5894f5660e12",
correct = 0;
}
else if(question == 4) {
llSetTexture("420221a7-88f5-e2d2-f721-b80382ebb366",
correct = 0;
}
else if(question == 5) {
llSetTexture("2c3836fa-2e0d-498a-5229-b7965603ccf6",
correct = 0;
}
}
5
//1B
//2B
//3B
//4B
//5B
ALL_SIDES); //1C
ALL_SIDES); //2C
ALL_SIDES); //3C
ALL_SIDES); //4C
ALL_SIDES); //5C
Smart Kiosk v prostředí SecondLife
Vojtěch Vavřín
answer -= 1;
if(answer < 1) answer = 4;
}
if(held & change & (CONTROL_RIGHT | CONTROL_ROT_RIGHT)) { // Stisknutí klávesy „vpravo“
(potvrzení odpovědi)
llStartAnimation("dance1");
llSleep(1);
llStopAnimation("dance1"); // Vestavěná animace tance č. 1 běží 1 s (krok vpravo)
if(correct == 1) { // Vybraná odpověď je správná
llSetTexture("bb7fce81-252e-702d-8a2f-2b969705f063", ALL_SIDES); // Textura správné
odpovědi
textura
llSetText("Skore: "+score,<1, 1, 1>, 1);
question += 1;
answer = 1;
correct = 0;
llStartAnimation("clap");
llSleep(2);
llStopAnimation("clap"); // Animace zatleskání běží 2 s
llSetTexture(nextq, ALL_SIDES); // Textura s další otázkou, popřípadě vítězná
if(question > 5) { // Pokud jsou všechny otázky zodpovězeny správně, spustí se anima
ce vítězného tance na 8 s, pak je avatar odpojen
llStartAnimation("dance4");
llSleep(8);
llUnSit(agent);
}
}
else {
llSetTexture("e40fcd00-dc24-a177-f739-5251deaa0fbe", ALL_SIDES); // Textura špatné
odpovědi
llSleep(2);
llUnSit(agent); // Avatar je odpojen
}
}
if(held & change & (CONTROL_LEFT | CONTROL_ROT_LEFT)) { // Stisknutí klávesy „vlevo“
(ukončení hry)
llStartAnimation("dance7");
llSleep(1);
llStopAnimation("dance7"); // Vestavěná animace tance 7 běží 1 s (krok vlevo)
llUnSit(agent); // Avatar je odpojen
}
}
}
4 Závěr
Kiosek se hrou „Miliardář“ byl v prostředí SL úspěšně vymodelován
a naimplementován a je přístupný k vyzkoušení v severozápadní části ostrova
ČVUT (CTU Island).
Interakce pomocí nášlapného zařízení byla v prostředí SL pouze napodobena,
neboť se ukázalo, že tento způsob interakce se pro SL příliš nehodí.
6
Smart Kiosk v prostředí SecondLife
Vojtěch Vavřín
Výsledný Smart Kiosk se hrou Miliardář
Obr. 4: Celý kiosek
Obr. 5: Hra v plném proudu
7

Podobné dokumenty

Stáhnout ceník

Stáhnout ceník (ES) č. 715/2007 a č. 692/2008 v platném znění. Uváděné hodnoty se nevztahují na konkrétní jednotlivé vozidlo a musí být chápány výhradně jako směrné hodnoty. Standardizovaná zkušební metoda umožňu...

Více

číslo 11

číslo 11 jednak vlastnosti, kvůli kterým je démiurgos stvořil, jednak vlastnosti, které tyto první nutně doprovázejí. Pokud existují ony první vlastnosti, nemohou je nedoprovázet ony druhé vlastnosti. Větši...

Více

částka 33/2010 - Ministerstvo vnitra České republiky

částka 33/2010 - Ministerstvo vnitra České republiky a přepínač režimu je nastaven tak, aby nástroj podporoval režim provádění kontroly, inicializace a údržby. V případě, že nástroj signalizuje chybu, nesmí být k zajišťování certifikačních služeb pou...

Více