Problem mit verdeckten Sprites

Anfängerfragen zum Programmieren mit PureBasic.
tina
Beiträge: 8
Registriert: 29.03.2005 01:47

Beitrag von tina »

...und die momentan bewegte karte stellst du immer als letzte dar
-----------------------------------------------------------------


Tja, so ähnlich dachte ich es mir auch.

Grob gesagt kann man also sagen:

Angeklickte Karte soll das letzte Sprite sein.

Statt:

DisplayTransparentSprite(1,x,y)

setze ich eine Variable z.B. (i) statt einen statischen Wert ein:

DisplayTransparentSprite(i,x,y)

so, daß das angeklickte Sprite im Programm immer das letzte darstellt!?

Ist dieser dann permanente Wechsel innerhalb der Haupschtschleife bei PureBasic eigentlich möglich?

Denn, solange die Karten sichtbar auf dem Screen sind, und (i)= 80 (Ist aber nicht das letzte Sprite) muß ich (i), bei "Klick", ja so

verändern, das es das letzte Sprite wird!

Also, z.b.: Karte"(i)"=Wert 80 muß Karte (i)=Wert 100 gesetzt werden, wenn ich 100 Karten auf dem Screen habe!?

Nur, dann ändert sich ja der eigentliche "WERT" der Karte auch, dann wird aus pic-ass vielleicht eine kreuz-neun, weil ja (80) den

eigentlichen Kartenwert von z.B. pic-ass nun mal hat!

Es müssen ja ständig die Karten vertauscht und verschoben werden!

Nun ja, man kann ja den angeklickten Wert (Karte) ja zwischenspeichern,
und wenn die Karte wieder liegt, den eigentlich alten Wert wieder
zuordnen! Nur dann müßte man auch ein Sprite erstellen, was mit
dem eigentlichen Spiel nichts zu tun haben darf z.B. Sprite 101 was keine
Werte hat und unsichtbar ist.

z.B.: Angeklicktes Sprite (80) werde zu Sprite 101 (das letzte Sprite), kopiere die
Werte von 80 in 101 (pic-ass) Wenn Karte wieder ruht und regelgerecht liegt, werde wieder zu Sprite 80 und
übernehme die Werte aus Sprite 101. Sprite 101 lösche deine jetzigen Werte, und
warte auf neue Werte!???

Aber da hinkt es auch: Wenn die alten Werte wieder zurückkopiert werden, kann es nicht passieren,
daß 80, nicht AUF den Karten liegt, sondern DARUNTER, was ja nicht passieren darf!!! Hat ja wieder
die alten Werte und dementsprechend nicht die Priorität, die andere(n) Karte(n) teilweise zu verdecken!???

Ja ja, ich sehe Euch schon lachend auf die Schenkel klatschen und Euch fragen hören,
ob das Mädel 'ne Klatsche hat ;-)

Vielen Dank für Eure vorherigen Antworten :-) und ein wunderschönes Wochenende euch allen da draußen !!!

Gruß
Tina

Ps.: Da hat man schon einen scheiß Informatiker als Vater, aber, der will mich
unbedingt in C++ reinquetschen. Hat mir Visual C++ v. Micdoof installiert, mir fünf
fette Bücher auf'n Schreibtisch geknallt und gesagt nu mach ma!!! :-(
Tja, halt jemand, der einen am liebsten in eine für sich "passende Form" gießen
will!!!

Tschö!
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

schau dir mal borland c builder an (nicht den c builder x, der ist dreck). gibt es relativ billig auf ebay. der ist *viel* besser als der msvc.
dein vater ist sich sicherlich nur der tatsache bewußt, dass dich purebasic beruflich nicht weiterbringen wird.
tina
Beiträge: 8
Registriert: 29.03.2005 01:47

Beitrag von tina »

Mit "Scheiß", meinte ich sicherlich nicht meinen Vater, sondern seinen Berufsstand und Einstellung mir gegenüber! Er möchte mich in eine Richtung "schubsen" (was ja viele Eltern mit ihren Kindern versuchen), aber wohin soll das ausarten?!

