Kettenreaktion

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

WEBLink

Betreff: Kettenreaktion

BeitragMi, Nov 11, 2009 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

langsam erläre ich mich selbst für zu blöd.

Versuche schon seit Stunden ein art Kettenreaktion hinzubekommen.
Und zwar hat man ein Feld in dem viele verschiedenfarbige Juwelen sind. klickt man auf eine Farbe so werden alle angrenzenden mit der gleichen Farbe gelöscht, natürlich sollen die angenzenden die an den anderen gleichfarbigen angrenzen auch gelöscht werden.

entweder denke ich zu komplex oder der schlüssel ist einfach noch net gefallen.

deswegen bitte ich euch jetzt um hilfe. Was ist die einfachste Möglichkeit diese "Kettenreaktion" hin zu bekommen. Es soll auch über Rekursion gehen. Davon wurde mir aber abgeraten

Xeres

Moderator

BeitragMi, Nov 11, 2009 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum keine Rekursion? Das wäre das Mittel der Wahl...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Der Eisvogel

BeitragMi, Nov 11, 2009 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder mach es nach dem FloodFill-Prinzip. Such mal hier im Forum danach, da findet sich bestimmt was.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

TimBo

BeitragMi, Nov 11, 2009 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Functio DeleteAllNachbern()
   For alle_nachbern
        if gleichefarbe then delete(this_nachber) : DeleteAllNachbern()
   next
End Functoin


Pseudocode:
mit einer Rekrusiven Funktion gelöst.
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

WEBLink

BeitragMi, Nov 11, 2009 16:50
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Xeres

Frag mich nicht, hab den Kommentar angebracht ob ma es über eine Rekursiv Funktion lösen sollen. Man meinte das es einfacher geht.

@ Der Eisvogel

schau ich mit mal an

@ TimBo

- kein KOmmentar ...

Goodjee

BeitragMi, Nov 11, 2009 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
einfacher als rekursion geht es nicht, die tiefensuche ist in 10 zeilen gemacht.
du kannst es auch mit ner breitensuche machen, das ist aber aufwendiger und braucht dynamische speicherstrukturen
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/
 

Meik

Betreff: Re: Kettenreaktion

BeitragMi, Nov 11, 2009 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Smile

Ich hatte mal ein ähnliches Problem, wenn ich dein Problem richtig verstanden habe.

Vielleicht hilft dir das weiter
https://www.blitzforum.de/foru...hp?t=32330

MFG Meik

kriD

BeitragFr, Nov 13, 2009 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
WEBLink hat Folgendes geschrieben:
@ TimBo

- kein KOmmentar ...


was is an TimBos Code bis auf das Nachbern so verkehrt?

lg kriD
Wenn ich du wäre, wäre ich lieber ich!
 

BBPro2

BeitragMo, Nov 16, 2009 0:54
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,

- du löschst das element bei dem du anfangen möchtest
- du rufst rekursiv die funktion auf alle 4 nachbarn auf, falls die farbe übereinstimmt
und das element noch nicht gelöscht wurde
(entweder ist der code so geschrieben dass das diese abfrage kein problem darstellt - ansonsten
löst dus über ein temporäres array mit 1en und 0en für gelöscht/nicht gelöscht)
- fertig

die reihenfolge ist wichtig, sonst haste ne endlosschleife

hoffe ich konnte helfen

grüßte BBPro

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group