Probleme mit Spielkarten?
Übersicht

bruce85Betreff: Probleme mit Spielkarten? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich versuche gerade ein Kartenspiel zu schreiben, leider fehlen mir ein Paar ansätze. Hier erstmal ein Bild von den Spielkarten: ![]() Ich möchte, das die Karten dann etwas nach links gedreht werden, so z.B. ![]() Ich müsste ja eigentlich die anzahl der Karten durch 2 rechnen und den Winkel dann dazu addieren und Rotation erneut berechnen, leider bekomme ich das nicht richtig hin. Hier mal der Code, wo die Karten gezeichnet werden: BlitzMax: [AUSKLAPPEN] For Local i:Int=0 To SpielerAnzahl-1 Die Karten sind im Moment noch mit Arrays erstellt worden, die eine Feste größe haben, dies änder ich noch mit Types, um die Karten nur mit Types zu erstellen. Wenn ich den Winkel und Rotation ins negative änder, dann kommt sowas raus: ![]() Habe das Image auf den Mittelpunkt gesetzt, für die Drehung mit BlitzMax: [AUSKLAPPEN] MidHandleImage(S_card01)
Wie könnte man das ambesten realisieren, wie im 2ten Bild? Ich bedanke mich schonmal für die Hilfe. MfG |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht findest du in folgendem kleinen Beispiel ein paar Anregungen und kannst sie für deine Zwecke anwenden:
BlitzMax: [AUSKLAPPEN] Graphics 800,600 Ich hoffe, die Bedeutung der Variablen erklärt sich von selbst - einfach ein bisschen 'rumspielen mit verschiedenen Werten. |
||
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist genau das, was ich gesucht habe.
Vielen Dank. MfG |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo nochmal,
ich hab noch ein kleines Problem und zwar möchte ich auf die TList in einer anderen Type zugreifen. Ich hab das mal so versucht: BlitzMax: [AUSKLAPPEN] Type TSpieler und wenn ich dann alle Karten abfrage mit: BlitzMax: [AUSKLAPPEN] For Local C:TCard = EachIn Spieler[i].CardList Dann haben alle Spieler die gleiche Karten, das kann ja nicht sein. Was ist an meinem Code falsch? Ich danke euch schonmal. Edit: Ich hab das jetzt gelöst. Ich habe die Liste nicht Global innerhalb von TSpieler Type definiert sondern mit Field und BlitzMax: [AUSKLAPPEN] TSpieler.CardList.AddLast(Self)
kann ja so nicht funktionieren, ich habe die Methode von TCard komplett entfernt und ich füge die Karten der Liste hinzu, dort wo auch der Spieler erstellt wird. z.B. so: BlitzMax: [AUSKLAPPEN] For Local j:Int=0 To Spieler[i].CardAnz-1 Edit2: Ich habe noch eine kleine Frage: Wie kann ich die hintere Type einträge ignorieren, wenn ich mit der Maus auf einen der Type eintrag bin? Wenn ich mit der Maus auf einen der Karte bin, dann werden die Karten, die sich hinten dran befinden, auch Markiert: ![]() und hier mal der Code: BlitzMax: [AUSKLAPPEN] Function draw_cards(i%, width%, height%, center_x%, center_y%, center_distance%, angle_step%) Die Collision Prüfe ich mit ImagesCollide2 und das funktioniert ja auch alles, nur werden die Karten, die sich hinten dran befinden, auch mit Markiert. Wie könnte man das am einfachsten umgehen? MfG |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Exit ?
Einfach von der ganz obersten Karte an Prüfen und wenn eine Übereinstimmung ist, die Schleife verlassen und die Ausgewählte Karte einfärben ![]() Lg |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke Dir. ![]() Genau das habe ich auch versucht gehabt, leider hat das immer die erste Karte Markiert und nicht die letzte Karte. Ich weiss nicht, ob man die For Each Schleife rückwärts durchlaufen lassen kann, deshalb habe ich das ein bisschen anders gelöst. Ich Markiere zuerst alle Karten, die unter der Maus liegen, danach zähle ich alle Markierte Karten und benutze eine weitere For Each Schleife, dann lasse ich einen zähler laufen, der nochmal durchgeht, wieviele Karten Markiert sind und lasse nur die letzte Karte dann Markiert. Eine bessere lösung fällt mir grad nicht ein, aber so funktioniert es erstmal. Ich danke dir für die Hilfe. MfG |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zu umständlich. Gehe bei deiner ForEach durch die komplette Liste und markiere immer die Karte die grade als aktiv gekennzeichnet ist. Wenn die Schleife durchlaufen ist ist die gespeicherte dann die zuletzt gefundene, also die welche Du suchst. | ||
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 |
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn er rückwärts durchgehen würde, wäre doch die erste Karte die meldet "Jo hier, der Mauszeiger ist über mir" die die angewählt werden soll, oder nicht?
Da sie ja über der "nächsten" Karte liegt. Rückwärts durchgehen kannst du über die Links der Liste. Wenn deine Karte sich dann entsprechend gemeldet hat, verlässt du einfach die Schleife mit Exit. Beispiel: BlitzMax: [AUSKLAPPEN] SuperStrict |
||
Blessed is the mind too small for doubt |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich danke euch.
So funktioniert es ja erstmal, Vielleicht werde ich es dann so versuchen zu ändern. MfG |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group