kartenspiel programmieren
kartenspiel programmieren
ich bin auf dem gebiet des programmierens total neu, da ich gambas sehr gut finde habe ich dazu auch mal eine frage (einige werden es wohl werden)
wie kann ich ein kartendeck programmieren welches aus 78 karten besteht die karten habe ich als jpg numeriert von 0 - 77 wie kann ich dieses deck mit randomized mischen lassen(ein button mit einer funktion)? die karten sollen dann auf einem virtuellen tisch mit der rückseite zu sehen sein (frei beweglich mit der mouse zu bewegen/vom stapel nehmen usw.)wenn man mit doppelclick draufklickt soll sich die karte umdrehen ich sitze schon seit 3 ganzen tagen daran und bekomme es nicht hin, da ich noch neuling bin.......
kann mir hier jemand einen sourcecode schreiben oder eine anleitung geben? im netz habe ich schon gesucht doch leider nicht alles passende bzw. nur das nicht funktionierende gefunden
wie kann ich ein kartendeck programmieren welches aus 78 karten besteht die karten habe ich als jpg numeriert von 0 - 77 wie kann ich dieses deck mit randomized mischen lassen(ein button mit einer funktion)? die karten sollen dann auf einem virtuellen tisch mit der rückseite zu sehen sein (frei beweglich mit der mouse zu bewegen/vom stapel nehmen usw.)wenn man mit doppelclick draufklickt soll sich die karte umdrehen ich sitze schon seit 3 ganzen tagen daran und bekomme es nicht hin, da ich noch neuling bin.......
kann mir hier jemand einen sourcecode schreiben oder eine anleitung geben? im netz habe ich schon gesucht doch leider nicht alles passende bzw. nur das nicht funktionierende gefunden
Re: kartenspiel programmieren
Mit einer leeren Form sollte der folgende Code einen einfachen Kartentisch mit beweglichen, umdrehbaren Karten ergeben.KarlKoch hat geschrieben:wie kann ich ein kartendeck programmieren welches aus 78 karten besteht die karten habe ich als jpg numeriert von 0 - 77 wie kann ich dieses deck mit randomized mischen lassen(ein button mit einer funktion)? die karten sollen dann auf einem virtuellen tisch mit der rückseite zu sehen sein (frei beweglich mit der mouse zu bewegen/vom stapel nehmen usw.)wenn man mit doppelclick draufklickt soll sich die karte umdrehen
(Das cards-default am Ende der fünften Zeile kleinschreiben, die Forumsoftware erzeugt die Großbuchtaben.)
Code: Alles auswählen
CONST KARTEN_ANZAHL AS Integer = 52
' Die Karten aus /usr/share/apps/carddecks/cards-default/ in das
' Projektverzeichnis nach cards-default/ kopieren, danach zu jeder
' Datei eine Textdatei mit beliebigem Inhalt erzeugen (0.png -> 0.txt, ...)
CONST KARTEN_PFAD AS String = "cards-default/"
CONST KARTEN_EXT AS String = ".png"
CONST KARTEN_RUECKSEITE AS String = "/usr/share/apps/carddecks/decks/deck0.png"
$hRueckseite AS NEW Picture
$hKartenTisch AS Object
$hKarteInfo AS Object
$hZoom AS Object
$aKartenDeck AS NEW Object[]
$aKartenReihe AS NEW Object[]
$aKartenSeite AS NEW Integer[]
$aKarten AS NEW Integer[]
$iKartenBreite AS Integer
$iKartenHoehe AS Integer
$iMouseStartX AS Integer
$iMouseStartY AS Integer
$iZoomX AS NEW Integer[]
$iZoomY AS NEW Integer[]
PUBLIC SUB _new()
DIM i AS Integer
DIM p AS NEW Picture
$hKartenTisch = NEW ScrollView(ME) AS "KartenTisch"
$hKarteInfo = NEW TextArea($hKartenTisch) AS "KarteInfo"
$hKarteInfo.Visible = FALSE
$hKarteInfo.ReadOnly = TRUE
$hKarteInfo.Wrap = TRUE
$hKarteInfo.Border = FALSE
$aKarten.Resize(KARTEN_ANZAHL)
$aKartenSeite.Resize(KARTEN_ANZAHL)
$aKartenReihe.Resize(8)
FOR i = 0 TO 7
$aKartenReihe[i] = NEW Integer[]
NEXT
$aKartenDeck.Resize(KARTEN_ANZAHL)
FOR i = 0 TO KARTEN_ANZAHL - 1
$aKartenDeck[i] = NEW PictureBox($hKartenTisch) AS "Karte"
$aKartenDeck[i].Tag = i
NEXT
$iZoomX.Resize(KARTEN_ANZAHL)
$iZoomY.Resize(KARTEN_ANZAHL)
$hZoom = NEW SpinBox(ME) AS "sbZoom"
$hZoom.MinValue = 1
$hZoom.MaxValue = 999
$hZoom.Value = 100
$hZoom.Suffix = " %"
END
PUBLIC SUB Form_Open()
ME.Width = 700
ME.Height = 500
ME.Center
sbZoom_Change
KartenGeben
END
PUBLIC SUB Form_Resize()
$hKartenTisch.Move(8, 56, ME.ClientWidth - 16, ME.ClientHeight - 64)
$hZoom.Move(8, 8, 75, 32)
END
PUBLIC SUB KartenMischen()
DIM i AS Integer
DIM r AS Integer
Randomize
FOR i = 0 TO KARTEN_ANZAHL - 1
$aKarten[i] = i + 1
NEXT
FOR i = 0 TO 1000
r = CInt(Rnd(0, KARTEN_ANZAHL))
$aKarten.Add($aKarten[r])
$aKarten.Remove(r)
NEXT
END
PUBLIC SUB KartenGeben()
DIM i AS Integer
KartenMischen
FOR i = 0 TO 7
$aKartenReihe[i].Clear
NEXT
FOR i = 0 TO KARTEN_ANZAHL - 1
$aKartenSeite[i] = 0
$aKartenDeck[i].Picture = $hRueckseite
$aKartenDeck[i].Raise
$aKartenDeck[i].Move(i * $hZoom.Value / 10, 0)
$iZoomX[i] = i * 10
$iZoomY[i] = 0
'KarteAufdecken(i)
NEXT
END
PUBLIC SUB KarteAufdecken(Karte AS Integer)
DIM sFile AS String
IF $aKartenSeite[Karte] = 0 THEN
sFile = KARTEN_PFAD &/ Str$($aKarten[Karte]) & KARTEN_EXT
IF NOT Exist(sFile) THEN Error.Raise("Datei <b>" & sFile & "</b> nicht gefunden")
$aKartenDeck[Karte].Picture = Picture[sFile].Image.Stretch($iKartenBreite, $iKartenHoehe).Picture
$aKartenSeite[Karte] = 1
ELSE
IF NOT Exist(KARTEN_RUECKSEITE) THEN Error.Raise("Datei <b>" & KARTEN_RUECKSEITE & "</b> nicht gefunden")
$aKartenDeck[Karte].Picture = $hRueckseite
$aKartenSeite[Karte] = 0
ENDIF
END
PUBLIC SUB Karte_MouseDown()
$iMouseStartX = Mouse.X
$iMouseStartY = Mouse.Y
$aKartenDeck[LAST.Tag].Raise
END
PUBLIC SUB Karte_MouseMove()
$aKartenDeck[LAST.Tag].Move($aKartenDeck[LAST.Tag].X + Mouse.X - $iMouseStartX, $aKartenDeck[LAST.Tag].Y + Mouse.Y - $iMouseStartY)
$iZoomX[LAST.Tag] = $aKartenDeck[LAST.Tag].X * 100 / $hZoom.Value
$iZoomY[LAST.Tag] = $aKartenDeck[LAST.Tag].Y * 100 / $hZoom.Value
END
PUBLIC SUB Karte_MouseUp()
DIM i AS Integer
DIM j AS Integer
DIM X AS Integer
DIM Y AS Integer
DIM iReihe AS Integer
$hKarteInfo.Visible = FALSE
IF Mouse.Right THEN
$hKarteInfo.Move(LAST.X + Mouse.X, LAST.Y + Mouse.Y, 150, 200)
'$hKarteInfo.Text = String$(10, "Infotext für Karte Nr: " & LAST.Tag & "\n")
$hKarteInfo.Text = File.Load(KARTEN_PFAD &/ Str$($aKarten[LAST.Tag]) & ".txt")
$hKarteInfo.Raise
$hKarteInfo.Visible = TRUE
ELSE
' $aKartenDeck[LAST.Tag].Raise
'
' 'als Beispiel eine einfache solitaire-ähnliche Anordnung
' iReihe = Min(7, CInt(Max(Mouse.ScreenX - $hKartenTisch.ScreenX, 10) / ($iKartenBreite + 8)))
'
' FOR i = 0 TO 7
' IF $aKartenReihe[i].Find(LAST.Tag) > -1 THEN
' $aKartenReihe[i].Remove($aKartenReihe[i].Find(LAST.Tag))
' ENDIF
' NEXT
' $aKartenReihe[iReihe].Add(LAST.Tag)
'
' FOR i = 0 TO 7
' FOR j = 0 TO $aKartenReihe[i].Max
' X = i * $iKartenBreite * 1.1
' Y = $iKartenHoehe * 1.1 + j * $iKartenHoehe * 0.2
' $iZoomX[$aKartenReihe[i][j]] = X * 100 / $hZoom.Value
' $iZoomY[$aKartenReihe[i][j]] = Y * 100 / $hZoom.Value
' $aKartenDeck[$aKartenReihe[i][j]].Move(X, Y)
' NEXT
' NEXT
ENDIF
END
PUBLIC SUB Karte_DblClick()
KarteAufdecken(LAST.Tag)
END
PUBLIC SUB KartenTisch_DblClick()
'ein Menü oder Button ist natürlich besser...
KartenGeben
END
PUBLIC SUB KartenTisch_MouseUp()
$hKarteInfo.Visible = FALSE
END
PUBLIC SUB KarteInfo_MouseUp()
$hKarteInfo.Visible = FALSE
END
PUBLIC SUB sbZoom_Change()
DIM Karte AS Integer
DIM sFile AS String
IF NOT Exist(KARTEN_RUECKSEITE) THEN Error.Raise("Datei <b>" & KARTEN_RUECKSEITE & "</b> nicht gefunden")
$hRueckseite = Picture[KARTEN_RUECKSEITE]
$hRueckseite = Picture[KARTEN_RUECKSEITE].Image.Stretch(CInt($hRueckseite.Width * $hZoom.Value / 100), CInt($hRueckseite.Height * $hZoom.Value / 100)).Picture
$iKartenBreite = $hRueckseite.Width
$iKartenHoehe = $hRueckseite.Height
FOR Karte = 0 TO KARTEN_ANZAHL - 1
$aKartenDeck[Karte].Width = $iKartenBreite
$aKartenDeck[Karte].Height = $iKartenHoehe
$aKartenDeck[Karte].X = $iZoomX[Karte] * $hZoom.Value / 100
$aKartenDeck[Karte].Y = $iZoomY[Karte] * $hZoom.Value / 100
IF $aKartenSeite[Karte] = 1 THEN
sFile = KARTEN_PFAD &/ Str$($aKarten[Karte]) & KARTEN_EXT
IF NOT Exist(sFile) THEN Error.Raise("Datei <b>" & sFile & "</b> nicht gefunden")
$aKartenDeck[Karte].Picture = Picture[sFile].Image.Stretch($iKartenBreite, $iKartenHoehe).Picture
ELSE
$aKartenDeck[Karte].Picture = $hRueckseite
ENDIF
NEXT
END
BK
Zuletzt geändert von BK am Mi 6. Sep 2006, 11:27, insgesamt 12-mal geändert.
Ich habe das Beispiel oben so geändert, dass eine Fehlermeldung ausgegeben wird, wenn eine der Kartendateien nicht existiert.
Grüße,
BK
In der Funktion KartenGeben() die Zeile $hKartenDeck.Move(i * 10, 0, 72, 96) entsprechend ändern. Drittes Argument = Breite, viertes Argument = Höhe.KarlKoch hat geschrieben:noch eine frage wo kann ich die kartengröße einstellen? damit meine bilder ganz auf der karte erscheinen?
Grüße,
BK
können sie mir vielleicht noch einmal weiterhelfen?
ich habe in form 1 eine textbox und das eingegebene soll in einem sichtbaren label (in form2) wo sich die karten befinden dargestellt werden außerdem sollte man das fenster mit den karten scrollen können
es sollte per rechtsklick an der maus zu jeder karte ein text erscheinen den man wiederum scrollen kann wenn er zu lang ist
klasse wäre es wenn man die karten nicht wie bei einem raster bewegen müsste sondern sie so legen könnte wie man will und wohin man will ohne das sie an eine "magnetische linie oder ä. springen)(vielleicht geht das, dass man die karten auch wieder zurückdrehen kann sodass man immer auf und zu decken kann)
ich möchte gerne ein spiel machen und das dann vielleicht als tutorial reinstellen für gambas wenn es fertig wird
außerdem ist mir ein kleiner bug aufgefallen (kann aber auch an gambas liegen) denn ab und an verschwinden karten beim doppelklick die anzahl der karten ist 78, 0-77 also müsste das ja stimmen
wie kann ich den source code des gesamten programmes lesen?? oder drucken? geht sowas?
außerdem bräuchte ich einen button der auf eine html seite verweißt darin steht dann die anleitung (offline)
ich habe in form 1 eine textbox und das eingegebene soll in einem sichtbaren label (in form2) wo sich die karten befinden dargestellt werden außerdem sollte man das fenster mit den karten scrollen können
es sollte per rechtsklick an der maus zu jeder karte ein text erscheinen den man wiederum scrollen kann wenn er zu lang ist
klasse wäre es wenn man die karten nicht wie bei einem raster bewegen müsste sondern sie so legen könnte wie man will und wohin man will ohne das sie an eine "magnetische linie oder ä. springen)(vielleicht geht das, dass man die karten auch wieder zurückdrehen kann sodass man immer auf und zu decken kann)
ich möchte gerne ein spiel machen und das dann vielleicht als tutorial reinstellen für gambas wenn es fertig wird
außerdem ist mir ein kleiner bug aufgefallen (kann aber auch an gambas liegen) denn ab und an verschwinden karten beim doppelklick die anzahl der karten ist 78, 0-77 also müsste das ja stimmen
wie kann ich den source code des gesamten programmes lesen?? oder drucken? geht sowas?
außerdem bräuchte ich einen button der auf eine html seite verweißt darin steht dann die anleitung (offline)
Definiere in der Form2 eine Funktion der Art:KarlKoch hat geschrieben:ich habe in form 1 eine textbox und das eingegebene soll in einem sichtbaren label (in form2) wo sich die karten befinden dargestellt werden
PUBLIC SUB SetLabel(sText AS String)
Label1.Text = sText
END
In Form1 rufst Du dann Form2.SetLabel(TextBox1.Text) auf, bevor Du Form2.Show aufrufst.
Ändere in der Funktion _new() die ZeileKarlKoch hat geschrieben:außerdem sollte man das fenster mit den karten scrollen können
$hKartenTisch = New Panel(ME) AS "KartenTisch"
zu
$hKartenTisch = NEW ScrollView(ME) AS "KartenTisch"
Wenn PictureBox.ToolTip ungeeignet ist, würde ich an dieser Stelle eine weitere Form mit einer TextArea anzeigen lassen und die Border-Eigenschaft dieser Form auf None stellen.KarlKoch hat geschrieben:es sollte per rechtsklick an der maus zu jeder karte ein text erscheinen den man wiederum scrollen kann wenn er zu lang ist
Das war auch nur als Beispiel gedacht. Die Funkton Karte_MouseUp() sorgt für die Anordnung. Wenn Du sie auskommentierst oder entfernst, kann man die Karten frei bewegen.KarlKoch hat geschrieben:klasse wäre es wenn man die karten nicht wie bei einem raster bewegen müsste sondern sie so legen könnte wie man will und wohin man will ohne das sie an eine "magnetische linie oder ä. springen)
Definiere am Anfang eine neue VariableKarlKoch hat geschrieben:(vielleicht geht das, dass man die karten auch wieder zurückdrehen kann sodass man immer auf und zu decken kann)
$aKartenSeite AS NEW Integer[]
Ergänze KartenGeben() um ein
$aKartenSeite.Fill(0)
und ersetze die Funktion KarteAufdecken() durch
Code: Alles auswählen
PUBLIC SUB KarteAufdecken(Karte AS Integer)
DIM sFile AS String
IF $aKartenSeite[Karte] = 0 THEN
sFile = KARTEN_PFAD &/ Str$($aKarten[Karte]) & KARTEN_EXT
IF NOT Exist(sFile) THEN Error.Raise("Datei <b>" & sFile & "</b> nicht gefunden")
$hKartenDeck[Karte].Picture = Picture[sFile]
$aKartenSeite[Karte] = 1
ELSE
$hKartenDeck[Karte].Picture = Picture[KARTEN_RUECKSEITE]
$aKartenSeite[Karte] = 0
ENDIF
END
In meinem Beispiel sind die Karten von 1 bis 52 nummeriert. Ändere in der Funktion KartenMischen() den TeilKarlKoch hat geschrieben:außerdem ist mir ein kleiner bug aufgefallen (kann aber auch an gambas liegen) denn ab und an verschwinden karten beim doppelklick die anzahl der karten ist 78, 0-77 also müsste das ja stimmen
FOR i = 0 TO KARTEN_ANZAHL - 1
$aKarten = i + 1
NEXT
zu
FOR i = 0 TO KARTEN_ANZAHL - 1
$aKarten = i
NEXT
dann sollte es funktionieren.
KarlKoch hat geschrieben:außerdem bräuchte ich einen button der auf eine html seite verweißt darin steht dann die anleitung (offline)
EXEC ["konqueror", "--profile", "webbrowsing", "/pfad/zur/datei.html"] sollte die Seite anzeigen.
Grüße,
BK
Mein Fehler, Du musst in der _new() Funktion noch einKarlKoch hat geschrieben:irgendwas bringt bei mir eine fehler meldung habe ich das falsch eingesetzt?
bzw kann keine karten mehr aufdecken
out of bounds meldung
ich setze das vorerst wieder zurück damit ich keine fehlermeldung bekomme
$aKartenSeite.Resize(KARTEN_ANZAHL)
ergänzen.
Grüße,
BK
danke nun geht das
könnten sie mir bei den übrigen fragen auch weiterhelfen?
- wie bekomme ich einen scrollbalken in das feld mit den karten?
- geht es, dass die karten egal wo man sie hinlegt liegen bleiben nicht wie bei einer magnetischen hilfslinie an eine stelle springen?
- wie kann ich den text einer textbox in form 1 auf ein label in form2 anzeigen lassen nachdem er in der textbox eingegeben wurde und man den bestätigungsbutton drückt? (die erste form schließt sich dadurch)
- zu jeder karte sollte es ein feld mit text geben was erscheint bei rechter maustaste geht sowas?
könnten sie mir bei den übrigen fragen auch weiterhelfen?
- wie bekomme ich einen scrollbalken in das feld mit den karten?
- geht es, dass die karten egal wo man sie hinlegt liegen bleiben nicht wie bei einer magnetischen hilfslinie an eine stelle springen?
- wie kann ich den text einer textbox in form 1 auf ein label in form2 anzeigen lassen nachdem er in der textbox eingegeben wurde und man den bestätigungsbutton drückt? (die erste form schließt sich dadurch)
- zu jeder karte sollte es ein feld mit text geben was erscheint bei rechter maustaste geht sowas?
Alles in der Antwort von 11:50 Uhr beschrieben.KarlKoch hat geschrieben:- wie bekomme ich einen scrollbalken in das feld mit den karten?
- geht es, dass die karten egal wo man sie hinlegt liegen bleiben nicht wie bei einer magnetischen hilfslinie an eine stelle springen?
- wie kann ich den text einer textbox in form 1 auf ein label in form2 anzeigen lassen nachdem er in der textbox eingegeben wurde und man den bestätigungsbutton drückt? (die erste form schließt sich dadurch)
- zu jeder karte sollte es ein feld mit text geben was erscheint bei rechter maustaste geht sowas?
Grüße,
BK
danke bis auf das mit der rechten maustaste habe ich alles verstanden
die karten haben alle einen anderen namen bzw eine andere nummer wie kann ich durch eine tabelle oder ähnliches den text eingeben?
editiert jede karte soll einen anderen text haben
kann man den kartentisch auch ein und auszoomen? geht sowas? :O)
vielleicht mit 2 kleinen buttons rein und rauszoomen oder mit mausrad
die karten haben alle einen anderen namen bzw eine andere nummer wie kann ich durch eine tabelle oder ähnliches den text eingeben?
editiert jede karte soll einen anderen text haben
kann man den kartentisch auch ein und auszoomen? geht sowas? :O)
vielleicht mit 2 kleinen buttons rein und rauszoomen oder mit mausrad
der zwischenstand des programmes sieht so aus als qc
Code: Alles auswählen
'form1 ist Frage man braucht ein textfeld ein button ein label
PUBLIC SUB Button1_Click()
KartenTisch.SetLabel(TextBox1.Text)
KartenTisch.Show
Frage.Hide
END
'form2 ist KartenTisch man braucht 2 buttons und 1 label
CONST KARTEN_ANZAHL AS Integer = 78
' Die Karten aus /usr/share/apps/carddecks/cards-default/ in das
' Projektverzeichnis nach cards-default/ kopieren, danach zu jeder
' Datei eine Textdatei mit beliebigem Inhalt erzeugen (1.png -> 1.txt, ...)
CONST KARTEN_PFAD AS String ="" ' geben Sie den Pfad zum Karten- und Textverzeichnis an
CONST KARTEN_EXT AS String = ".jpg"
CONST KARTEN_RUECKSEITE AS String = "" 'geben Sie den Pfad zur Kartenrueckseite an
$hRueckseite AS NEW Picture
$hKartenTisch AS Object
$hKarteInfo AS Object
$aKartenDeck AS NEW Object[]
$aKartenReihe AS NEW Object[]
$aKartenSeite AS NEW Integer[]
$aKarten AS NEW Integer[]
$iKartenBreite AS Integer
$iKartenHoehe AS Integer
$iMouseStartX AS Integer
$iMouseStartY AS Integer
PUBLIC SUB _new()
DIM i AS Integer
DIM p AS NEW Picture
IF NOT Exist(KARTEN_RUECKSEITE) THEN ERROR.RAISE("Datei <b>" & KARTEN_RUECKSEITE & "</b> nicht gefunden")
$hRueckseite = Picture[KARTEN_RUECKSEITE]
$iKartenBreite = $hRueckseite.Width
$iKartenHoehe = $hRueckseite.Height
$hKartenTisch = NEW ScrollView(ME) AS "KartenTisch"
$hKarteInfo = NEW TextArea($hKartenTisch) AS "KarteInfo"
$hKarteInfo.Visible = FALSE
$hKarteInfo.ReadOnly = TRUE
$hKarteInfo.Wrap = TRUE
$hKarteInfo.Border = FALSE
$aKarten.Resize(KARTEN_ANZAHL)
$aKartenSeite.Resize(KARTEN_ANZAHL)
$aKartenReihe.Resize(8)
FOR i = 0 TO 7
$aKartenReihe[i] = NEW Integer[]
NEXT
$aKartenDeck.Resize(KARTEN_ANZAHL)
FOR i = 0 TO KARTEN_ANZAHL - 1
$aKartenDeck[i] = NEW PictureBox($hKartenTisch) AS "Karte"
$aKartenDeck[i].Tag = i
$aKartenDeck[i].Width = $iKartenBreite
$aKartenDeck[i].Height = $iKartenHoehe
NEXT
KartenGeben
END
PUBLIC SUB Form_Open()
ME.Width = 1024
ME.Height = 768
ME.Center
END
PUBLIC SUB Form_Resize()
$hKartenTisch.Move(8, 50, ME.ClientWidth - 180, ME.ClientHeight - 80)
END
PUBLIC SUB KartenMischen()
DIM i AS Integer
DIM r AS Integer
Randomize
FOR i = 0 TO KARTEN_ANZAHL - 1
$aKarten[i] = i
NEXT
FOR i = 0 TO 1000
r = CInt(Rnd(0, KARTEN_ANZAHL))
$aKarten.Add($aKarten[r])
$aKarten.Remove(r)
NEXT
END
PUBLIC SUB KartenGeben()
DIM i AS Integer
KartenMischen
FOR i = 0 TO 7
$aKartenReihe[i].Clear
NEXT
FOR i = 0 TO KARTEN_ANZAHL - 1
$aKartenSeite[i] = 0
$aKartenDeck[i].Picture = $hRueckseite
$aKartenDeck[i].RAISE
$aKartenDeck[i].Move(i * 10, 0)
'KarteAufdecken(i)
NEXT
END
PUBLIC SUB KarteAufdecken(Karte AS Integer)
DIM sFile AS String
IF $aKartenSeite[Karte] = 0 THEN
sFile = KARTEN_PFAD &/ Str$($aKarten[Karte]) & KARTEN_EXT
IF NOT Exist(sFile) THEN ERROR.RAISE("Datei <b>" & sFile & "</b> nicht gefunden")
$aKartenDeck[Karte].Picture = Picture[sFile]
$aKartenSeite[Karte] = 1
ELSE
$aKartenDeck[Karte].Picture = $hRueckseite
$aKartenSeite[Karte] = 0
ENDIF
END
PUBLIC SUB Karte_MouseDown()
$iMouseStartX = Mouse.X
$iMouseStartY = Mouse.Y
$aKartenDeck[LAST.Tag].RAISE
END
PUBLIC SUB Karte_MouseMove()
$aKartenDeck[LAST.Tag].Move($aKartenDeck[LAST.Tag].X + Mouse.X - $iMouseStartX, $aKartenDeck[LAST.Tag].Y + Mouse.Y - $iMouseStartY)
END
PUBLIC SUB Karte_MouseUp()
DIM i AS Integer
DIM j AS Integer
DIM X AS Integer
DIM Y AS Integer
DIM iReihe AS Integer
$hKarteInfo.Visible = FALSE
IF Mouse.Right THEN
$hKarteInfo.Move(LAST.X + Mouse.X, LAST.Y + Mouse.Y, 150, 200)
'$hKarteInfo.Text = String$(10, "Infotext für Karte Nr: " & LAST.Tag & "\n")
$hKarteInfo.Text = File.Load(KARTEN_PFAD &/ Str$($aKarten[LAST.Tag]) & ".txt")
$hKarteInfo.RAISE
$hKarteInfo.Visible = TRUE
' ELSE
' $aKartenDeck[LAST.Tag].Raise
'
' 'als Beispiel eine einfache solitaire-ähnliche Anordnung
' iReihe = Min(7, CInt(Max(Mouse.ScreenX - $hKartenTisch.ScreenX, 10) / ($iKartenBreite + 8)))
'
' FOR i = 0 TO 7
' IF $aKartenReihe[i].Find(LAST.Tag) > -1 THEN
' $aKartenReihe[i].Remove($aKartenReihe[i].Find(LAST.Tag))
' ENDIF
' NEXT
' $aKartenReihe[iReihe].Add(LAST.Tag)
'
' FOR i = 0 TO 7
' FOR j = 0 TO $aKartenReihe[i].Max
' X = i * ($iKartenBreite + 8)
' Y = 120 + j * 20
' $aKartenDeck[$aKartenReihe[i][j]].Move(X, Y)
' NEXT
' NEXT
ENDIF
END
PUBLIC SUB Karte_DblClick()
KarteAufdecken(LAST.Tag)
END
PUBLIC SUB KartenTisch_MouseUp()
$hKarteInfo.Visible = FALSE
END
PUBLIC SUB KarteInfo_MouseUp()
$hKarteInfo.Visible = FALSE
END
PUBLIC SUB SetLabel(sText AS String)
Label1.Text = sText
END
PUBLIC SUB Button1_Click()
KartenGeben
Frage.Show
END
PUBLIC SUB Button2_Click()
Anleitung.Show
END
'forma3 ist Anleitung man braucht eine TextArea read only
geben sie ihre anleitung ein z.b Dies ist ein kleines Linuxprogramm. Legearten und Legesysteme finden Sie im Internet oder in "Tarot"büchern"
Zuletzt geändert von KarlKoch am So 3. Sep 2006, 18:26, insgesamt 3-mal geändert.
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast