Spiele :: Lineofsight.

Spiele :: LineOfSight ist ein Perl-Modul.
Jetzt downloaden

Spiele :: Lineofsight. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Ville Jungman
  • Website des Verlags:
  • http://search.cpan.org/~viljun/Games-Lineofsight-1.0/Lineofsight.pm

Spiele :: Lineofsight. Stichworte


Spiele :: Lineofsight. Beschreibung

Spiele :: LineOfSight ist ein Perl-Modul. Spiele :: Lineofssight ist ein Perl-Modul. Viele Spiele (Ultima, NetHack) verwenden zweidimensionale Karten, die aus den Quadraten derselben Größe in einem Gitter besteht. Die Sichtlinie bedeutet, dass einige der Quadrate die Gegenstände darstellen können, die die Vision des Spielers blockieren, die Quadrate hinter ihnen sehen. Mit diesem Modul können Sie dieses Verhalten Ihrer Spiele hinzufügen.Synopsis verwenden Spiele :: Lineofssight QW (Lineofssight); # Die Karte muss ein zweidimensionales Array sein. Jedes Mitglied (oder "Zelle") des Arrays repräsentiert ein #-Quadrat in der Karte. In diesem Beispiel enthält jede Zelle nur ein Zeichen, aber Sie können Saiten # in die Zellen auch auf die Zellen setzen - praktisch mit den grafischen Spielen. Meine @ map = (, # Dies ist die Karte , #. Und: repräsentiert den Boden , # x ist die Barriere für den Anblick , , ,); meine ($ width) = skalar (@ {@ map }); # Die Breite der Karte meine (Höhe) = Skalar (@map); # Die Höhe der Karte mein ($ barriere_str) = "x"; # Zeichenfolge, die die Barriere darstellt, meine ($ hidden_str) = "*"; # Zeichenfolge, die eine Zelle hinter einer Barriere darstellt, meine ($ mann_str) = "@"; # Zeichenfolge, die den Betrachter darstellt, mein ($ mann_x, $ man_y) = (7,3); # Aussichtspunktkoordinaten - Der Spieler ist hier # Erstellen der Karte mit Sichtlinie @ map = lineofssight (@ map, $ man_x, $ man_y, $ barriere_str, $ hidden_str); # Zeichnen Sie die Karte für (meine $ i = 0; $ i $ i <$ eignung; $ i ++) {für (mein $ j = 0; $ j <$ j <$ ja <$ j $ j ++) {drucken $ mann_x == $ j $ mann_y = = $ i? $ man_str: $ map ; } drucken "n"; } oder # Die ZeileAufsicht () ruft get_barriers () und analyze_map () jedes Mal, wenn er aufgerufen wird. Wenn sich der Betrachter # viel um die Karte bewegt, ist es viel schneller, in den Barrieren zu lesen und nur # Analyze_Map () jedes Mal, bevor Sie es zeichnen. Verwenden Sie Spiele :: Lineofsight QW (Get_Barriers analyze_map); # Die Karte muss ein zweidimensionales Array sein. Jedes Mitglied (oder "Zelle") des Arrays repräsentiert ein #-Quadrat in der Karte. In diesem Beispiel enthält jede Zelle nur ein Zeichen, aber Sie können Saiten # in die Zellen auch auf die Zellen setzen - praktisch mit den grafischen Spielen. Meine @ map = (, # Dies ist die Karte , #. Und: repräsentiert den Boden , # x ist die Barriere für den Anblick , , ,); meine ($ width) = skalar (@ {@ map }); # Die Breite der Karte meine (Höhe) = Skalar (@map); # Die Höhe der Karte mein ($ barriere_str) = "x"; # Zeichenfolge, die die Barriere darstellt, meine ($ hidden_str) = "*"; # Zeichenfolge, die eine Zelle hinter einer Barriere darstellt, meine ($ mann_str) = "@"; # Zeichenfolge, die den Betrachter darstellt, mein ($ mann_x, $ man_y) = (7,3); # Ansichtspunktkoordinaten - Der Player ist hier # get_barriers () gibt einen Hash mit den Informationen über Barrieren in der Karte zurück. In diesem Beispiel erklären wir den "x" -Character als Barriere. Sie können es auch als Zeichenfolge in den grafischen # Spielen erklären. Zum Beispiel "barriere.jpg". My Rrier = Get_Barriers (Width, $ Heights, @ map, $ barriere_str); # Analyze_map () Gibt ein Array zurück, das die Originalkarte enthält, die aus dem Sichtpunkt gesucht wurde. Die Zellen hinter den Barrieren werden durch gegebene Saiten ersetzt. Die Barrieren sollten mit der Subroutine # angerufen werden, die erste get_barriers () - Subroutine anruft, wie wir bereits getan haben. my @ map2 = analyze_map ($ width, $ höhe, @ map, rrier, $ man_x, $ man_y, $ hidden_str); #draw die Karte mit der LinieOfssight Print "Noriginal Map: n"; Zeichnen ($ Breite, $ hoch, $ man_x, $ man_y, @ map2, $ man_str); # Verschieben Sie den Viewer zwei Quadrate richtig $ mann_x + = 2; # Aktualisieren Sie die Karte my @ map2 = analyze_map ($ breite, $ höhe, @ map, rrier, $ man_x, $ man_y, $ hidden_str); #draw Die Karte wieder drucken "NIEVIEHER ist umgezogen: n"; Zeichnen ($ Breite, $ hoch, $ man_x, $ man_y, @ map2, $ man_str); Sub Draw {My ($ Width, $ Heights, $ MAN_X, $ MAN_Y, $ MAP, $ MAN_STR) = @ _; für (meine $ i = 0; $ i <$ höhe; $ i ++) {für (meine $ j = 0; $ j <$ j <$ width; $ J ++) {drucken $ mann_x == $ j $ man_y == $ i $ $ man_str: $$ Karte ; } drucken "n"; }} Anforderungen: · Perl Anforderungen: · Perl.


Spiele :: Lineofsight. Zugehörige Software