Avatar billede lithos Nybegynder
05. maj 2003 - 23:38 Der er 5 kommentarer og
1 løsning

Canvas prob...

Jeg er igang med et lille spil og har stødt ind i et problem... det er en slags rum strategi ting... jeg har oprettet en klasse til mine "stjerner" med navn osv.

jeg maler dem så på canvas.. problemet ligger i at når jeg trykker på på canvas'et på en af de stjerner jeg har malet ønsker jeg at få tilgang til den stjerne jeg trykker på.. dvs. at stjernen har en position på canvas'et og jeg kan også få det til at virke hvis jeg bruger en grid inddeling, altså hvor jeg deler canvas'et op i felter af f.eks 20 (X div 20) fordi Bitmap's er 20x20... men jeg ønsker at kunne vælge dem når de er i en tilfældig position ala 230x123 f.eks.. men jeg skal ramme det punkt HELT præcist for at få det til at virke... kan man lave en slags vælge firkant inden for 4 punkter????
Avatar billede abpdk Nybegynder
06. maj 2003 - 00:59 #1
Du kan jo løbe dine stjerner igennem og spørge på:
(musX > stjerneX-4) and (musX < stjerneX+4) and (musY > stjerneY-4) and (musY < stjerneY+4)
Det er en rimelig simpel løsning, men hvis der er alt for mange stjerner (dvs. >1000 eller sådan noget) er det måske ikke den hastigheds mæssige mest optimale.
Avatar billede abpdk Nybegynder
06. maj 2003 - 01:07 #2
Der er selvfølgelig også
if sqrt(sqr(musX-stjerneX)+sqr(musY-stjerneY)) < radius then ...
hvis du hellere vil ha' den runde.
Avatar billede zerohero Nybegynder
06. maj 2003 - 11:39 #3
Hvis stjenerne har forskellige farver (Rod, Gron, Gul, Blaa osv.) og det univers (baggrund er helt sort) saa kan du jo bare skrive folgende i den OnMouseDown property:

if Canvas.Pixels[X,Y] = clRed then
ShowMessage('Welcome to Mars');
if Canvas.Pixels[X,Y] = clBlue then
ShowMessage('Welcome to Earth');

Held og Lykke
ZeroHero
Avatar billede lithos Nybegynder
06. maj 2003 - 15:56 #4
Tjaaa... altså mine stjerner er i et array... dvs.:

type
TStar = class(TObject)
public
name: String;
property name: String read FStar write FStar;
privat
FStar: String;
end;

Stars = array[0..400,0..400] of TStar
Avatar billede lithos Nybegynder
06. maj 2003 - 15:59 #5
Desuden får jeg en exception error hvis valgte ikke forekommer inden for de punkter....
Avatar billede lithos Nybegynder
06. maj 2003 - 16:04 #6
ups...

type
TStar = class(TObject)
public
FStar: String;
FPic: TBitmap;
property name: String read FStar write FStar;
privat
end;

Stars = array[0..400,0..400] of TStar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester