Binokel

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Broghi

Betreff: Binokel

BeitragMi, Apr 13, 2005 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
kleine Frage: Warum zeigt BlitzPlus immer Dinge, die es mit Write, Print,... ausdrucken soll, immer in enem anderen Fenster statt in dem Original-Fenster an?

Hauptproblem:
Versuch grad ein Binokel-Programm z schreiben, ABER:

1.: Beim "Mischen" und zuordnen der Karten teilt das Progg nicht jede Karte zweimal aus (Da Binokel mit 48Karten(also 2x24 Karten)gespielt wird).

2.: Wenn ich jedem Spieler die Nummern der Karten, die er besitzt, zuordne und die Karten dann zeichnen will, kommt immer
"Runtime Error - Invalid Image handle"

Guckt euch mal den Quelltext an und sagt mir bitte, was ich falsch mach

Danke
Code: [AUSKLAPPEN]
AppTitle "Binokel"

Graphics 1024,768

SetBuffer BackBuffer()
SeedRnd MilliSecs()

Dim cards(48,3)   ;1=Bild;2=Ausgeteilt;3=Wert
Dim Spieler$(4,16) ;1-15=Karten;16=Name; Spieler 4=Tapp

;Load
Deckb=LoadImage("Images\Deckblatt.jpg")
For A=1 To 24
   cards(A,1)=LoadImage("Images\card"+A+".jpg")
   cards(A,2)=0
   cards(A+24,1)=LoadImage("Images\card"+A+".jpg")
   cards(A+24,2)=0
Next

ClsColor 0,140,0
Cls
Flip

;Werte
For A=1 To 6
   If A=1 Then B=11
   If A=2 Then B=10
   If A=3 Then B=4
   If A=4 Then B=3
   If A=5 Then B=2
   If A=6 Then B=0
   cards(A,3)=B
   cards(A+6,3)=B
   cards(A+12,3)=B
   cards(A+18,3)=B
Next

;"Mischen"
For A=1 To 4 ;Spieler; Spieler4=Tapp
C=15         ;Jeder Spieler bekommt 15 Karten
If A=4 Then C=3 ; Der Tapp bekommt blos drei
   For B=1 To C
      .loop
      D=Rand(1,48)
      If cards(D,2)=2 Then Goto loop ;Prüfen, ob die Karte schon zweimal ausgeteilt wurde
      cards(D,2)=cards(D,2)+1
      spieler$(A,C)=D ;Dem Spieler die Kartennummer zuweisen
      Write A+" "+B+": "    ;
      Write spieler$(A,C)   ;PRÜFEN, aber es werden nicht alle Karten zweimal(wenn überhaupt)ausgeteilt
      Print " "+cards(D,2)  ;
   Next
Next
WaitMouse


;Austeilen
For A=1 To 4
C=15
   If A=4 Then C=3
   For B=1 To C
      DrawImage cards(spieler$(A,B),1),B*30,50; spieler$(A,B)=Nummer der Karten des Spielers
   Next
Flip
WaitMouse
Next

End
Wozu lernen wir überhaupt programmieren?
Damit der Computer für uns Aufgaben löst (die wir ohne ihn nie gehabt hätten!).
 

Timo

BeitragMi, Apr 13, 2005 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
print gibbet in Blitz+ nicht mehr, dafür halt Editierfenster, Labels oder "notify" Wink

Edit: nun ja, "print" gibt es noch, aber es ist nicht mehr der Befehl, den man aus BB3d kennt

simi

BeitragMi, Apr 13, 2005 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich das sehe, verwechelst du irgendwie die Varaiblen:


Zitat:

For A=1 To 4 ;Spieler; Spieler4=Tapp
C=15 ;Jeder Spieler bekommt 15 Karten
If A=4 Then C=3 ; Der Tapp bekommt blos drei
For B=1 To C
.loop
D=Rand(1,48)
If cards(D,2)=2 Then Goto loop ;Prüfen, ob die Karte schon zweimal ausgeteilt wurde
cards(D,2)=cards(D,2)+1
spieler$(A,B)=D ;Dem Spieler die Kartennummer zuweisen
Write A+" "+B+": " ;
Write spieler$(A,B) ;PRÜFEN, aber es werden nicht alle Karten zweimal(wenn überhaupt)ausgeteilt
Print " "+cards(D,2) ;
Next
Next
WaitMouse


;Austeilen
For A=1 To 4
C=15
If A=4 Then C=3
For B=1 To C
DrawImage cards(spieler$(A,B),1),B*30,50; spieler$(A,B)=Nummer der Karten des Spielers
Next
Flip
WaitMouse
Next

End


So sollte sich eigentlich auch der 2. Fehler beheben....
 

Broghi

BeitragDo, Apr 14, 2005 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Karten werden jetzt angezeigt

Danke

Allerdings werden sie immernoch ungleichmäßig ausgeteilt. Hab gesehen das Herz-König nur 1mal, dafur Schellen-König dreimal, da war.
Wozu lernen wir überhaupt programmieren?
Damit der Computer für uns Aufgaben löst (die wir ohne ihn nie gehabt hätten!).
 

Broghi

BeitragDi, Apr 19, 2005 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
hab jetzt mal die Karten gezählt, raus kam:
Herz:
Ass=3
10=2
König=3
Dame=3
Bube=2
7=0

Schippen:
A=4
10=1
K=2
D=2
B=2
7=0

Kreuz:
A=1
10=0
K=3
D=1
B=4
7=2

Bollen:
A=2
10=1
K=3
D=2
B=2
7=2


Sieht den niemand einen Fehler????????
Schaut doch mal genau hin!!!!!! ( Shocked Denn 2*X Augen sehen mehr wie nur 2Shocked )
Wozu lernen wir überhaupt programmieren?
Damit der Computer für uns Aufgaben löst (die wir ohne ihn nie gehabt hätten!).
 

Broghi

BeitragDi, Apr 19, 2005 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
PROBLEM IST GELÖST Very Happy Very Happy Very Happy

hab zwar keine Ahnung Question , warum aber, die krten sind jetzt gleichäßig aufgeteilt

Hab nur mal die Variable, die angibt, ob eine Karte schonzweimal ausgeteilt wurde, auf 1 gesetzt

;"Mischen"
For A=1 To 4 ;Spieler; Spieler4=Tapp
C=15 ;Jeder Spieler bekommt 15 Karten
If A=4 Then C=3 ; Der Tapp bekommt blos drei
For B=1 To C
.loop
D=Rand(1,48 )
If cards(D,2)=1 Then Goto loop ;Prüfen, ob die Karte schon zweimal ausgeteilt wurde
cards(D,2)=cards(D,2)+1
spieler$(A,B)=D ;Dem Spieler die Kartennummer zuweisen
Next
Next

trotzdem danke an simi und timo
Wozu lernen wir überhaupt programmieren?
Damit der Computer für uns Aufgaben löst (die wir ohne ihn nie gehabt hätten!).

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group