DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v



Podobné dokumenty
Funkce, podmíněný příkaz if-else, příkaz cyklu for

Algoritmizace a programování

8 Třídy, objekty, metody, předávání argumentů metod

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Úvodem... 9 Kapitola 1 Karetních

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Lekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

První kapitola úvod do problematiky

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

2 Datové typy v jazyce C

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

6. Příkazy a řídící struktury v Javě

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

PROGRAMOVÁNÍ V SHELLU

Výčtový typ strana 67

PSK3-9. Základy skriptování. Hlavička

Zápis programu v jazyce C#

IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku

Operační systémy. Cvičení 4: Programování v C pod Unixem

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Jazyk C# a platforma.net

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Úvod do programovacích jazyků (Java)

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Řídicí příkazy KAPITOLA 3. Vstup znaků z klávesnice

C# konzole Podíl dvou čísel, podmínka IF

5 Přehled operátorů, příkazy, přetypování

Algoritmizace a programování

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

Objektově orientované programování

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Další nutný soubor je laydiv.js, ve kterém jsou uloženy funkce pro zobrazování virů na ploše a funkce pro odkaz na Teachers Guide.

Rozklad na prvočinitele. 3. prosince 2010

MAXScript výukový kurz

- jak udělat konstantu long int: L long velka = 78L;

Řídicí struktury. alg3 1

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

PROGRAMOVÁNÍ V C++ CVIČENÍ

dovolují dělení velkých úloh na menší = dekompozice

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Software602 Form Designer

Regulární výrazy. Vzory

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Úvod do programování - Java. Cvičení č.4

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

DUM 06 téma: Tvorba makra pomocí VBA

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

Skripty - úvod. Linux - skripty 2

Stručný návod k programu Octave

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

1. Téma 12 - Textové soubory a výjimky

Proměnné a parametry. predn_08.odt :00:38 1

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Textové soubory. alg9 1

Následující tabulka obsahuje typy objektů podle jejich pojmenovávání: počáteční písmeno jména

Programování v C++ 1, 1. cvičení

Vytváření a použití knihoven tříd

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Konvertor diakritiky 3. Instalace

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Prezentace a vysvětlení programového prostředí NXC

Úvod do programování. Lekce 1

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Sada 1 - PHP. 03. Proměnné, konstanty

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

Sekvenční a podmíněné provádění

Datové struktury. alg12 1

IRAE 07/08 Přednáška č. 7. Začátek (head)

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

int ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N

Algoritmizace a programování

Algoritmizace a programování

Transkript:

DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve je nutno v hlavním adresáři hry založit novou složku dobrodružství. Její název musí začínat písmeny "DRD ". Pokud první čtyři písmena názvu budou jiná, systém složku vůbec nerozpozná, nenačte a v menu nenabídne. Následně je nutno v tomto novém adresáři vytvořit hlavičkový soubor. Ten se musí jmenovat "description.cfg". Jeho syntaxe je velice jednoduchá: <název_atributu> = <řetězec> <číslo> V současné době je možno nastavit následující atributy: TITLE řetězec název dobrodružství DESCRIPTION řetězec stručný popis IMPORTPARTY číslo (1/0) je možno importovat družinu? NEWPARTY číslo (1/0) je možno vytvořit novou družinu? STARTPARTYSIZE číslo maximální povolená velikost vytvořené družiny ENTRYMAP řetězec název souboru startovní mapy ENTRYX číslo x-ová pozice na startovní mapě ENTRYY číslo y-ová pozice na startovní mapě Jak je vidět, některé z uvedených hodnot jsou typu řetězec. Ten je možno zapsat přímo na místo, kde je použit. Pokud se však jedná o text, který bude čten hráčem, je lepší místo toho použít odkaz na lokalizační stringtable. To se provede zápisem dolaru a názvem klíče lokalizovaného řetězce. 1

Všechny lokalizační řetězce musí být uvedeny v souboru "stringtable.txt". Ten má podobnou syntax jako hlavičkový soubor (tedy název, rovnítko, hodnota). Jeden takový soubor je vhodné vytvořit v adresáři dobrodružství, další je již obsažen v hlavním adresáři hry. Následně je třeba založit tři podadresáře: maps, classes, scripts a audio. Stojí za povšimnutí, že složky stejných názvů jsou i v hlavním adresáři hry. Dalším krokem je vytvoření map, které pak budou uloženy v adresáři maps. Editor map je přiložen v adresáři builder a spuští se příkazem "java -jar mapbuild.jar". Nápověda k této aplikaci je obsažena přímo v aplikaci samé. Do map je možno vkládat objekty definované v adresáři classes (v hlavní složce hry, nebo ve složce kampaně). Dále je nutno (/možno) nadefinovat vlastní typy herních objektů a uložit je ve složce classes a vlastní funkce a uložit je ve složce scripts. Při definici tříd je třeba pamatovat na fakt, že soubory se načítají v abecedním pořádku. Proto, pokud by třída z jednoho souboru byla vyděděna ze třídy v jiném souboru, měl by tento soubor být pojmenován tak, aby byl načten jako první. Pokud programátor naprogramuje funkci Init, bude tato funkce spuštěna na začátku dobrodružství. Složka audio může obsahovat vlastní hudbu a zvuky (např. nadabované dialogy). 2 Programování v DSL Soubory jazyka DSL obsahují pouze definice tříd a definice funkcí. Žádné jiné konstrukce nejsou zapotřebí. Definice třídy: Definice třídy je uvedena hlavičkou, která se sestává z názvu třídy a případně z dvojtečky a názvu mateřské třídy. Tělo třídy je uzavřeno mezi složenými závorkami a obsahuje seznam atributů a jejich hodnot (název, rovnítko, hodnota). Hodnotou může být řetězec, odkaz do stringtable nebo číslo. Navíc je možno jako atribut uvést i další složené závorky a procedurální kód z druhé části DSL (viz dále). Formální shrnutí: 2

