Avatar billede adflicto Nybegynder
26. juni 2007 - 23:56 Der er 8 kommentarer

2d bilspil, Collision detection

Hej

Jeg er igang med at lave et simpelt bil spil, som en applet i java.

Mit spørgsmål går på, hvordan man plejer at håndtere "collision detection" i et simpelt bilspil, hvor man guider en lille bil rundt på en bane. I mit tilfælde består spillet blot af en applet, hvori der er et bilbillede og et baggrundsbillede, dvs. selve banen.

Jeg mangler idéer til, hvordan spillet selv finder ud af, hvor bilen må køre. Hvor han stoppe brat op (kører ind i en kant f.eks.) eller hvor han bare kører langsomt. Det ville klart være nemmest, hvis man havde bygget banen ud af grafik fra java, men nu har man bare et baggrundsbillede at gå ud fra.
Jeg bliver vel nødt til at tjekke for farver eller noget.

Nogen forslag?
Avatar billede groop Nybegynder
27. juni 2007 - 00:20 #1
Jeg vil helt klart anbefale, at bruge koordinater. Når det er sagt, så kan du også have et billede med ruten i alle farver samt et i sort/hvid. Ruten kan du gøre sort mens det resterende gøres hvidt. Du viser brugeren ruten med farverne mens du i baggruden checker mod det sort/hvide.
Avatar billede adflicto Nybegynder
27. juni 2007 - 00:33 #2
okay, det lyder fornuftigt. Så lad os sige at jeg laver et baggrundsbillede i sort og hvid. Så har jeg selvfølgelig noget helt klart at forholde mig til, men derfra er der langt til en færdig applet. Hvordan håndhæver jeg så at bilen kun må køre på det sorte? Jeg er klar over, at det har noget med at tjekke på farven :), men nogen smarte måder at gøre det på i java?
Avatar billede groop Nybegynder
27. juni 2007 - 01:56 #3
Til at finde farven på en enkelt pixel i et billede kan du eventuelt benytte PixelGrabber. http://www.rgagnon.com/javadetails/java-0257.html.
Rektangel outline koordinater samt postion i forhold til bane bruges til, at finde de aktuelle pixels i banens sort/hvid billede. if pixelcolor == white continue else ....
Yderligere:
Du kunne starte med, at benytte en simpel rektangel til, at repræsentere bilen. Dernæst opbygge en bane som de gør her:
http://www.cokeandcode.com/collisiontilemaps.
Andre links:
Spaceinvaders: http://www.cokeandcode.com/node/6 <- Generel spil logik.
http://developers.sun.com/mobility/midp/articles/game/ <- Godt nok til midp.
Held og lykke.
Avatar billede a1a1 Novice
27. juni 2007 - 02:05 #4
ikke meget hjælp men, minder mig om et meget godt spil (excelent gameplay, maåske lidt gammelt)
http://www.lemonamiga.com/?mainurl=http%3A//www.lemonamiga.com/games/details.php%3Fid%3D1018
Avatar billede a1a1 Novice
27. juni 2007 - 02:09 #5
man kunne spille 2 på EN gang (på hver sin side af tastaturet) ;)))
Avatar billede adflicto Nybegynder
27. juni 2007 - 12:16 #6
tak for det groop. Nu fatter jeg pludselig også den måde de hiver en specifik farve ud på. and'er bitwise og rightshifter.. nice one.
Avatar billede groop Nybegynder
27. juni 2007 - 14:53 #7
Hvis du har brug for alpha/opacity er det:
(c & 0xff000000) >> 24 // format: 0xAARRGGBB
Til dem der ikke ved hvad and(&), right shift(>>) og andet er, er her et par artikler:
http://www.gamedev.net/reference/articles/article1563.asp
http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=/com.ibm.vacpp6m.doc/language/ref/clrc05binops.htm (klik i træet).
http://www.developer.com/java/other/article.php/3403921 .
Glad for, at det var til nytte. Smid selv et svar og snup du selv dine point. :)
Held og lykke med spillet.
Avatar billede adflicto Nybegynder
15. oktober 2008 - 15:32 #8
haps - dem tar' jeg
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