Java problem
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.
- Idag Intel Arc får prestandalyft på 300 procent i Assassin's Creed: Unity 15
- Idag Sony läcker uppgifter i rättegång – så stort är Call of Duty 18
- Igår Nvidia: "Energieffektiva RTX 4060 sparar hundralappar" 39
- Igår MSI Geforce RTX 4060 Ventus 2X OC – bra prestanda vid 1080p men medioker kylare 67
- Igår Noctua släpper monteringsram för "deliddade" Ryzen 7000-processorer 15
- Hej, min fjärrkontroll till Google tv'n har pajat och kan inte synka kontrollen
- Bärbar dator för studier och enklare spel för fattig student - förslag i tråden.
- Köpråd för bärbar dator för 3D-arbete (Maya, Zbrush, Substance Designer, Houdini samt Unreal Engine)
- Köpråd: Laptop för spelande - stram budget
- Speldator 15-18k
- Föra över mini DV till datorn via Firewire DV - USB3
- Kommer flytta till stan och mitt wifi kommer säkert synas av hundratals människor varje dag. Vilken router ska jag köpa och hur ska den ställas in?8
- Lagringsdisk - SSD eller HDD 2023?4
- Hej, min fjärrkontroll till Google tv'n har pajat och kan inte synka kontrollen6
- Problem att ansluta till mysql via tjänst vid boot.2
- 4G router med simkort1
- Diablo IV – den stora tråden2709
- funderade på att köpa ett nytt system: amd eller intel?18
- Bilder på ditt senaste inköp (2023) [inga produktbilder]1013
- Youtube testar aggressiv taktik mot annonsblockerare92
- Säljes Herman Miller Aeron
- Säljes 2x Noctua NF-A14 Industrial PPC 2000rpm pwm chromax
- Säljes Switchar, RAM och vattenkylning
- Säljes Intel i5 9400f LGA1151-2
- Säljes Meta Quest 2 VR portabelt headset
- Säljes Komplett dator: Ryzen 7 3700x, GTX1080, 32GB DDR4, 1TB M.2 SSD + 1,5TB HDD, 750W PSU mm. Kan säljas med/utan GPU.
- Säljes Intel Core i5 13400F
- Säljes Gamingdator 4080 / 13700KF / 32GB DDR5
- Säljes I5 12500
- Säljes LG 27'' UltraGear 27GP950 4K Nano IPS 160 Hz HDMI 2.1
- Paypal vill ersätta lösenord med passkeys4
- Intel Arc får prestandalyft på 300 procent i Assassin's Creed: Unity15
- Youtube testar aggressiv taktik mot annonsblockerare92
- Sony läcker uppgifter i rättegång – så stort är Call of Duty18
- Nvidia: "Energieffektiva RTX 4060 sparar hundralappar"39
- MSI Geforce RTX 4060 Ventus 2X OC – bra prestanda vid 1080p men medioker kylare67
- Veckans fråga: Vilket operativsystem föredrar du?120
- Bilar med smarta inslag ger fler dumma fel78
- Noctua släpper monteringsram för "deliddade" Ryzen 7000-processorer15
- Nvidias nästa arkitektur för Geforce kommer år 202558
Externa nyheter
Spelnyheter från FZ
- Till slut – Football Manager-saves kommer kunna användas i nyare spel idag
- Quiz – Vad kan du om spöken? idag
- Dying Light 2-uppdatering i dag gör nätterna betydligt farligare idag
- Microsofts vd ser gärna att konsolexklusiviteter försvinner idag
- Bloober Team säger sig vara färdiga med psykologisk skräck idag