Entwickler-Ecke

Sonstiges (Delphi) - Roulette: Buttons ueber Bilder (Zahlen) legen


Bockscar - Fr 21.10.05 11:09
Titel: Roulette: Buttons ueber Bilder (Zahlen) legen
Hallo.
Ich bin dabei ein Roulettespiel zu programmieren und moechte folgendes umsetzen:

Man hat den Tisch (Da wo man normalerweise seine Jetons drauf legt). Hier soll man aber z.b auf 36 druecken und 36 wird als wette gespeichert ... (1 euro auf 36)

ich habe den tisch eben nur als ganzes und moechte wissen wie ich einzelne zahlen als "durchsichtige" knoepfe darstellen kann. Also die Grafik soll natuerlich die oberfaleche sein und klickbar sein.

Ich hoffe man versteht das und jemand kann mir helfen.


vielen dank!


Blackheart666 - Fr 21.10.05 11:20

Lege Einfach Label auf dein Image stell Transparent auf True dann kannst Du die Klickmethode vom Label Nutzen.


Gausi - Fr 21.10.05 11:20

Mir fallen auf Anhieb zwei Möglichkeiten ein:


Bockscar - Fr 21.10.05 11:29

danke, ich wberde als erstes die methode mit dem layer probieren!! danke danke!


DarkHunter - Fr 21.10.05 11:51

user profile iconGausi hat folgendes geschrieben:
Mir fallen auf Anhieb zwei Möglichkeiten ein:
  • Auf jedes Feld ein Label mit der entsprechenden Zahl setzen und im OnClick jedes Labels dei gewünschte Funktion setzen
  • Anhand der Mauskoordinaten die Zahl bestimmen, auf die geklickt wurde. Dazu das Feld in ein Raster aufteilen und dann eine verschachtelte Case-Anweisung:

    Delphi-Quelltext
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    case x of
      1..30:begin {erste Spalte}
        case y of
          1..30{erste Zeile}
             showmessage('1 Euro auf 1 gesetzt'); // ich weiss jetzt nicht was da für ne Zahl ist...
          31..60: showmessage('1 Euro auf 2 gesetzt');
          //...
        end;
      end;
      31..60begin {zweite Spalte}
        case y of
          1..30{erste Zeile}
             showmessage('1 Euro auf 12 gesetzt');
          31..60: showmessage('1 Euro auf 22 gesetzt');
          //...
        end;
      end;
    end;


Ich würde es auch mit diesem Raster machen, allerdings scheint mir eine verschachtelte Case-Abfrage sehr kompliziert.
Sowas lässt sich auch sehr gut mathematische berechnen, ich hatte das mal irgendwo. Ich such den Code nocheinmal raus.

EDIT:
Hier ist er:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure getposition;
var 
  curposx,curposy:intger; //Maus Position
  koordx,koordy:integer //Feld im Raster
  x,y:absolute position im Raster
begin
  curposx := mouse.CursorPos.X - form.left - label.left;
  curposy := mouse.CursorPos.Y -form.top - label.top;
  koordx := curposx div breite; 
  x := koordx * breite; 
  koordy := curposy div hoehe;
  y := koordy * hoehe;  
end;


Gausi - Fr 21.10.05 12:09

Stimmt, das kann man auch berechnen. Ich hatte nur meine Bildschirmtastatur im Kopf, und da habe ich das mit Case gemacht, weil die einzelnen Zeilen untereinander verschoben waren (wie auf einer Hardwaretastatur auch), und verschiedene Tasten verschieden groß waren. Da hatte ich dann kein Rechteck-Raster, sondern etwsa anderes, und da erschien mir der Weg mit Case einfacher.
Bei einem richtigen Raster wie hier sollte man den Weg übers Rechnen vorziehen.