Kommentar seinerseits: " Wer c++ beherrscht, versteht auch den Syntax aller anderen!" sprich: Friß oder stirb!

Abgesehen davon, wie sieht es mit meinen vorherigen Fragen aus!?

Gruß
Tina :roll:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@tina

jetzt verstehe ich das problem besser....

du hast also soundsoviel karten (32/52/104?), und jeder karte ein sprite zugeordnet.
das ist ja noch logisch.

jetzt erstellst du aber anscheinend ein array von karten (structure?),
das die koordinaten enthält, und nach kartennummer sortiert ist.

und dann hast du natürlich das problem, das die zeichen-reihenfolge durcheinander kommt,
weil du zwangsweise in der reihenfolge des ursprungsstapels zeichnest.

vielleicht solltest du deine daten anders organisieren.

idee:
mach für jeden der ableg-stapel ein array (oder eine liste)
darin steht die kartennummer, so wie sie übernanderliegen,
auch im verdeckten (nimm-)stapel können sie dann so angeordnet sein,
nur für die verarbeitung, die müssen dann ja nicht gezeichnet werden.

wenn du jetzt eine karte aufnimmst,
übertragst du die obere kartennummer von verdeckten stapel in deine "bewegungskarte",
die obere des stapels löscht du.

wenn du die karte wieder ablegst (auf einen offenen stapel) übertragst du die kartennummer
von "bewegungskarte" auf die oberste leere zelle des stapels, und löscht die "bewegungskarte".

zeichnen tust du dann alle stapel von unten nach oben durch und als letztes die bewegungskarte.

nur für die bewegungskarte brauchst du die koordinaten,
die koordinaten der karten auf den stapeln lassen sich nach der position auf dem stapel berechnen.

ich erklärs auch gern nochmal ausführlicher ;)

PS: wie groß sind deine kartensprites, wieviele hast du, wie groß ist dein screen ?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
tina
Beiträge: 8
Registriert: 29.03.2005 01:47

Beitrag von tina »

Spritegröße: 100x142, Anzahl: 104 inclusive Stapel, Screen: 800x600
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

mach mal folgende kleine demo in dein prog,
hinter das laden der sprites.
(ich geh mal einfach davon aus, dass du in die spritenummern 0-103 lädst)

Code: Alles auswählen

Dim Card(15)

Repeat

    For n=0 to 15
        Card(n) = Random(103)
    Next

    ClearScreen(32,16,64)

    For n=0 to 15
        DisplaySprite( Card(n),  20+40*n, 100)
    Next

    FlipBuffers()

    Repeat
        ExamineKeyboard()
    Until Keyboardpushed(#PB_Key_All)

Until KeyboardPushed(#PB_Key_Escape)
End
hiermit werden einfach mal zufällige Kartenreihen angezeigt.
jede Karte kann auch mehrfach angezeigt werden.

das prinzip soll dir verdeutlichen,
dass die Spritenummer nur eine zuordnungnummer einer grafik ist,
die verarbeitung deiner Daten sollte davon unabhängig sein.

so wie ich hier ein array Card() verwende, so meinte ich das mit den
Arrays für die Reihen und den nehme-stapel in meinem letzten post...

ich hoffe, du kannst mit dem ganzen was anfangen.... bitte um echo ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

hallo tina?

hats was geholfen?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
tina
Beiträge: 8
Registriert: 29.03.2005 01:47

Beitrag von tina »

vielen dank,

habe mir am 05 den linken Arm gebrochen, wurde heute entlassen.
wenn die blöden schmerzen nachlassen werde ich mich dransetzen, sieht aber gut aus.

nochmals vielen dank, wenn ich weiter bin, oder probs auftreten, melde ich mich.

viele grüße aus bad harzburg

tina
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

oha... dann wünsche ich dir Gute Besserung.

und tipp' schön langsam, schone deine kaputte Hand. ;)

und melde dich ruhig auch bei kleinen Fragen, ich helfe gern.

Viele Grüße aus 'Hessisch Sibirien'

Kaeru
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten