Felder auswerten

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Jamagin

Betreff: Felder auswerten

BeitragSo, Nov 08, 2015 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich benötige wieder einmal einen Denkanstoss zu folgendem Problem:
Ich programmiere gerade ein Slotgame (rein zur Unterhaltung oder zwecks Programmiererfahrung).

Also, das Spielfeld besteht aus 5 Slots (Walzen), nun habe ich das Problem mit der Feldauswertung.

Der Aufbau des Feldes:
Code: [AUSKLAPPEN]

For x = 1 to 5
   For y = 1 to 5
       ...
   Next
Next


Nachdem die Walzen stoppen, soll das gesamte Feld in einem einzigen Durchlauf ausgewertet werden. Momentan habe ich es so bewerkstelligt, daß jede Gewinnlinie einzeln ausgewertet wird. Das heißt, das Programm geht bei 10 Gewinnlinien immer alle Linien durch. Ich möchte es aber so hinbekommen, daß das Feld in einem einzigen Durchlauf ausgewertet wird.

Momentan wird so geprüft wie folgt...

1. Durchlauf
checkLine1(1, 1, 1, 1, 1, Liniennr)

2. Durchlauf
checkLine1(1, 1, 1, 1, 1, Liniennr)
checkLine2(2, 2, 2, 2, 2, Liniennr)

3. Durchlauf
checkLine1(1, 1, 1, 1, 1, Liniennr)
checkLine2(2, 2, 2, 2, 2, Liniennr)
checkLine3(3, 3, 3, 3, 3, Liniennr)

und so fort...

Ich möchte es aber in einem Durchlauf haben bzw. hinbekommen

Durchlauf
checkLine1(1, 1, 1, 1, 1, Liniennr)
checkLine2(2, 2, 2, 2, 2, Liniennr)
checkLine3(...)
checkLine4(...)
und so weiter bis checkLine10(...)

Ich brauche keine Lösungen, sondern nur Denkansätze wie ich das umändern könnte!


lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Xeres

Moderator

BeitragSo, Nov 08, 2015 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann dir nicht so ganz folgen... Was ist eine Gewinnlinie? Was machen die ganzen Parameter von checkLine?
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)

Jamagin

Betreff: Felder auswerten

BeitragSo, Nov 08, 2015 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Xerex,

Feldaufbau:

0 0 0 0 0 Linie 2
1 1 1 0 0 Linie 1
0 0 0 0 0 Linei 3

Hier ist die mittlere Linie eine Gewinnlinie, weil 3 gleiche Symbole andocken, so ähnlich wie in einem Jewelspiel.

1 0 0 0 1 Linie 2
0 1 0 1 0 Linie 1
0 0 1 0 0 Linei 3

In diesem Fall wäre die Linie 4 eine Gewinnlinie.

Und ich brauche einen Denkanstoss wie ich in einem einzigen Durchlauf alle 10 Linien auswerten kann. Im Moment werden so wie im Beitrag erwähnt immer alle Linien ausgewertet. Also immer von der Linie1 weg. Und wenn eine Linie schon ausgewertet ist, muß man diese nicht nochmals auswerten, denke ich!
Aber da hab ich jetzt keinen Durchblick...! Sad

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Xeres

Moderator

BeitragSo, Nov 08, 2015 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich dachte an eine Slotmaschine die immer nur eine Zeile/Gewinnlinie anzeigt...
Was ist jetzt das Problem mit mehreren Linien? Können Linien Einfluss aufeinander haben? Werden es mehr
Linien?
Ich kann erst mal keine Schwierigkeit erkennen.
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)

SpionAtom

BeitragSo, Nov 08, 2015 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image
http://www.book-of-ra-game.net...eluxe.html


Also wenn das die ganzen Gewinnlinien sind, dann würde ich jede Linie einzeln abfragen. Die sind zwar irgendwo symmetrisch, aber dann doch zu willkürlich und unterschiedlich, als dass man sie in einem Rutsch auswerten kann/sollte.

Nur meine Meinung...

(Übrigens: Solche Bilder helfen um ein Verständnis für das Problem zu bekommen Wink )
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Jamagin

BeitragSo, Nov 08, 2015 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja genau so in der Art. Natürlich werte ich jede Linie einzeln aus, doch es werden bei jedem Durchlauf immer ALLE Linien ausgewertet. Das heißt, wenn Linie 1 schon ausgewertet ist, muß diese nicht wieder ausgewertet werden und das ist mein Problem wo ich momentan auf den Schlauch stehe!

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Xeres

Moderator

BeitragSo, Nov 08, 2015 23:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Ergebnisfeld ist ein Array, die Gewinnlinien könnte man gleich gut in Array/Type definieren. Über alle Gewinnlinien iterieren, die Daten aus dem Ergebnisfeld analysieren, fertig.
Wenn du die Linien mehrfach auswertest, machst du halt irgendwas suboptimal deinem Code.
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)

DAK

BeitragMo, Nov 09, 2015 0:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Feld machst du am Besten als Array. 3x5 ist da keine Sache. Dann definierst du jede Gewinnlinie auch in einem Array, wobei die erste Dimension die Nummer der Gewinnlinie (1-10) angibt, und die zweite Dimension die Y-Position zu der passenden X-Position. Als Beispiel für die Gewinnlinie 4 wäre das dann so:

BlitzBasic: [AUSKLAPPEN]
Dim Gewinnlinien(10,5)
Gewinnlinien(4,1) = 1
Gewinnlinien(4,2) = 2
Gewinnlinien(4,3) = 3
Gewinnlinien(4,4) = 2
Gewinnlinien(4,5) = 1


Jetzt läufst du das dann beim Check so durch:

BlitzBasic: [AUSKLAPPEN]

For i = 1 To 10
lineValue = Spielfeld(1,Gewinnlinien(i,1))
isWinning = True
For x = 2 To 5
isWinning = isWinning And (Spielfeld(x,Gewinnlinien(i,x)) = lineValue)
Next
Next
Gewinner der 6. und der 68. BlitzCodeCompo

Jamagin

Betreff: Gelöst

BeitragMo, Nov 09, 2015 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Danke für eure nützlichen Tipps! Hat mir echt weitergeholfen!!! Smile

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group