Feldauswertung in Schleife
Übersicht BlitzBasic Allgemein
JamaginBetreff: Feldauswertung in Schleife |
Di, Nov 17, 2015 19:51 Antworten mit Zitat |
|
---|---|---|
Hallo an die Tüftler!
Ich habe wieder mal ein Brett vorm Kopf und weiß nicht wie ich das effizient lösen kann! Folgende Situation zu meinem Thema Slotgameprogramming. Ich möchte die Felder effizient auswerten, d.h. über eine Funktion oder mittels einer Funktion falls es so zu lösen geht! Ansonsten muß ich da jede Position einzeln auswerten! Das wäre echt mühsam...! Situationen die es zum auswerten gilt: xxx00 00000 00000 00000 xxx00 00000 00000 00000 xxx00 xx000 00x00 00000 00x00 xx000 00000 00000 xx000 00x00 und so weiter, bis alle denkbaren Positionen ausgewertet sind. x steht für eine Zahl zwischen 1 und 10 (Symbolart) und 0 ist ein anderes Symbol, also alles was x ist, sind gleiche Symbole. Wer hat da schon eine ähnliche Funktion ein seinen Projekten gemacht bzw. kann mir da jemand einen Ansatz geben! In meinem Fall löse ich das im Moment so. Code: [AUSKLAPPEN] If (sl_Result(1, 1) = sl_Special_Art And sl_Result(2, 1) = sl_Special_Art And sl_Result(3, 1) = sl_Special_Art) pe_refillBoard() EndIf Ich denke aber das es sicher mit einer Prüfschleife auch gehen kann! Würde mich auf Infos und Tipps dazu sehr freuen! lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
SpionAtomBetreff: Eine Lösung |
Di, Nov 17, 2015 20:21 Antworten mit Zitat |
|
---|---|---|
Ganz unpädagogisch rotze ich eine Lösung hier hin. Mir war langweilig:
BlitzBasic: [AUSKLAPPEN] Data 6 |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
XeresModerator |
Di, Nov 17, 2015 21:23 Antworten mit Zitat |
|
---|---|---|
Anhand der vorhergehenden Threads würde ich glauben, dass das Beispiel unvollständig ist.
Die Gewinnlinien haben sich doch so quer über das Feld verteilt: Linie 1: 11000 00100 00011 Dann gibt es doch 3 Fälle, wo drei Felder aneinander grenzen; die vorderen drei, die mittleren drei oder die hinteren drei: Code: [AUSKLAPPEN] XX000 | 0X000 | 00000
00X00 | 00X00 | 00X00 00000 | 000X0 | 000XX Ich würde das erst mal normalisieren. Welche Felder zur Linie gehören, ist definiert, also greift man sich die raus und macht eine neue Linie daraus: Code: [AUSKLAPPEN] XXX00 | 0XXX0 | 00XXX
Und schon ist es vollkommen egal wie die Linien verteilt sind, man kann sie alle nach dem gleichen Schema nach Mustern absuchen. |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Jamagin |
Di, Nov 17, 2015 23:19 Antworten mit Zitat |
|
---|---|---|
Hallo Xeres!
Ich habe mich falsch ausgedrückt, das mit den Gewinnlinien hab ich hinbekommen. Nun ist die Situation so wie am Screen ersichtlich, dass zB. ein Symbol als Specialobject ausgewählt wurde und in den Freirunden an verschiedenen Positionen erscheint. Sind mehr als 2 des ausgewählten Symbols im Bild, färben sich die anderen Symbole und an den Positionen ober- und unterhalb des Bildes wird das jeweilige Symbol durch das Specialsymbol ersetzt! Das habe ich hinbekommen. Doch wie kann ich nun feststellen an welchen Positionen die Specialsymbole angefügt werden sollen? Die erste Spalte habe ich manuell eingefügt damit ersichtlich ist worum es geht! Nun sind noch an den anderen Positionen solche Specialsymbole! Vorher: x0000 000xx 00x00 Nachher soll es so aussehen: x0xxx x0xxx x0xxx Nur weiß ich nicht wie ich das über eine Formel ausrechen kann ob die gesuchten Felder oben oder unten sind, denn die Specialsymbole sollten dann hintereinander eingezeichnet werden, von links nach rechts und von oben nach unten! Oh Mann, mir raucht der Kopf! lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
XeresModerator |
Mi, Nov 18, 2015 0:07 Antworten mit Zitat |
|
---|---|---|
Ich verstehe die Fragestellung mal wieder nicht.
Was ist gegeben, was ist gesucht? Wie sähe ein Ablaufplan davon aus? Kannst du Regeln in Stichpunkten zusammenfassen? Text und Beispiel hilft leider nichts, wenn du es nicht schaffst, den kausalen Zusammenhand klar zu machen. Zitat: Nur weiß ich nicht wie ich das über eine Formel ausrechen kann ob die gesuchten Felder oben oder unten sind, denn die Specialsymbole sollten dann hintereinander eingezeichnet werden, von links nach rechts und von oben nach unten! Die Felder zu finden ist ein Problem. Sortieren und Zeichnen sind zwei weitere. Versuche nicht alles in einem Schritt lösen zu wollen. Eins nach dem anderen.
|
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
JamaginBetreff: Feldauswertung in Schleife |
Mi, Nov 18, 2015 9:28 Antworten mit Zitat |
|
---|---|---|
@ Xeres,
Du hast recht, ich versuch mein Problem etwas besser darzustellen. Also, Gewinnlinien und Auswertung funktionieren schon, nun geht es mit den Abschnitt Freirunden weiter. Zu Beginn wird ein Symbol ausgewählt was in den Freirunden eine besondere Stellung hat. Im Screenshot oben ist es das Q. Kommt dieses Q mehr als 2x im ganzen Feld vor, färbt sich das Feld um und alle Positionen wo das Q liegt (also ober- und unterhalb) werden mit einem Q ausgefüllt. Problem: 1. Das Finden der Positionen mit Q 2. Das Ausfüllen der Positionen ober- bzw. unterhalb der Q's Wo kein Q ist, gibt es nichts zum ausfüllen Code: [AUSKLAPPEN] for x = 1 to 5 for y = 1 to 3 if Symbol(x, y) = Special(x, y) then anzahl = anzahl + 1 next next Damit kann ich die Anzahl des gesuchten Elementes im ganzen Spielfeld herausfinden. Aber: Wie kann ich nun die genauen Positionen herausfiltern um das Ausfüllen der Felder zu vereinfachen. Wenn ich zusätzlich die Koordinaten in Variablen speichere, habe ich die Positionen aber wie kann ich diese dann der Reihe nach abarbeiten. Ich arbeite nicht mit Types in diesem Fall. Code: [AUSKLAPPEN] for x = 1 to 5 for y = 1 to 3 if Symbol(x, y) = Special(x, y) anzahl = anzahl + 1 specialX(x, y) = symbolX(x, y) specialY(x, y) = SymbolY(x, y) endif next next So, nun hätte ich die korrekten Positionen des Specials auch! Beispiel: Problem: Q---- --Q-- ----Q Lösung: Q-Q-Q Q-Q-Q Q-Q-Q Ich hoffe, ich habe das jetzt anschaulicher erklärt wo ich im Moment festhänge! lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
Thunder |
Mi, Nov 18, 2015 14:41 Antworten mit Zitat |
|
---|---|---|
Ich verstehe zwar nicht, wofür deine Arrays stehen, aber ich versuche es Mal in einem Pseudocode so aufzuschreiben, wie ich mir die Lösung denke:
BlitzBasic: [AUSKLAPPEN]
|
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
JamaginBetreff: gelöst |
Mi, Nov 18, 2015 17:37 Antworten mit Zitat |
|
---|---|---|
Ja danke, Thunder! Das klappt echt genau so!!! Danke, nun kann ich weitermachen!!!
lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
Übersicht BlitzBasic Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group