• Anmelden

1

Freitag, 12. Mai 2006, 13:11

CGT - Caesars Graphics Toolkit. V1


von Caesar
Die Grafikverarbeitung des Makers bietet doch nicht wirklich viele und gute Methoden, Grafiken dynamisch zu erzeugen, zu verändern, allgemein zu verarbeiten. Daher habe ich das CGT geschrieben, das jede Menge Grafikverarbeitung bietet.
Spoiler: Das neue RGSS Preisrätsel
Wie lassen sich die Werte zweier Integervariablen vertauschen? Machen Sie mit und gewinnen Sie Ruhm und Ehre! ?"Caesar"? Die kürzeste Lösung gewinnt. Gibt es mehrere richtige Einsendungen, wird ein zufälliger Gewinner aus diesen gezogen.
zum Lesen den Text mit der Maus markieren
Spoiler: Auflösung der letzten Runde
Die Aufgabe der letzten Runde lautete:

Zitat

Schreiben Sie einen Parser für die ASCII-Form des Dateiformats PBM (Portable Bitmap). Die Methode soll als Parameter einen Dateinamen erhalten und eine Bitmap zurückgeben. 0 ist weiß, 1 ist schwarz. Eine Beispieldatei, die den Buchstaben 'A' darstellti:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
P1
9 9
000010000
000010000
000101000
000101000
001000100
001111100
001000100
010000010
111000111
Es hat keiner teilgenommen, daher gibt es keinen Gewinner ^^ Eine mögliche Lösung wäre gewesen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def parse_pbm(filename)
  f = File.open(filename)
  return nil unless f.readline.chomp == "P1"
  width, height = f.readline.split(' ').collect {|i| i.to_i}
  bitmap = Bitmap.new(width, height)
  c0 = Color.new(255, 255, 255)
  c1 = Color.new(0, 0, 0)
  for iy in 0...height
    f.readline.chomp.split('').each_with_index do |v, k|
      bitmap.set_pixel(k, iy, v == '0' ? c0 : c1)
    end
  end
  return bitmap
end
zum Lesen den Text mit der Maus markieren
Spoiler: Schon gewusst?
...wie man zum Testen schnell einzelne Scripts "ausbaut", ohne das Script aus dem Scripeditor zu löschen? Ganz einfach: Man fügt im Scripteditor ganz oben im Script die folgende Zeile ein:

Quellcode

1
if false
und ganz unten als letzte Zeile:

Quellcode

1
end
Das hat den gleichen Effekt, wie wenn man das ganze Script aus dem Scripteditor gelöscht hätte.
zum Lesen den Text mit der Maus markieren

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Monsta« (13. Juni 2007, 15:17)


2

Freitag, 12. Mai 2006, 13:29

cooles script!
hattest bestimt ein bisschen arbeit damit.

3

Freitag, 12. Mai 2006, 17:52

Danke für das Super Script, ist echt super.
Verbesserungsvorlschläge : Keine.
Ist Perfekt so.

[blink]

Suche einen Grafiker für mein Projekt "Delerium"
Wer Interesse hat, bitte per PN melden!
[/blink]




Weitere Infos findet ihr HIER


4

Freitag, 12. Mai 2006, 18:19

Naja..einen hätt ich... Könnte man bei dem rechteck zeichnen nicht noch so machen, dass man die normalen Positionskoordinaten benutzen kann....

Weil ich hab ein mausskript, bei dem die Mauskoordinaten statt in Pixel, in den Feldrasterkoordinaten ausgegeben werden.

Vorschlag:
Wenn die X-Koordinate = 3 iss und Y-Koordinate = 2, dass es dann bei pixel X-65 und Y-33 anfängt... Also in der linken oberen Ecke des Feldes...



Ach noch was... Wie kann ich die einzelnen Sachen aufrufen??? wenn ich z.B.:

Zitat

fill_rect_horizontal_gradient($game_variables[51], $game_variables[52], $game_variables[4876], 3, Color.red(128), Color.green(128))

aufrufe, dann kommt folgende Fehlermeldung:

Zitat


