18. maj 2003 - 23:14Der er
12 kommentarer og 1 løsning
Hjælp til 'Tankspil' i DelphiX
Hej!
Jeg er gået i gang med at lave et tankspil med DelphiX. Alle kender vist, den type spil, hvor 2 til 10 spillere har hver deres tank, og så skal indtaste den rette Angle og Power for at ramme deres modstandere. Jeg har fået mine tanks til at skyde, og de fungerer sådan set fint nok. Nu kommer mit problem, når jeg skal prøve at lave 'grunden' som tanks'ne står på... Hvem vil give mig et par hints/tutorials til hvordan det skal ordnes?
*Jeg går i seng nu, så jeg vil først kunne svare igen i morgen ;-)
nope... har faktisk ingen gode ideer til, hvordan det skal løses. Tro mig, jeg har tænkt en del over det. Jeg mangler bare nogen, som kan "give mig et skub videre"...
Hmm, ja du har ret det kan godt være lidt tricky. Den mest ligetil måde at gøre det på, som jeg lige kan finde på, er at gemme grunden som et array af integers (så det essentielt bare er et pindediagram med clientwidth-antal pinde, hvis du forstår). Det i sig selv er jo ikke specielt svært (måske når man skal "glatte" animationen ud), men det begynder at blive lidt værre når du skal beregne hvad, hvor og hvor meget jord der skal forsvinde ved nedslagene.
Nå du har beregnet det med nedslaget kan du så tjekke/beregne hvorvidt dine tanks/kanoner (forudsat de ikke blev ramt (og måske alligevel)) har noget at stå på og hvis ikke hvor langt de så skal falde. Dette kommer vel an på hvordan du har valgt at representere dine tanks, men hvis vi siger at de har en grundflade på 5 pixels er det bare at gennemløbe de 5-pinde (i diagrammet) og derefter lade tanken falde så den lander på den højeste.
Jeg har også tænkt på noget i den retning... Kender du noget til DelphiX? Og kunne det ikke tænkes der var en lidt smartere måde via DelphiX? Synes det virker næsten absurd at skulle sidde og lave det på denne måde...
Man kan sikkert lave et eller andet "smart" med DelphiX (og ja, jeg bruger det selv), men hvis du vil lave det "rigtigt" mener jeg at du på en eller andet måde skal behandle grunden/jorden på partikel-basis (læs pixel-basis). Hvis du tænker på successfulde spil som Worms og Lemmings (selvom Lemmings ikke er et tank/kanon-spil), så kan jeg ikke lige se hvordan det skulle kunne lade sig gøre på en smartere måde. Så vidt jeg husker er det vist noget lignende i "Scorched Earth" (bare uden partikel-eksplosioner). Hver gang der har været et nedslags i Scorched Earth "glatter" den bare jorden ude uden effekter.
Jeg ser lige om jeg kan komme på noget "smart" senere.
OK, hvis det er den eneste udvej, så må du gerne komme med et par hints til hvordan det skal løses... Skal man så lave en masse sprites på hver 1 pixel * 1 pixel og så bede SpriteEngine om at lave dem efter pindediagrammet?
Hvis vi snakker om 2D grafik skulle det vaere realativt let. I stedet for en masse fancy beregninger (der hurtig vil slaa din CPU ihjel), kan du bare lave en "usynlig" layer - (en slags alpha channel - om du vil det). Layeret skal bestaa af to farver. En farve (maaske sort) der repreasentere "grunden" og en farve (maaske hvid) der repraesentere himmel. Alle dine tanks skal hver have mindst et udgangs punkt. Ideen er saa at disse udgangspunkter (der selvfolgelig er laast til dine tanks) skal fortaelle dig om de befinder sig paa en sort eller hvid pixel. Hvis den er sort skal denne tank flyttes indtil den ender paa hvidt.
Det lyder som en fin ide, men kan du ikke komme lidt nærmere på, hvordan det skal gøres rent praktisk? Hvordan tegner man det på en DXDraw og hvordan skal man få skuddet til at 'eksplodere' noget af jorden væk osv... Er villig til at hæve point lidt, hvis det vil gøre udslaget.
esben_pape>> Hvis nu skuddet rammer midt på en lodret skråning (lidt modsigende måske :)), skal der så bare komme et hul eller vil du ha at jorden over skuddet skal falde sammen?
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.