Sto progettando un linguaggio di programmazione per un gioco, da utilizzare come modo principale di interagire con il gioco, anziché utilizzare altri metodi di controllo, come i tasti freccia o il mouse. Il mio piano è di avere gli oggetti del gioco di controllo utente attraverso gli oggetti nella lingua.
if unit1.health > 20 {
unit1.attack(Enemies.enemy1)
}
Dove unit1
e enemy1
sono gli oggetti. Ciò può essere fatto in modo relativamente semplice, tuttavia vorrei anche che il linguaggio con cui l'utente interagisce sia un linguaggio reale e che gli oggetti del gioco come unit1
si comportino in modo simile agli oggetti creati dall'utente.
Non ho intenzione di aggiungere classi o qualcosa di simile. Tutti gli attributi di un oggetto sono pubblici per impostazione predefinita e di sola lettura e i metodi sono solo attributi che sono oggetti funzione. Non è inoltre possibile aggiungere attributi ad un oggetto. L'unica volta in cui l'utente può accedere all'interna di un oggetto è al momento della creazione, in quanto è necessario per impedire all'utente di modificare gli oggetti del gioco.
C'è un modo per aggiungere una funzionalità al linguaggio che permetta all'utente di fare qualcosa come l'ereditarietà o qualcosa che permetta di scrivere facilmente un codice complesso, pur mantenendo il linguaggio "puro" e semplice?
In questo momento, il massimo che puoi fare è qualcosa di simile a:
fake_class = function(x, y) {
{
self.x = x
self.y = y
z = "hi" // private
self.change_x_and_print_z = function(new) {
self.x = new
print(z)
}
}
}
new_obj = fake_class(4, 5)
Ma posso pensare ad un modo per estendere l'oggetto, poiché è di sola lettura e solo mutabile da dentro di sé.