NoMethodError occurred while running script.

undefined method ´fill_rect_horizontal_gradient'for # <Interpreter:0x131dec8>


Was hab ich falsch gemacht???
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

5

Freitag, 12. Mai 2006, 22:30

Eine Methode zum Umrechnen von Tile-Koordinaten nach Pixelkoordinaten wäre vielleicht hilfreich. Ich sammle erst mal Vorschläge und mach dann vllt eine Version 2 des CGT.

fill_rect_horizontal_gradient ist eine Methode der Klasse Bitmap, somit kannst du sie nur auf Bitmap-Objekte anwenden. Die meisten Methoden wirst du als vermutlich Nicht-Scripter nicht sinnvoll verwenden können. Die ganzen Methoden sind eher als Grundlage für neue Scripts gedacht.
Falls du die Funktionen trotzdem mal ausprobieren willst, kannst du im einem Call-Script mit folgendem Code eine Bitmap erzeugen und sie für ein paar Sekunden anzeigen lassen:

Quellcode

1
2
3
sprite = Sprite.new
sprite.bitmap = Bitmap.new(600, 400) #Höhe, Breite der Bitmap
#sprite.bitmap.zeichne_irgendwas
Spoiler: Das neue RGSS Preisrätsel
Wie lassen sich die Werte zweier Integervariablen vertauschen? Machen Sie mit und gewinnen Sie Ruhm und Ehre! ?"Caesar"? Die kürzeste Lösung gewinnt. Gibt es mehrere richtige Einsendungen, wird ein zufälliger Gewinner aus diesen gezogen.
zum Lesen den Text mit der Maus markieren
Spoiler: Auflösung der letzten Runde
Die Aufgabe der letzten Runde lautete:

Zitat

Schreiben Sie einen Parser für die ASCII-Form des Dateiformats PBM (Portable Bitmap). Die Methode soll als Parameter einen Dateinamen erhalten und eine Bitmap zurückgeben. 0 ist weiß, 1 ist schwarz. Eine Beispieldatei, die den Buchstaben 'A' darstellti:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
P1
9 9
000010000
000010000
000101000
000101000
001000100
001111100
001000100
010000010
111000111
Es hat keiner teilgenommen, daher gibt es keinen Gewinner ^^ Eine mögliche Lösung wäre gewesen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def parse_pbm(filename)
  f = File.open(filename)
  return nil unless f.readline.chomp == "P1"
  width, height = f.readline.split(' ').collect {|i| i.to_i}
  bitmap = Bitmap.new(width, height)
  c0 = Color.new(255, 255, 255)
  c1 = Color.new(0, 0, 0)
  for iy in 0...height
    f.readline.chomp.split('').each_with_index do |v, k|
      bitmap.set_pixel(k, iy, v == '0' ? c0 : c1)
    end
  end
  return bitmap
end
zum Lesen den Text mit der Maus markieren
Spoiler: Schon gewusst?
...wie man zum Testen schnell einzelne Scripts "ausbaut", ohne das Script aus dem Scripeditor zu löschen? Ganz einfach: Man fügt im Scripteditor ganz oben im Script die folgende Zeile ein:

Quellcode

1
if false
und ganz unten als letzte Zeile:

Quellcode

1
end
Das hat den gleichen Effekt, wie wenn man das ganze Script aus dem Scripteditor gelöscht hätte.
zum Lesen den Text mit der Maus markieren

6

Samstag, 13. Mai 2006, 22:23

Cooles Skript! Teilweise echt genial (z.B. das Relief).

Doch wie sieht es mit einem Demoprojekt aus???

7

Samstag, 13. Mai 2006, 22:27

Ich bin kein RGSS-ler, aber das ganze scheint mir recht interessant zu sein. Ein paar der möglichkeiten sind doch wohl brauchbar :3
Muss das mal meinem Teamprogger Flo zeigen...

8

Samstag, 13. Mai 2006, 22:38

