Ein wenig entwirren konnte ich bis jetzt das Ganze.... ok ein ganz klein wenig.
Ich hatte noch den alten Code wo stehen, so dass ich Klassen doppelt hatte, womit das Script versucht hat die Klasse Memory aus meinem alten Code zu starten.
Beeindruckender Weise hat das irgendwann funktioniert wodurch ich diesen Fehler erst realisiert habe o_o
Mittlerweile habe die Klasse auch unbenannt...

Nun nachdem ich diesen Fehler weg habe, hänge ich wieder.
Und zwar hänge ich am Methodenaufruf.

Beispiel:
Code:
A)
class Scene_Memory < Scene_Base
  def start
    super
    initialize_graphics
  end
end

B)
class Scene_Memory < Scene_Base
   def self.start
      super
      initialize_graphics
   end
end
Wenn ich nun in der Klasse Game_Memory, in der Methode initialize am Ende folgenden Befehl aufrufe "SceneManager.call(Scene_Memory.start)" wird ja aus der Klasse "Scene_Memory" die Methode "start" aufgerufen. Ja... und hier komme ich zu meinem Knackpunkt. Bei A) gilt die Methode als nicht initialisiert, bei B) kann ich kein super darauf anwenden, da nun start von Scene_Memory erbt. Dafür komme ich in die Methode rein, nützt mir nur nicht viel, da nun die Methode "get_cards" die in "initialize_graphics" aufgerufen wird, nicht initialisiert ist oder leer ist.

Ich habe in der Methode initialize schon mit verschiedensten Aufrufen versucht an die Methode start zu kommen. Unter anderem "SceneManager.call(Scene_Memory.start.new)" was auch geht... nur eben mit den selben Problemen. Auch ein einfacher Aufruf aller "start" oder "Scene_Memory.start" bringt mich in die selbe Lage.
Mein Versuch einfach "SceneManager.call(Scene_Memory)" aufzurufen ... lief darauf hinaus, dass er nicht in die Methode rein ging... habe auch nichts anderes erwartet.

Ich poste hier einfach noch mal Alles rein, großartige Änderungen zum Code von -KD- gibt es noch nicht, ich will erstmal das es so weit läuft. Klar... im Nachhinein andere Sachen einbauen ist nie die klügste Idee... aber wenn es nicht läuft ist es auch doof groß dran herumzuschrauben.

Bei dieser Variante des Codes handelt es sich um jene, wo er keine Daten in get_cards findet.

Code:
class Game_Memory
  # hier kommen alle Attribute rein die dein Spiel so hat
  @modus = 0
  @move = 50
  
  # filenames of the pictures of your cards
  attr_accessor :figure_names

  def initialize
    @figure_names = ["Spinne1.png", "Spinne2.png", "Spinne3.png", "Spinne4.png", 
    "Spinne5.png",
    "Spinne6.png", "Spinne7.png", "Spinne8.png", "Spinne9.png", "Spinne10.png", 
    "Spinne11.png",
    "Spinne12.png", "Spinne13.png", "Spinne14.png", "Spinne15.png", "Spinne16.png"]
    
    @positions = [
    0, 0, 
    136, 0, 
    272, 0, 
    408, 0,
    #
    0, 104, 
    136, 104, 
    272, 104, 
    408, 104,
    #
    0, 208, 
    136, 208, 
    272, 208, 
    408, 208,
    #
    0, 312, 
    136, 312, 
    272, 312, 
    408, 312
    ]
    # number of cards horizontal
    @max_number_of_cols = 4 
    # size of cards
    @card_width = 64
    @card_height = 64
    # distance between cards
    @margin = 12
    p @positions
    SceneManager.call(Scene_Memory.start.new)
    #Scene_Memory.start
    #SceneManager.call(Scene_Memory.start)
  end

  # returns x, y coordinates as well as the image name of
  # the card with the given index
  def get_card index
    [card_x(index), card_y(index), card_image(index)]
  end

  # return all cards
  def get_cards
    # create a new array with elements
    # for all indizes from 0 upto @positions.size
    (0...@positions.size).map do |index|
      # each element contains the result value of
      # get_card
      get_card index
      end
  end
  
  # x coordinate for a given card index
  def card_x index
    col_num = index % @max_number_of_cols
    col_num * (@card_width + @margin)
  end
  
  # y coordinate for a given card index
  def card_y index
    row_num = index / @max_number_of_cols
    row_num * (@card_height+@margin)
  end
  
  # filename of card image
  def card_image index
     @figure_names[@positions[index]]
  end
  
  # number of different figures/cards
  def number_of_pictures
    @figure_names.size
  end
   
  # add 2 cards for each figure into the field
  # shuffle the positions of all cards
  def shuffle_cards
    @positions.clear
    # this loop is invoked as often as the number
    # of different cards
    number_of_pictures.times do |picture_id|
      # for each invocation, two cards are added
      # into the array 
      @positions << picture_id << picture_id
    end
    # shuffle the array at the end
    @positions.shuffle!
  end
  
end

class Game_System
  # füge Memory als Attribut hinzu
  attr_accessor :memory
end

def initialize_graphics
  # for each card in the game
  @card_sprites = $game_system.memory.get_cards.map do |x, y, image|
    # create a new sprite
    sprite = Sprite.new
    # set its graphic and coordinates
    sprite.bitmap = Cache.picture(image)
    sprite.x, sprite.y = x, y
    # and "return" the sprite into the array
    sprite
  end
end

def update_graphics
  # update attributes of all sprites
  @card_sprites.each_with_index do |sprite, index|
    x, y, image = $game_system.memory.get_card(index)
    sprite.bitmap = Cache.picture(image)
    sprite.x, sprite.y = x,y
  end
end

def dispose_graphics
  @card_sprites.each do |sprite|
    sprite.dispose
  end
end

# Erbebt von Scene_Base
class Scene_Memory < Scene_Base
  #class << self 
#-------------------------------------------------------------------------------
# Überschreibt start von Scene_Base
#-------------------------------------------------------------------------------
  def self.start
    #super
    initialize_graphics
    update
  end
  
#-------------------------------------------------------------------------------
# überschreibt  terminate Scene_Base
#-------------------------------------------------------------------------------
  def terminate
    super
    dispose_graphics
  end
  
#-------------------------------------------------------------------------------
# überschreibt update Scene_Base
#-------------------------------------------------------------------------------
  def update
    super
    update_graphics
  end

#end
end
#end
Die Fehlermeldung lautet um genau zu sein:
Zitat Zitat
Script 'Game_Interpreter' line 1144: NoMethodError occurred.
undefined method `get_cards' for nil:NilClass
Ergo wurde wohl wieder etwas noch nicht aufgerufen, wodurch ich noch nicht an die Daten komme.
Der Methode zufolge sollte es sich hierbei ja um get_card und den index davon handeln.
Jedoch kann das so wie es da ist, sowieso noch nicht stimmen, immerhin kann ich kein "super" ausführen.
Wie merkt meine Klasse, dass die Methode da ist, ohne das ich self.start schreiben muss?
Das würde dann hoffentlich auch die Folgeprobleme beheben...