Informa

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Informa
limbaj de programare
Autor Graham Nelson
Data de origine 1993
Ultima versiune 7.9.3 (decembrie 2015)
Paradigme programare orientată obiect, programare declarativă și programare procedurală
Extensii comune .Z #, inf, Z5 și Z8
Implementare referință
Site-ul web inform7.com/

Inform este un limbaj de programare și un sistem de dezvoltare a aventurii textului creat în 1993 de Graham Nelson.

Introducere

Sistemul Inform este format din două componente principale: compilatorul Inform care generează fișiere de poveste din codul sursă Inform și biblioteca Inform , o colecție de software care gestionează cele mai dificile părți ale analizei de intrare a jucătorului și ține evidența modelului mondial. jocul. Numele Inform se referă și la limbajul de programare Inform înțeles de compilator.

Compilatorul

Compilatorul Inform generează fișiere de cod pentru mașina Z din codul sursă Inform . Aceste fișiere pot fi executate de un interpretor de cod Z - adică de un program care emulează mașina virtuală Z. Deoarece există cel puțin unul dintre acești interpreți pentru aproape toate platformele, aceasta înseamnă că fișierul cod Z poate fi rulat fără modificări pe o varietate de computere diferite.

Andrew Plotkin a creat o versiune neoficială a Inform capabilă să genereze fișiere pentru mașina virtuală Glulx , care elimină multe dintre limitările mașinii Z, dar mașinile virtuale Glulx nu au fost încă portate la multe arhitecturi. Inform 6.3, lansat pe 29 februarie 2004 include modificările Plotkin și gestionează ambele mașini virtuale.

Deși Inform și mașina Z sunt concepute pentru ficțiune interactivă, un număr mare de alte programe au fost dezvoltate împreună cu acestea, inclusiv un interpret BASIC , un joc Tetris și o versiune a jocului Snake .

Limbajul de programare

Inform este un limbaj de programare orientat pe obiecte și procedural. Obiectele sunt stocate în copaci care țin evidența relațiilor părinte-copil între obiecte. Obiectele pot fi mutate în copac. De obicei, obiectele de nivel superior reprezintă camere sau alte locuri din joc, care pot conține alte obiecte reprezentând conținutul camerei, fie că sunt obiecte fizice, personaje sau efecte de fundal. Toate obiectele pot conține alte obiecte, astfel încât un obiect din salotto ar putea conține un obiect de assicuratore care conține o valigetta care conține un contratto .

În primele versiuni ale Inform , noțiunea de obiecte era diferită de cea utilizată în programarea orientată pe obiecte, neavând conceptul de clasă . Versiunile mai recente au integrat capacitatea de a defini clase și de a crea obiecte care sunt membre ale acelor clase. Obiectele și clasele pot moșteni din mai multe clase. Jocurile interactive de ficțiune conțin de obicei multe elemente unice. Din acest motiv, cele mai multe dintre obiectele utilizate nu moștenește vreun clase, în afară de „metaclass“ obiect. Cu toate acestea, obiectele au deseori atribute (proprietăți booleene, cum ar fi scenary sau edible ) recunoscute de biblioteca Inform. În alte limbi, acest comportament ar fi în mod normal implementat prin utilizarea moștenirii.

Iată un exemplu de cod sursă Inform.

 [Principal;
    print "Hello World ^";
];

Același rezultat se obține prin eliminarea caracterului „^” (care indică caracterul „ returnare căruță ”) și folosirea print_ret în loc de print . print_ret returnează imediat rutina cu valoarea 1 . Această instrucțiune specială de tipărire este prezentă deoarece această combinație de acțiuni este foarte frecventă la pregătirea ficțiunii interactive folosind Inform. De fapt, poate fi scris fără cuvinte cheie, întrucât un șir ca declarație este o sintaxă specializată pentru print_ret .

Libraria

Sistemul de informare include și biblioteca Inform , care automatizează aproape toate sarcinile mai dificile de programare a ficțiunii interactive; în special, include un analizor care interpretează contribuția jucătorului și un model mondial care ține evidența obiectelor (și a proprietăților lor), cum ar fi încăperile, ușile, inventarul jucătorului și așa mai departe.

Iată un exemplu de informare a codului sursă folosind biblioteca:

 Poveste constantă "BUNĂ WIKIPEDIA";
Titlu constant "^ Un exemplu interactiv ^";
Include „Parser”;
Include „VerbLib”;
[Inițializați;
    locație = Living_Room;
    "Salut Lume";
];
Obiect Living_Room "Camera de zi"
    cu
        descriere "Un living mobilat confortabil.",
        n_to Bucătărie,
        s_to Frontdoor,
    are lumină;
Obiect -> Vânzător "vânzător de asigurări"
    cu
        nume „asigurare” „vânzător” „om”,
        descriere "Un vânzător de asigurări într-un poliester lipicios
              costum. Pare dornic să vă vorbească. ",
        inainte de [;
            Asculta:
                mută Insurance_Paperwork la jucător;
                „Vânzătorul te plictisește cu o discuție
                 a polițelor de asigurare de viață. Din a lui
                 servietă trage niște hârtii pe care el
                 mâinile către tine. ";
        ],
    a animat;
Obiect -> -> Servietă "servietă"
    cu
        nume „servietă” „caz”,
        descriere „O servietă neagră ușor uzată.”,
    are container;
Obiect -> -> -> Insurance_Paperwork "documente de asigurare"
    cu
        nume „hârtie” „hârtii” „asigurare” „documente” „formulare”,
        descriere „Pagină după pagină a micilor persoane juridice.”;
Include „Gramatică”;

Compilatorul Inform nu necesită utilizarea bibliotecii Inform . Există cel puțin o bibliotecă de înlocuire: Platypus .

Jocuri celebre dezvoltate cu Inform

  • Curses , de Graham Nelson , a fost primul joc important scris în Inform și este considerat un clasic de acest gen.
  • Galatea , de Emily Short este, fără îndoială, cea mai detaliată și eficientă implementare a formatului de joc al unui NPC .
  • Photopia , de Adam Cadre , este creditat ca fiind prima lucrare de ficțiune interactivă fără puzzle-uri. Apariția sa a fost un punct de cotitură în istoria genului.
  • Până acum , de Andrew Plotkin . Este o piatră de hotar în integrarea poveștii, proiectării puzzle-urilor și așteptării jucătorului în ficțiunea interactivă.

Bibliografie

Alte proiecte

linkuri externe