LPC (Lars Pensjö C Language) è un linguaggio di programmazione derivato dal C, utilizzato principalmente per sviluppare MUD (Multi-User Dungeons) e altri ambienti di realtà virtuale testuale. È un linguaggio orientato agli oggetti, interpretato e fortemente tipizzato.
Caratteristiche Principali:
Orientamento agli oggetti: LPC supporta i concetti di oggetti, classi, ereditarietà e polimorfismo. Gli ambienti MUD sono costruiti da oggetti che interagiscono tra loro.
Interpretato: Il codice LPC viene eseguito da un interprete, il che lo rende più facile da sviluppare e testare rispetto ai linguaggi compilati. Questo permette modifiche e test in tempo reale senza la necessità di ricompilare.
Fortemente tipizzato: LPC richiede che le variabili abbiano un tipo definito, aiutando a prevenire errori durante l'esecuzione.
Gestione degli oggetti: Il linguaggio include funzioni e meccanismi per gestire il ciclo di vita degli oggetti nel gioco, come la creazione, distruzione e salvataggio.
Efunzioni: LPC interagisce con il server MUD attraverso "efunzioni" (external functions). Queste funzioni forniscono accesso a funzionalità di basso livello come gestione della rete, I/O di file, interazione con il sistema operativo e gestione del tempo.
Simul_efun: Le simul_efun sono funzioni scritte in LPC che simulano il comportamento delle efunzioni. Questo permette una maggiore portabilità del codice LPC tra diversi server MUD.
Driver: Il driver è il componente principale del server MUD che interpreta ed esegue il codice LPC. Diversi driver (ad esempio, MudOS, LPMud, DGD) esistono con implementazioni leggermente diverse del linguaggio.
Utilizzo:
LPC è utilizzato principalmente per definire:
Esempio di codice LPC (semplificato):
inherit "/std/object";
void create() {
::create();
set_id(({"spada", "spada di legno"}));
set_name("spada");
set_short("una spada di legno");
set_long("Una spada di legno, dall'aspetto piuttosto malandato.");
set_weight(1);
set_value(10);
}
int query_damage() {
return 5;
}
Questo codice definisce un oggetto "spada di legno" con determinate proprietà (id, nome, descrizione, peso, valore) e un metodo per calcolare il danno inflitto.