Eigentlich lässt sich das CGT schlecht demonstrieren, da es keinen bestimmten Anwendungszweck erfüllt, sondern eher Funktionen bereitstellt, die erst noch in Scripts eingebaut werden müssen. Ich arbeite trotzdem an einem Demoprojekt, um wenigstens ein paar Anwendungsbeispiele zu zeigen. Ich denke, Animationen lassen sich gut machen, ich denke da beispielsweise an Blinkeffekte mit dem Negativbild, "Auseinanderfliegen" mit der Shake-Methode oder vergiftete Battler mit einem starken Grünstich, oder allgemein bessere dynamisch erzeugte Grafiken wie Balken mit einem Farbübergang (draw_rect_horizontal_gradient) etc.
Da ist jedenfalls eine Menge machbar und einige Funktionen sind auch mehr für den Scripter als für den Spieler von Nutzen, z.B. die Farbkonstanten.
Die Demo kommt wahrscheinlich in den nächsten Tagen.
Spoiler: Das neue RGSS Preisrätsel
Wie lassen sich die Werte zweier Integervariablen vertauschen? Machen Sie mit und gewinnen Sie Ruhm und Ehre! ?"Caesar"? Die kürzeste Lösung gewinnt. Gibt es mehrere richtige Einsendungen, wird ein zufälliger Gewinner aus diesen gezogen.
zum Lesen den Text mit der Maus markieren
Spoiler: Auflösung der letzten Runde
Die Aufgabe der letzten Runde lautete:

Zitat

Schreiben Sie einen Parser für die ASCII-Form des Dateiformats PBM (Portable Bitmap). Die Methode soll als Parameter einen Dateinamen erhalten und eine Bitmap zurückgeben. 0 ist weiß, 1 ist schwarz. Eine Beispieldatei, die den Buchstaben 'A' darstellti:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
P1
9 9
000010000
000010000
000101000
000101000
001000100
001111100
001000100
010000010
111000111
Es hat keiner teilgenommen, daher gibt es keinen Gewinner ^^ Eine mögliche Lösung wäre gewesen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def parse_pbm(filename)
  f = File.open(filename)
  return nil unless f.readline.chomp == "P1"
  width, height = f.readline.split(' ').collect {|i| i.to_i}
  bitmap = Bitmap.new(width, height)
  c0 = Color.new(255, 255, 255)
  c1 = Color.new(0, 0, 0)
  for iy in 0...height
    f.readline.chomp.split('').each_with_index do |v, k|
      bitmap.set_pixel(k, iy, v == '0' ? c0 : c1)
    end
  end
  return bitmap
end
zum Lesen den Text mit der Maus markieren
Spoiler: Schon gewusst?
...wie man zum Testen schnell einzelne Scripts "ausbaut", ohne das Script aus dem Scripeditor zu löschen? Ganz einfach: Man fügt im Scripteditor ganz oben im Script die folgende Zeile ein:

Quellcode

1
if false
und ganz unten als letzte Zeile:

Quellcode

1
end
Das hat den gleichen Effekt, wie wenn man das ganze Script aus dem Scripteditor gelöscht hätte.
zum Lesen den Text mit der Maus markieren

9

Sonntag, 14. Mai 2006, 21:42

Hey Caesar, du scheinst dich mit der Grafikdarstellung beim Maker ja ganz schön gut auszukennen. Würdest du es auch hinbekommen den "Ripple" Effekt vom 2k für den XP zu programmieren. Ich habe zumindest noch kein Skript gesehen was das kann. Wenn es nicht geht, oder es zu lange dauert zum proggen ist es auch nicht so schlimm, wäre halt noch ein cooles Feature.

10

Montag, 15. Mai 2006, 16:16

Ich wollt einen Text auf den Bildschirm schreiben mit

Zitat

draw_shadow_text( 200, 200, 200, 200, "beispiel", 0)

und plötzlich (im Spiel) kommt die Fehlermeldung (bei der ausführung von oberem Skript):

Zitat

??????NoMethodError??????
undefind methode 'draw_shadow_text' for #<Interpreter:0x45f8460>


[SMILIE]Was mache ich falsch?[/SMILIE]
Bild

11

Dienstag, 16. Mai 2006, 22:46

