[Hilfe] Card Game
Übersicht BlitzBasic Beginners-Corner
Eingeproggt |
Fr, Jun 27, 2014 14:52 Antworten mit Zitat |
|
---|---|---|
Kurz:
Die Abfrage in der While-Schleife sollte auf =False lauten, nicht auf =True. Lang: Alle Einträge werden am Anfang auf True gesetzt. Mit dem ersten ziehen setzt du einen Eintrag auf False. In weiterer Folge suchst du solange eine Zufallszahl, bis du den Eintrag findest der False ist. Sprich der erste, daher immer dieselbe Zahl. EDIT: Nach mehrmaligem Durchlesen finde ich meine Erklärung verwirrend Also du hast Code: [AUSKLAPPEN] While Kartenziehen(Handkarte2) = True
Das heißt, du suchst so lange eine neue Zufallszahl, solange da True steht. Das ist bei jedem Eintrag der Fall, außer bei dem, der als erste Karte gewählt wurde. (vorhin als bis er false ist beschrieben). Die beiden fett markierten Wörter dürften für deine Verwirrung gesorgt haben |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
BladeRunnerModerator |
Fr, Jun 27, 2014 15:29 Antworten mit Zitat |
|
---|---|---|
Ich würde einen komplett anderen Ansatz wählen:
Nimm alle Karten die es geben soll und pack sie in ein Array. Dann mischst du das Array indem du per Rand für eine genügend große Anzahl an Iterationen immer zwei Karten austauschst. Danach kannst Du einfach dem Spieler die ersten 5 Karten aus dem Array zuweisen. (und wenn später nachgezogen werden kann, setze eine Variable auf den ersten Spot der noch nicht gezogen wurde und teile die aus, erhöhe dann die Variable) Damit siehst Du dann auch wenn alle Karten aus dem Spiel sind. Also: (Pseudo) Code: [AUSKLAPPEN] dim karten(40)
;befülle das array mit deinen Karten For i = 0 to 1000 karte1 = rand (0,39) karte2= rand(0,39) temp = karten(karte1) karten(karte1)=karten(karte2) karten(karte2)=temp next ;und danach noch karten(0) bis karten(4) dem Spieler zuweisen. Damit ist es wie im echten Leben, die Karten werden zufällig untereinander ausgetauscht. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Snowdragon |
Fr, Jun 27, 2014 17:08 Antworten mit Zitat |
|
---|---|---|
@Blade
Ich hab die Methode ausprobiert und läuft soweit alles. Allerdings sind es immer wieder die 5 gleichen Karten die ich ziehe, wenn ich das Spiel starte. Das heißt untereinander wurden sie zwar gemischt, doch wenn ich sie ziehe erhalte ich immer: Die 3 Karte die ich definiert habe, Die 1 Karte "" Die 4 Karte "" Die 2 Karte "" Wenn ich SeedRnd MilliSecs() verwende dann geht es aber - hat doch was damit zu tun wie lange es her ist, bis das Programm das letzte Mal ausgeführt wurde oder? |
||
XeresModerator |
Fr, Jun 27, 2014 17:20 Antworten mit Zitat |
|
---|---|---|
Ja, Millisecs gibt die Zeit seit dem letzten Systemstart zurück.
Das ist die beste Quelle für Zufall, die einem zur Verfügung steht - wenn du nicht einen Service wie random.org benutzen willst um Blöcke an Zufallsdaten zwischen zu speichern. |
||
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) |
Snowdragon |
Fr, Jun 27, 2014 18:22 Antworten mit Zitat |
|
---|---|---|
Okay!
Dann hätte ich da noch eine kleine Frage. Ich habe ja mal nach verschiedenen Kartenspielen gefragt. Bei einigen war es so, wenn ich mit der Maus über die Karten gehe, dass die entsprechende Person quasi hervorgehoben wird indem ihre y-Koordinate erhöht/verringert wird. Hat da jemand vlt. ein guten Ansatz weil ich die Idee schon cool finde aber keine Ahnung wie ich eine solche Abfrage realisieren kann (quasi das Rollover mit der Maus). |
||
BladeRunnerModerator |
Fr, Jun 27, 2014 18:40 Antworten mit Zitat |
|
---|---|---|
Mauskoordinaten vergleichen mit Kartenkoordinatn (simples point-in-box) und ggf. Bild anders zeichnen lassen. Ich verstehe das Problem daran nicht wirklich? | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Hangman |
Sa, Jun 28, 2014 3:21 Antworten mit Zitat |
|
---|---|---|
BlitzMax: [AUSKLAPPEN] Rem Ist zwar BMax, sollte sich aber jeder selbst übersetzen können. Aufruf: BlitzMax: [AUSKLAPPEN] If pointInRect(mausX, mausY, karteX, karteY, karteBreite, karteHoehe) Then karteY = 42 |
||
Ich habe Berthold gebrochen. |
count-doku |
Sa, Jun 28, 2014 17:52 Antworten mit Zitat |
|
---|---|---|
In BlitzBasic kann man doch auch einfach RectsOverlap nehmen, das dürfte exakt das gleiche machen wie die Funktion von Hangman...
Dann halt da Mauskoords und die Bildposition/größe reinpacken. |
||
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group