Dodanie funkcjonalności skryptów do aplikacji .NET




Mam małą grę napisany w języku C #. Wykorzystuje bazę danych jako back-end. Jest to [gra w karty handlowym](http://en.wikipedia.org/wiki/Collectible_card_game) , i chciałem realizować funkcję karty jako skrypt.


Chodzi mi o to, że zasadniczo mieć interfejs `ICard`, który A implements klasy karta ( `public class Card056 : ICard`) i który zawiera funkcje, które są wywoływane przez grę.


Teraz, aby sprawa utrzymaniu / modyfikowalne, chciałbym mieć klasę dla każdej karty jako kod źródłowy w bazie danych i zasadniczo skompilować go przy pierwszym użyciu. Więc kiedy muszę dodać / zmienić kartę, po prostu dodaj je do bazy danych i powiedz mojej aplikacji do odświeżenia, bez potrzeby wdrażania montażowej (zwłaszcza, że ​​będzie rozmawiać o 1 zespół za kartę, co oznacza setki zespołów) ,


Czy to jest możliwe? Zarejestruj klasę z pliku źródłowego, a następnie oznacz ją itp



```
ICard Cards[current] = new MyGame.CardLibrary.Card056();
Cards[current].OnEnterPlay(ref currentGameState);

```

Język C # ale dodatkowy bonus, jeśli to możliwe, aby napisać skrypt w dowolnym języku .NET.
[Oleg Shilo w C # rozwiązanie Script (The Code Project](http://www.codeproject.com/Articles/8656/C-Script-The-Missing-Puzzle-Piece) ) jest naprawdę wspaniałe wprowadzenie do zapewnienia zdolności skryptów w aplikacji.


Inne podejście byłoby rozważyć język, który jest zbudowany specjalnie do obsługi skryptów, takich jak [IronRuby](http://en.wikipedia.org/wiki/IronRuby) , [IronPython](http://en.wikipedia.org/wiki/IronPython) lub [Lua](http://en.wikipedia.org/wiki/Lua_%28programming_language%29) .


IronPython i IronRuby są zarówno dostępne już dziś.


Dla przewodnika do osadzania IronPython czytać
 [Jak osadzić obsługę skryptów IronPython w istniejącej aplikacji w 10 prostych krokach](http://blogs.msdn.com/b/jmstall/archive/2005/09/01/howto-embed-ironpython.aspx "Jak osadzić obsługę skryptów IronPython w istniejącej aplikacji w 10 krokach") .


Lua jest językiem skryptowym powszechnie stosowany w grach. Jest kompilator Lua NET, dostępny od CodePlex - [http://www.codeplex.com/Nua](http://www.codeplex.com/Nua "Nua jest Lua dla .net")


Że codebase jest wielki przeczytać, jeśli chcesz dowiedzieć się o budowie kompilator w .NET.


Zupełnie inny kąt jest próba [PowerShell](http://en.wikipedia.org/wiki/Windows_PowerShell) . Istnieją liczne przykłady osadzania PowerShell do aplikacji - oto dokładny projekt na temat: 
 [PowerShell Tunnel](http://code.msdn.microsoft.com/PowerShellTunnel/Wiki/View.aspx?title=PowerShellTunnel%20Reference "Tunel PowerShell")
<p>zazwyczaj powinieneś <em>nie</em> dodać plik <code>app.config</code> do projektu biblioteki klas; nie będzie używany bez bolesnego zginania i skręcania z twojej strony. projekt biblioteki wcale nie <em>boli</em> po prostu nic nie da.</p><p>zamiast tego konfigurujesz aplikację, która używa twojej biblioteki; więc wymagane informacje o konfiguracji tam trafią. każda aplikacja, która może korzystać z twojej biblioteki, prawdopodobnie będzie miała inne wymagania, więc to też ma sens logiczny.</p> **w dev c++: start>>uruchom i wpisz edit zamień tam znaki na takie jakie ciebie interesują następnie po skompilowaniu będziesz posiadał w konsoli znaki jakie cię interesują (ten sposób jest dla lamera)**   
  
oto mój kod na automatyczne zmiany znaków możesz go wykorzystać jeśli chcesz:  
  
#include <iostream>  
#include <fstream>  
#include <vector>  
#include <conio.h>  
  
char changewintodoschar( char & finput )  
{  
 switch( finput )  
 {  
 case 'ą': return( 'Ą' ); break;  
 case 'ć': return( '†' ); break;  
 case 'ę': return( '©' ); break;  
 case 'ł': return( '' ); break;  
 case 'ń': return( 'ä' ); break;  
 case 'ó': return( '˘' ); break;  
 case 'ś': return( '' ); break;  
 case 'ż': return( 'ľ' ); break;  
 case 'ź': return( '«' ); break;  
 case 'Ą': return( '¤' ); break;  
 case 'Ć': return( 'Ź' ); break;  
 case 'Ę': return( '¨' ); break;  
 case 'Ł': return( 'ť' ); break;  
 case 'Ń': return( 'ă' ); break;  
 case 'Ó': return( 'ŕ' ); break;  
 case 'Ś': return( '—' ); break;  
 case 'Ż': return( '˝' ); break;  
 case 'Ź': return( 'Ť' ); break;  
 default: return( finput ); break;  
 }  
}  
  
int main()  
{  
 std::fstream tplik;  
 std::string tfilename, twiersz;  
 std::cout << "podaj nazw© pliku: ";  
 getline( std::cin, tfilename );  
 tplik.open( tfilename.c\_str(), std::ios::in );  
 if( tplik.good() )  
 {  
 std::vector < std::string > trowlist;  
 while( getline( tplik, twiersz ) )  
 {  
 for( unsigned int i = 0; i < twiersz.length(); i++ ) twiersz[ i ] = changewintodoschar( twiersz[ i ] );  
   
 trowlist.push\_back( twiersz );  
 }  
 tplik.close();  
 tplik.clear();  
 tplik.open( tfilename.c\_str(), std::ios::out );  
 if( tplik.good() )  
 {  
 for( unsigned int i = 0; i < trowlist.size(); i++ ) tplik << trowlist[ i ] << std::endl;  
   
 tplik.close();  
 std::cout << "konwersja pliku zostaa ukoäczona!" << std::endl;  
 } else std::cout << "otworzenie pliku do zapisu nie powiodo si©!" << std::endl;  
   
 } else std::cout << "plik o podanej nazwie nie zosta znaleziony!" << std::endl;  
   
 getch();  
 return( 0 );  
} <p>w witrynach, w których pracowałem, wszelkie zmiany, które należy wprowadzić w instancjach produkcyjnych, muszą być skryptowane jako skrypty zmian, które będą działać w sql * plus; ponadto skrypty potrzebne do odtworzenia od podstaw wszystkich obiektów schematu muszą być aktualizowane. wszystkie te skrypty są sprawdzane pod kątem kontroli zmian i stamtąd migrowane.</p><p>możesz kontrolować zmiany ddl lub używać wyzwalaczy ddl, aby wykrywać zmiany, a nawet używać oprogramowania różnicowego do porównywania dwóch wystąpień, ale metody te są niedyskryminujące; często programista wprowadza i cofa wiele zmian w schemacie (np. małe zmiany testowe, tworzenie fałszywych tabel do testowania koncepcji itp.) przed ustaleniem, co dokładnie należy zmienić.</p> jaki masz program jak allplayer to prawym i dodaj napisy ale musisz miec program napi projekt w nowej aktualizacji :) klikamy prawym zbadaj element po czym klikamy rowniez prawym na podreslony na niebiesko link zaznaczamy Hide element po czym znowu prawym otworz grafike w nowej karcie i zapisujemy normalnie :) <p>sposób, w jaki zrobiłbym to samo, to:</p><pre><code>@configuration @enableautoconfiguration(exclude = {datasourceautoconfiguration.class, datasourcetransactionmanagerautoconfiguration.class, hibernatejpaautoconfiguration.class}) @profile ("client\_app\_profile\_name") public class clientappconfiguration { //it can be left blank } </code></pre><p>napisz podobny dla aplikacji serwera (bez wykluczeń). </p><p>ostatnim krokiem jest wyłączenie automatycznej konfiguracji z głównej klasy rozruchowej:</p><pre><code>@springbootapplication public class someapplication extends springbootservletinitializer { public static void main(string[] args) { springapplication.run(someapplication.class); } protected springapplicationbuilder configure(springapplicationbuilder application) { return application.sources(someapplication.class); } } </code></pre><p>zmień: <code>@springbootapplication</code> na:</p><pre><code>@configuration @componentscan </code></pre><p>to powinno załatwić sprawę. teraz zależności, które zostały wykluczone w przykładzie, mogą być niekompletne. były dla mnie wystarczające, ale nie jestem pewien, czy to wszystko całkowicie wyłączyć biblioteki związane z bazą danych. sprawdź poniższą listę, aby się upewnić:</p><p> <a href="http://docs.spring.io/spring-boot/docs/current-snapshot/reference/htmlsingle/#auto-configuration-classes">http://docs.spring.io/spring-boot/docs/current-snapshot/reference/htmlsingle/#auto-configuration-classes</a> </p><p>nadzieja, która pomaga</p> jeśli to komputer stacjonarny, to po prostu wcisnąć w odpowiedni slot przeznaczony do kart. musisz wiedzieć, jaki jest standard tych gniazd rozszerzeń na twojej płycie głównej (będzie napisany na niej, w instrukcji lub znajdziesz po wpisaniu modelu płyty w wyszukiwarkę). i z takim samym kupić kartę, żeby pasowała. poznać matematykę - szczególnie takie rzeczy jak geometria, 2d / 3d zależy jakie gry chcesz pisac.  
  
poczytaj książkę od 0 do gier kodera [[link]](http://zapytaj.onet.pl/html_server.php?id=fdfc8a7d53ff5f48ec25718dbfd56349)  
ona cię wiele nauczy i pozwoli wejść w pisanie własnych gier tak jak mówi kolega wyżej - sugerowałbym zaopatrzenie się we wtyczkę do tego.

wątpię, żeby na tym forum ktokolwiek był chętny do przerabiania skryptów. raczej sugerowałbym udanie się na jakieś forum poświęcone skript’owi. z wtyczek, które mogę polecić do sklepów to shopkeepers. nauczyć się scriptowania.