Was mache ich falsch?

Du liest nie nach >.>

Caeser hat Funktionen für bestehende Klassen hinzugefügt, dazu muss man aber erstmal die Klasse Bitmap aufrufen, denn draw_shadow_text ist eine Funktion von ihr, aber du rufst gleich die Funktionauf und der Maker findet in der Klasse Interpreter nicht die Funktion und beendet sich. Wenn du die Funktion nutzen wilslt kannst du es ja so tun:

Quellcode

1
2
3
@sprite = Sprite.new
@sprite.bitmap = Bitmap.new(640, 480) #Höhe, Breite der Bitmap
@sprite.bitmap.draw_shadow_text( 200, 200, 200, 200, "beispiel", 0)


Löschen:

Quellcode

1
2
@sprite.bitmap.dispose
@sprite.dispose


Aber wie Caeser schon schreib, es sind alles noch Grundlagen.

:respekt: Du hast echt praktische Funktionen bereitgestellt (Farbübergang und Kreiszeichnen), nur frage ich mich, ob man bestimmte Funktionen auch kombinieren kann z.B. einen Farbübergang im Kreis oder Durchlaufen alles Farben im Linienzeichen.

Mal guggen, wie man dies verwenden kann :D

Ave Abt
:information: YAams
:rainbow: Random Signatur
Bild





Weitere Informationen | Download
Mit Support für RGSS Project 1!
Bild

12

Mittwoch, 17. Mai 2006, 14:30

Ich weis ja jetzt, dass draw_shadow_text in der Klsse Bitmap is' aber ich finde es sollte eine function geben Text direkt auf den Bildschirm zu malen.
Danke im foraus.
Bild

13

Mittwoch, 17. Mai 2006, 15:16

[color="green"]Ich muss einfach ma sagen, dass das Script wirklich nicht
Schlecht ist. ^^
Die ganzen Funktionen die du dadurch bereit stellst, sind
wirklich interessant. =)
Mehr kann ich nicht zu sagen. xD

bye Yatzumo

PS: Mein Kürzester Beitrag im Forum glaub ich. ._.
Abgesehen vom Chat Forum damals.[/color]

14

Freitag, 19. Mai 2006, 15:07

Ich bin die Funktionen jetzt nochmal durchgegangen und ich finde sie als besser! Obwohl ich mich ein bischen ärgere das ich das Skript nicht schon vorher hatte, denn in meinem Aktuellen Spiel gibt es ein paar Balken im Hud und dafür wäre die Rechteck Funktion einfach nur Perfekt gewesen. Stattdessen musste ich 4 mal den "fill_rect" Befehl benutzen (für den Rahmen). Jetzt weiss ich nicht ob ich das noch im Nachhinein ändere, obwohl mir der "3D" Effekt ganz gut gefällt. Auch der "fill_rect_horizontal_gradient" Befehl wäre für eine HP Anzeige wohl ganz gut geeignet.

Was mir nicht so gut gefällt sind die Ladezeiten bei den Grafikeffekten, aber ich denke die sind dir auch schon aufgefallen^^ (Hast ja schon beim "Blur" geschrieben das es noch nicht perfekt ist)
Aber ansonsten wirklich spitze. Großes Lob von mir :-)

15

Sonntag, 21. Mai 2006, 15:39

Erst mal danke für die ganzen Rückmeldungen!

@Monsta: Den Ripple Effekt werde ich wohl nicht hinkriegen und selbst wenn, wären die Rechenzeiten viel zu lang.
Die teilweise langen Rechenzeiten bei den aufwändigeren Bildverarbeitungen (blur, pixelize, emboss) lassen sich kaum vermeiden, aber sie sind doch eher eine kleine Spielerei, die wirklich nützlichen Methoden sind die zum Zeichnen von Linien, Kreisen, Rechtecken etc.

Ich weiß nicht, ob das noch was wird mit der Demo. Scripts zu machen, die auf dem CGT basieren, ist mir irgendwie zu (zeit-)aufwändig für eine Demo.
Aber ich werde das CGT auf jeden Fall in einigen meiner zukünftigen Scripts verwenden.

