---
title: "Ett problem..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/68656-ett-problem"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Alpha II"
published: "2003-02-18T16:42:54.000Z"
updated: "2003-02-19T20:15:13.000Z"
replies: 9
views: 377
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/68656-ett-problem"
---

# Ett problem...

## #1 — Alpha II, 2003-02-18T16:42Z

Behöver ett sätt att hantera missiler i ett enkelt 2d spel.

Det ska gå att skapa hur många som helst.
Missilerna är en klass (CMissiles) och på något sätt som jag inte vet hur, vill jag kunna skapa en ny missil genom att bara skriva en enstaka rad kod.
Hur gör jag detta?!
Är det möjligt att använda en länkad lista? Eller hur ska jag göra det på enklaste och snabbaste sätt? De ska ju försvinna när de kolliderar sen också...

Permalänk: https://www.webforum.nu/p/68656

## #2 — Alpha II, 2003-02-18T17:34Z

Ingen som vet? Vill ha svar snabbt, det är så tråkigt att sitta o göra... ingenting :)

\--Ingen som vet hur jag ska hantera missilerna?--

Permalänk: https://www.webforum.nu/p/953644

## #3 — juventus1, 2003-02-18T17:39Z

En länkad lista borde gå bra eller en arraylist. Det är nog en smaksak vilken av de två du väljer. Båda är lika snabba när det gäller att lägga till nya missiler och båda är lika långsamma när de skall tas bort.

Permalänk: https://www.webforum.nu/p/953650

## #4 — Alpha II, 2003-02-18T18:07Z

Så när jag tar bort en måste jag skapa flytta ned alla tidigare misiler som finns kvar och sedan sätta en ny längd på arrayen?

Eller ska jag när man lägger till en ny missil gå igenom arrayen och när den hittar en tom plats sätter den en boolean till att den är aktiv?

Bör jag använda en dynamisk array som jag ändrar storlek på hela tiden eller en statisk med kanske... um 20-100 platerser för missiler, vet inte riktigt hur många man komemr att skjuta...

Permalänk: https://www.webforum.nu/p/953670

## #5 — juventus1, 2003-02-18T20:13Z

När jag tänker igen borde det vara bättre med en länkad lista. Då behöver man endast gå igenom objekten för att hitta det som skall tas bort och sedan ändra några pekare. Men i en array (jag hade tänkt mig en dynamisk) så måste man också flytta de element som kommer efter det borttagna och därför borde det ta längre tid. Så en länkad lista borde vara bra.

Permalänk: https://www.webforum.nu/p/953759

## #6 — Alpha II, 2003-02-18T21:30Z

Men en statisk array då? Borde inte dte vara snabbast? Eftersom missilerna har en viss levnadstid och det bara komemr vara ett ftal spelare borde man ju kunna förvara alla missiler i en array\[100\], elelr tänker jag fel? Och sedan går man igenom hela arrayen och letar efter tomma platser när en ny ska skapas? Eller blir det segare?

Permalänk: https://www.webforum.nu/p/953818

## #7 — PeW, 2003-02-19T09:26Z

> Och sedan går man igenom hela arrayen och letar efter tomma platser när en ny ska skapas? Eller blir det segare?

Ja, när du ska lägga till nya objekt. 

Jag röstar även jag för en länkad lista i det här fallet, eftersom du ville ha obegränsat med antal objekt så bör du även göra en dynamisk minnesallokering varje gång ett objekt skapas och varje gång det sparas i en lista. Tänk även på att se till att minnet frigörs på rätt sätt när du ska ta bort objekten. 

Å andra sidan brukar väl missiler förvaras nånstans? Då kan man ju sätta en maxgräns på den förvaringen (statisk array) och sen ha obegränsat med förvarings-paket (länkad lista med statiska arrayer). Å tredje sidan kanske det blir väldigt onödigt att hela tiden allokera en massa minne för missiler när man kanske egentligen endast skjuter en handfull åt gången. Kanske finns en annan approach på problemet än att spara alla missiler på en gång?

Permalänk: https://www.webforum.nu/p/956933

## #8 — Alpha II, 2003-02-19T10:21Z

Men skulle inte detta vara mer praktiskt? Det komemr ju aldrig att vara speciellt många missiler ändå.

```
typedef struct
{
	float	x;
	float	y;
	int	angle;
	int	life; // Så att den försvinner efter ett tag...
} Missile;

Missile	missiles[100];

// Skapa en ny
for(int i=0;i<99;i++)
{
	if (missiles[i].life <= 0)
	{
		missiles[i].life = 100;
		missilies[i].x = rymdfarja.x;
		missilies[i].x = rymdfarja.y;
		missilies[i].angle = rymdfarja.angle;

		break; // Visst avslutar detta loopen?
	}
}
```

Permalänk: https://www.webforum.nu/p/956986

## #9 — PeW, 2003-02-19T15:17Z

Visst. Men du skrev först att du ville ha obegränsat med missiler och detta förutsätter att loopen körs innan nästa missil används.  ;)

```
int i = 0;
do{
  if (missiles[i].life <= 0)
	{
		missiles[i].life = 100;
		missilies[i].x = rymdfarja.x;
		missilies[i].x = rymdfarja.y;
		missilies[i].angle = rymdfarja.angle;
                 }
        i++;
}while(missiles[i].life > 0 && i <99);
```

Så slipper du "break;"  ;)

**r**
korrigerad kod

Permalänk: https://www.webforum.nu/p/957207

## #10 — Alpha II, 2003-02-19T20:15Z

Ja men sen kom jag på att det bara ska vara 2 spelare (iaf från början, och jag tror kanappast att jag kommer lär amig nätverks programmering inom ett bra tag) och man ska bara kunna skjuta en missil var 3 sekund och missilerna ska försvinna ganska snabbt så det lär inte behöva finnas speciellt många :)

Permalänk: https://www.webforum.nu/p/957353

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/68656-ett-problem
