Permalänk

Super! Då vet jag hur jag ska lägga upp det

Tack som bara den!

Permalänk

Hej igen!

Nu har jag kommit en bit. Jag använder MVC på karaktären och låter denne själv uppdatera sin ikon samt sin position och rita ut sig.

Jag har börjat med bakrundsarbetet och är lite fundersam om hur jag skall gå till väga med kollisionshanteringen.

Antag att vi har en helgrön bakgrund. Antag att jag vill lägga en sten mitt på den bilden, och karaktären skall alltså hindras från att gå på den.

Är det då bäst att bilden redan innehåller stenen dvs att det är en bild med grön färg och en sten mitt i. Eller är det bättre att stenen är en egen bild som ritas på den gröna bilde?

Om stenen är en egen bild kommer programet få SJUKT många bilder att hålla reda på vid körning. Nu har jag en enda stor bakgrundbild med alla träd,stenar, (hinder over all) inritat när jag hämtar bilden.

Sedan har jag en klass Background som har en lista med positioner som beskriver var på bilden alla "hinder" finns och hur stora de är. typ LinkedList<Hinder>. Varpå Hinder är en klass som innehåller x1,x2,y1,y2. Alltså beskriver rektanglar av olika storlekar.

I Game kollar jag sedan om karaktären krockar med något utav hindrena.

Är det ett klumpigt tillvägagångssätt att endast ha en fetingbild och sedan manuellt i koden markera ut alla xy-positioner för alla hinder?

Såhär ser Background ut

import java.awt.Graphics; import java.util.LinkedList; import javax.swing.ImageIcon; public class Background { int x,y; ImageIcon icon,icon2; LinkedList<Obstacle> obstacles; Background() { this.x = -680; this.y = 0; obstacles = new LinkedList<Obstacle>(); obstacles.add(new Obstacle(x+839, y+359, x+984, y+576)); obstacles.add(new Obstacle(x+673, y+434, x+766, y+527)); obstacles.add(new Obstacle(x+1127, y+359, x+1279, y+576)); obstacles.add(new Obstacle(x+671, y+576, x+717, y+1056)); obstacles.add(new Obstacle(x+717, y+673, x+1030, y+720)); obstacles.add(new Obstacle(x+960, y+628, x+1031, y+720)); icon = new ImageIcon("pic/map.png"); icon2 = new ImageIcon("pic/map2.png"); } public void setY(int y) { this.y = y; } public void setX(int x) { this.x = x; } public int getY() { return this.y; } public int getX() { return this.x; } public ImageIcon getIcon() { return this.icon; } public ImageIcon getIcon2() { return this.icon2; } public LinkedList<Obstacle> getObstacles() { return this.obstacles; } public void draw(Graphics g) { g.drawImage(icon.getImage(), x, y, null); } }

och såhär ser mina hinder ut

public class Obstacle { int x,y,x2,y2; Obstacle(int x, int y, int x2, int y2) { this.x = x; this.y = y; this.x2 = x2; this.y2 = y2; } public int getX() { return this.x; } public int getY() { return this.y; } public int getX2() { return this.x2; } public int getY2() { return this.y2; } public void setX(int x) { this.x = x; } public void setX2(int x2) { this.x2 = x2; } public void setY(int y) { this.y = y; } public void setY2(int y2) { this.y2 = y2; } }

icon är den stora bakgrunden och icon2 är bara lite småkrimskrams som skall kunna målas ovanpå karaktären. Men icon innehåller en fetingbild på kanske 3000x3000 pixlar. denna scrollas sedan när karaktären rör sig. "Kameran följer karaktären" så att säga

Ett annat alternativ är ju att ha en basbakgrund med kanske träd, stängsel etcetc. Lägga till varje hinder manuellt från den bakgrunden, men även ha "lösa" föremål i form av egna bilder. Tex en Kista som kan öppnas, eller en buske som kan plockas upp, en sten som kanm plockas upp etc.