mfg
Caesar
Spoiler: Das neue RGSS Preisrätsel
Wie lassen sich die Werte zweier Integervariablen vertauschen? Machen Sie mit und gewinnen Sie Ruhm und Ehre! ?"Caesar"? Die kürzeste Lösung gewinnt. Gibt es mehrere richtige Einsendungen, wird ein zufälliger Gewinner aus diesen gezogen.
zum Lesen den Text mit der Maus markieren
Spoiler: Auflösung der letzten Runde
Die Aufgabe der letzten Runde lautete:

Zitat

Schreiben Sie einen Parser für die ASCII-Form des Dateiformats PBM (Portable Bitmap). Die Methode soll als Parameter einen Dateinamen erhalten und eine Bitmap zurückgeben. 0 ist weiß, 1 ist schwarz. Eine Beispieldatei, die den Buchstaben 'A' darstellti:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
P1
9 9
000010000
000010000
000101000
000101000
001000100
001111100
001000100
010000010
111000111
Es hat keiner teilgenommen, daher gibt es keinen Gewinner ^^ Eine mögliche Lösung wäre gewesen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def parse_pbm(filename)
  f = File.open(filename)
  return nil unless f.readline.chomp == "P1"
  width, height = f.readline.split(' ').collect {|i| i.to_i}
  bitmap = Bitmap.new(width, height)
  c0 = Color.new(255, 255, 255)
  c1 = Color.new(0, 0, 0)
  for iy in 0...height
    f.readline.chomp.split('').each_with_index do |v, k|
      bitmap.set_pixel(k, iy, v == '0' ? c0 : c1)
    end
  end
  return bitmap
end
zum Lesen den Text mit der Maus markieren
Spoiler: Schon gewusst?
...wie man zum Testen schnell einzelne Scripts "ausbaut", ohne das Script aus dem Scripeditor zu löschen? Ganz einfach: Man fügt im Scripteditor ganz oben im Script die folgende Zeile ein:

Quellcode

1
if false
und ganz unten als letzte Zeile:

Quellcode

1
end
Das hat den gleichen Effekt, wie wenn man das ganze Script aus dem Scripteditor gelöscht hätte.
zum Lesen den Text mit der Maus markieren

16

Samstag, 27. Mai 2006, 00:57

Ich hab einen Bug gefunden:

Der "Emboss" Befehl also der Relief Effekt stürzt bei zu Großen Bildern ab. Hab's jetzt nicht genau durchgetestet aber Bilder mir 640x480 will er einfach nicht. Dann kommt nach einer kurzen Zeit einfach eine Fehlermeldung wo nur Fragezeichen stehen. Beim Blur Effekt kommt das selbe!

Wäre jetzt nicht so schlimm, wenn du es nicht gefixt bekommst, wollte dir aber dennoch bescheid sagen.

~Monsta~

17

Samstag, 27. Mai 2006, 11:49

huhu..

wirklich ein sehr schönes script.. werde es mit sicherheit gebrauchen..
kannst dir ja mal das hier anschauen und evtl. weitere Anregungen sammeln (wenn du das nicht schon getan hast, spontan ist mir noch keine Funktion eingefallen, die in deinem Script noch fehlt.. ^^)

btw.. bei größeren Bildern kann es allerdings gar nicht funktionieren.. soweit ich das erkennen kann, ändert das Script jeden Pixel einzeln, was ab einer bestimmen Größe einfach zu lange dauert (deshalb ists bei Monsta auch abgestürzt.. nach 10s hat der Maker kein Bock mehr.. mit einem Graphics.update zwischendrin könnte man zwar den Absturz verhindern, aber wer will schon >10s Wartezeiten im Spiel haben?^^)
Da diese Methode recht zeitaufwändig ist, könnte ich mir vorstellen, dass man sie nicht so ohne weiteres in Animationen einbauen kann.. ruckelt vllt ein wenig..
Eine Möglichkeit wäre es allerdings, diese veränderten Bitmaps bereits zu Spielbeginn zu erstellen, und temporär zu speichern.. so wären die Ladezeiten nur am Anfang ein Mal.. (Nachteil: sobald das Spiel beendet wird, sind sie wieder weg, Bitmaps können nicht gespeichert werden..)
Dies vllt als Anregung für Leute, die das Script auch für größere Bilder verwenden wollen.. im Script selber kann man daran nicht viel ändern, da man abgesehen von den Pixeln keinen großen Einfluss auf die Bitmaps nehmen kann..

