Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
also ich hab folgendes Problem.. ich programmiere grade ein Spiel.. Soll ein Alles Murmel Klone werden.. Kurze beschreibung für die die's nicht kennen:
Das Spielfeld ist 9x9 Felder groß. Auf jedem Feld kann eine Murmel die eine von 8 farben haben kann liegen. Wenn man ein Feld mit einer Murmel anklickt dann wird dieses Feld aktiv. Wenn man nun auf ein freies Feld klickt wird die Murmel da hingeschoben wenn ein freier Weg zum Zielfeld besteht (Ein freier weg besteht wenn die Murmel nur durch rücken nach Links/Rechts/Oben/Unten zum Zielfeld verschoben werden kann). Nach dem die Kugel verschoben wurde wird noch überprüft ob irgendwo 5 gleichfarbige kugeln vertikal/horizontal oder diagonal zusammen liegen. Wenn ja werden sie vom Spielfeld genommen. Danach werden 1-3 neue Kugeln aufs Feld gelegt.
Es funktioniert alles ganz wunderbar bist auf 2 sachen:
- nachsehen ob ein Weg frei ist: Ich würde mal sagen sowas geht mit ner Breitensuche.. aber da ich das bei jedem Zug machen muss dauert das dann doch sicher ewig oder? gibts da nix besseres?
- nachsehen ob 5 Kugeln nebeneinander liegen: Also hier weiß ich überhaupt nicht weiter.. Ich könnte natürlich für jedes Feld und jede Richtung nachsehen ob das zutrifft.. aber das wären ja dann auch ca 1900 Abfragen nach jedem Zug.. gibts da nicht auch was besseres?
Vielleicht sollte ich auch ne bessere Datenstruktur verwenden.. ich hab alle Felder in ein Array gepackt.. Obswohl ich das ganz geschickt für andere Sachen finde
zum ersten Problem:
Ich denke schon das man das mit Breitensuche machen kann. So viele Felder sinds ja nicht...
zum zweiten Problem:
Es bewegt sich (wenn ich dich richtig verstehe) ja immer nur eine Kugel, also musst du auch nur dort prüfen.
Bei 8 Nachbarfeldern sind das 4 Geraden -> kein Problem
He daran daß sich nur eine Kugel bewegt hab ich garnicht gedacht.. Aber es werden ja dann wieder 1-3 Kugeln aufs Feld gelegt.. hmm dann müsste ich die halt auch noch überprüfen..
1-3 ist ja auch nicht viel, die kannst du ja ganz lässig nacheinander überprüfen, für den Rechner ist das kein Problem (sogar mein Handy kann Schach spielen :wink: )