<id třídy> [: <id mateřské třídy>] "{" {<id atributu> = <hodnota atributu> ; "" /// Base class for triggers. Trigger: MapObject { handler = {StdPrintLn("Base trigger triggerred."); /** Base class for NPCs - encounter won t implicitly * start a fight but it can still go that way. */ NPC: Trigger { npc = 1; handler = {StdPrintLn($GOODDAY); Pozn.: Více příkladů je možno nalézt ve složce classes v hlavním adresáři hry. Definice funkce: Definice funkce je uvozena názvem funkce, kulatými závorkami a v nich případným seznamem názvů parametrů. Poté následují složené závorky a v nich tělo funkce. Zde je popis syntaxe definice funkce: 3

<id funkce> "(" [ <id atributu> {, <id atributu> ] ")" <blok kódu> <blok kódu> ::= "{" { <příkaz> "" <příkaz> ::= <přiřazení> <volání funkce> <return příkaz> <if konstrukce> <while cyklus> <přiřazení> ::= <l-hodnota> = <výraz> ; <l-hodnota> ::= [global] <id proměnné> { "[" <výraz> "]" <if konstrukce> ::= if "(" <výraz> ")" <blok kódu> { elif "(" <výraz> ")" <blok kódu> [ else <blok kódu> ] <while cyklus> ::= while "(" <výraz> ")" <blok kódu> MojeFunkce(parametr1,parametr2) { // tělo funkce Tělo funkce se skládá z příkazů, složených, nebo jednoduchých. Jednoduché příkazy jsou ukončeny středníkem. Jednoduchý příkaz může být přiřazení, volání funkce, nebo návratového příkazu. Přiřazení je provedeno napsáním názvu proměnné, rovnítka a výrazu určujícím novou hodnotu. Před název proměnné je možno připsat klíčové slovo global. Volání funkce je provedeno napsáním názvu funkce, kulatých závorek a v nich seznamu výrazů určujících argumenty volání.) Návrat z funkce je proveden klíčovým slovem return a případně hodnotou, která se má vrátit. Výraz je složený z názvů proměnných (tentokrát bez global), volání funkcí, čísel, řetězců a aritmetických operátorů. 4

global prom1 = 2*3; prom2 = "ahoj"; MojeFunkce(prom1+1,prom2+"svete"); Ze složených příkazů je možno použít if a while způsobem uvedeným v příkladu: n = ZiskejPocet(); if (n==7) { elif (n>3) { else { i = 0; while (i<n) { i = i+1; Práce s poli je maximálně jednoduchá. Nejprve je nutno pole vytvořit. To se provede stejným způsobem jako přiřazení, ale napravo od rovnítka je nutno napsat hranaté závorky. Poté je možno přiřazovat dovnitř pole. To je provedeno napsáním názvu pole, hranatých závorek s indexem a poté rovnítkem a výrazem. Index pole výraz, který má hodnotu buď celého čísla, nebo řetězce. Uvnitř pole je možno vytvářet další pole a zapisovat do nich přidáním dalších hranatých závorek. Stejným způsobem je možno z pole číst. pole = []; pole[2] = []; pole[2]["jmeno"] = "Tonda"; pole[2]["prijmeni"] = "Ucho"; StdPrintLn(pole[2]["jmeno"]+" "+pole[2]["prijmeni"]); 5

Vestavěné funkce Systém má v sobě vestavěno omezené množství funkcí, které umožňují ovládat hru. Krom toho je možno v samotném jazyce DSL nadefinovat pomocné funkce a uložit je v adresáři scripts v hlavním adresáři hry. Zde je jejich seznam: int Rand6() int Rand10() void StdPrintLn(string) string Nmr2Str(int) void PlayMusic(string) void StopMusic() void PlaySound(string) int IsGlobalDefined(string) void UndefineGlobal(string) int GetType(cokoliv) void ShowDialog(string,pole,string) void ShowImageDialog(str,str,pole,str) void HideDialog() void PrintNmr(int) Vrátí číslo od jedné do šesti (včetně). Vrátí číslo od jedné do deseti. V Linuxu vypíše na konzoli ladící hlášku. (ve Windows uloží do log souboru) Převede číslo na řetězec. Začne hrát hudbu ze zadaného souboru. Vypne hudbu. Přehraje zvuk ze zadaného souboru. Vrátí 1, pokud globální proměnná daného jména existuje, jinak vrátí 0. Smaže globální proměnnou daného jména. Zjistí typ dané proměnné (0-int, 1-float, 2-string, 3-field). text otázky, pole odpovědí, název handleru prvek pole: str [str] [str,int] jako ShowDialog, ale první parametr je název obrázku uzavře zobrazený dialog Na konzoli vypíše číslo. 6