Ich suche selber schon lange nach ner Möglichkeit, den Alphakanal zweiter Bitmaps ohne diese Pixelmethode zu wechseln.. spiele grad ein wenig mit API rum.. ;)

-f0tz!
ehem. Leif

[Download] Nachtzeit Prolog (Entwicklung eingestellt)

18

Sonntag, 4. Juni 2006, 23:50

Ja, die Performance-Probleme sind wahrscheinlich unvermeidlich. Wenn möglich, habe Look-up-Tables (LUT) verwendet, das hat die Performance einiger Methoden sehr verbessert, aber das geht eben nicht immer. Wenn du Möglichkeiten siehst, irgendwo ein paar Frames Performance-Gewinn rauszuholen, sag Bescheid.

Das mit dem Cachen hab ich mir auch schon überlegt, allerdings dauert das dann am Anfang des Spieles so lange... Ich hab bei dem Versuch, eine einfache Animation abzuspielen, erst eine Methode aufgerufen, die die Einzelbilder der Animation als Bitmap-Array zurückgab, während der Berechnungen, die in einem parallelen Thread abliefen, den Spieler mit ein paar Message-Boxen bei Laune gehalten, um dann eine flüssige Animation abspielen zu können - es hat ganz gut funktioniert.
Falls es dich interessiert, ich habe folgende Methode zum Abspielen verwendet:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Animation
  def Animation.play(frames, x, y, width, height, sleep=0.015)
    thread = Thread.new {
      sprite = Sprite.new
      sprite.x = x
      sprite.y = y
      sprite.bitmap = Bitmap.new(width, height)
      for frame in frames
        sprite.bitmap.clear
        sprite.bitmap.blt(0, 0, frame, Rect.new(0, 0, width, height))
        sleep(0.015)
      end
      sprite.dispose
    }
  end
end


Und danke für den Link, da kann ich mir sicher ein paar Anregungen holen ;)
Spoiler: Das neue RGSS Preisrätsel
Wie lassen sich die Werte zweier Integervariablen vertauschen? Machen Sie mit und gewinnen Sie Ruhm und Ehre! ?"Caesar"? Die kürzeste Lösung gewinnt. Gibt es mehrere richtige Einsendungen, wird ein zufälliger Gewinner aus diesen gezogen.
zum Lesen den Text mit der Maus markieren
Spoiler: Auflösung der letzten Runde
Die Aufgabe der letzten Runde lautete:

Zitat

Schreiben Sie einen Parser für die ASCII-Form des Dateiformats PBM (Portable Bitmap). Die Methode soll als Parameter einen Dateinamen erhalten und eine Bitmap zurückgeben. 0 ist weiß, 1 ist schwarz. Eine Beispieldatei, die den Buchstaben 'A' darstellti:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
P1
9 9
000010000
000010000
000101000
000101000
001000100
001111100
001000100
010000010
111000111
Es hat keiner teilgenommen, daher gibt es keinen Gewinner ^^ Eine mögliche Lösung wäre gewesen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def parse_pbm(filename)
  f = File.open(filename)
  return nil unless f.readline.chomp == "P1"
  width, height = f.readline.split(' ').collect {|i| i.to_i}
  bitmap = Bitmap.new(width, height)
  c0 = Color.new(255, 255, 255)
  c1 = Color.new(0, 0, 0)
  for iy in 0...height
    f.readline.chomp.split('').each_with_index do |v, k|
      bitmap.set_pixel(k, iy, v == '0' ? c0 : c1)
    end
  end
  return bitmap
end
zum Lesen den Text mit der Maus markieren
Spoiler: Schon gewusst?
...wie man zum Testen schnell einzelne Scripts "ausbaut", ohne das Script aus dem Scripeditor zu löschen? Ganz einfach: Man fügt im Scripteditor ganz oben im Script die folgende Zeile ein:

Quellcode

1
if false
und ganz unten als letzte Zeile:

Quellcode

1
end
Das hat den gleichen Effekt, wie wenn man das ganze Script aus dem Scripteditor gelöscht hätte.
zum Lesen den Text mit der Maus markieren

19

Donnerstag, 15. Juni 2006, 11:18

Ich will ja hier nicht rummeckern, aber im deutschen gibt es kein "Caesar's" :p

Zitat von »"Fallstricke auf der Homepage"«

Über 100.000 deutsche Webseiten sind falsch betitelt. Immer wieder heißt es "Tanja's Homepage" oder "Holger's Webseite" und noch bei miehr Anbietern gibt's "Info's". Eine Kleinigkeit ie störend wird.
Weder beim Genetiv noch bein Pluralbenutz man im Deutschen ein Apostroph-S. Lediglich als Auslassungszeichen nach dem Namen, wie bei "Lars' Homepage" ist es erlaubt. Setzen sie auch keine Abkürzungen in den Plural, wemm der ausgeschriebene Ausruck sowieso in der Mehrzahl steht.


So aber weswegen ich den Theard schreibe, gibt es eine !einfache! Möglichkeit errechnete Grafiken irgendwo zu speichern und beim nächsten Aufruf aus dem Cache zu laden? (Habe zwar eine gefunden, ist aber ein bissel kompliziert)

und gibt es einen Alghorthymus (schreibt man das so?) Bitmaps zu drehen? (nicht Sprites, das geht ja schon), das Hauptproblem ist nämlich das die Tilemap Class nur Bitmaps akzeptiert :/

Danke fürs Lesen Abt
:information: YAams
:rainbow: Random Signatur
Bild





Weitere Informationen | Download
Mit Support für RGSS Project 1!
Bild

20

Donnerstag, 15. Juni 2006, 11:49

einen Algorythmus zum drehen?

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Bitmap
  def drehen(grad = 180)
    if grad == 180
      new_bit  = Bitmap.new(self.width,self.height)
      for i in 0..self.width
        for j in 0..self.height
          new_bit.set_pixel(self.width-i,self.height-j,self.get_pixel(i,j))
        end
      end
      return new_bit
    elsif grad == 90
      new_bit  = Bitmap.new(self.height,self.width)
      for i in 0..self.width
        for j in 0..self.height
          new_bit.set_pixel(self.height-j,i,self.get_pixel(i,j))
        end
      end
      return new_bit
    elsif grad == -90
      new_bit  = Bitmap.new(self.height,self.width)
      for i in 0..self.width
        for j in 0..self.height
          new_bit.set_pixel(j,self.width-i,self.get_pixel(i,j))
        end
      end
      return new_bit
    end
  end
end

sollte ja wohl nicht so schwer sein.. ;)
(auch wenns nur Pixelweise ist ^^)
bitmap.drehen(grad) gibt das (die?) gedrehte bitmap zurück (180°,90° und -90° möglich)
kann bei bedarf ja noch hier in das projekt eingebunden werden.. ^^

kannst du die bitmaps nicht einfach in einer variable speichern? (zB könntest du n Array zu Beginn erstellen oder sowas..)
oder willst du sie so speichern, dass sie nach Spielneustart auch noch vorhanden sind? (dann ginge o.g. nicht!) -> wenn du dafür schon ne möglichkeit gefunden hast (egal wie kompliziert), wärs nett, wenn du die mal posten könntest.. ;)

btw.. "Caesar's tongue" oder "Tanja's Homepage" find ich gar net falsch.. homepage und tongue sind beides englische Wörter, also sollte man auch den Namen nach der englischen und nicht nach der deutschen Grammatik behandeln.. (dann würds stimmen :P)

-f0tz!
ehem. Leif

[Download] Nachtzeit Prolog (Entwicklung eingestellt)

Social Bookmarks